处置Linux灵活库不兼容疑问-让软件支持多个发行版的3种方法 (处置流程)
从开发者面对的灵活库,对发行版兼容性差的缺陷和痛点登程,本文梳理疑问、讨论并分享3种处置思绪。
Linux系统如何知道哪些门路下有灵活链接库可供链接加载?可借助ldconfig缓存的信息。
ldconfig是一个工具程序,用于降级灵活链接器的缓存。灵活链接器在加载灵活库时,会先查找缓存,假设缓存中曾经存在对应的灵活库的记载,则间接经常使用缓存中的信息,否则再依据环境变量LD_LIBRARY_PATH从对应的目录内找灵活库文件。
那么ldconfig的缓存,终究存储在哪里?在内存吗?还是在文件系统?
ldconfg对灵活库门路信息的缓存,存储在哪里?
可以经过命令查问以后系统已缓存了哪些灵活库:
1.命令ldconfig-p查问以后系统已缓存的灵活库
以下经过命令ldconfig-p查问以后系统已缓存的灵活库,蕴含库文件称号、版本信息、体系结构、库文件所在门路。以下查问结果仅展现罕用的灵活库,比如libstdc++,libclient等灵活库,
user@linuxlibs:~$ldconfig-p785libsfoundincache`/etc/ld.so.cache'……#std-c++灵活库libstdc++.so.6(libc6,x86-64)=>/lib/x86_64-linux-gnu/libstdc++.so.6libssl3.so(libc6,x86-64)=>/lib/x86_64-linux-gnu/libssl3.solibssl.so.3(libc6,x86-64)=>/lib/x86_64-linux-gnu/libssl.so.3libssl.so(libc6,x86-64)=>/lib/x86_64-linux-gnu/libssl.solibssh.so.4(libc6,x86-64)=>/lib/x86_64-linux-gnu/libssh.so.4……#/target=_blankclass=infotextkey>Python外围灵活库libpython3.10.so.1.0(libc6,x86-64)=>/lib/x86_64-linux-gnu/libpython3.10.so.1.0……#线程相关的灵活库libpthread.so.0(libc6,x86-64,OSABI:Linux3.2.0)=>/lib/x86_64-linux-gnu/libpthread.so.0……libodbc.so.2(libc6,x86-64)=>/lib/x86_64-linux-gnu/libodbc.so.2libodbc.so(libc6,x86-64)=>/lib/x86_64-linux-gnu/libodbc.so……#mysql客户端灵活库libmysqlclient.so.21(libc6,x86-64)=>/lib/x86_64-linux-gnu/libmysqlclient.so.21libmysqlclient.so(libc6,x86-64)=>/lib/x86_64-linux-gnu/libmysqlclient.so……#保养链接信息的灵活库ld-linux-x86-64.so.2(libc6,x86-64)=>/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2Cachegeneratedby:ldconfig(UbuntuGLIBC2.35-0ubuntu3.4)stablereleaseversion2.35
2.引见一个大少数可口头文件都会链接的灵活库ld-linux-x86-64.so.2
上方最后的/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2是Linux系统的一部分。这个库关键用于加载和运转其余灵活链接库。
当一个程序须要经常使用其余灵活链接库中的函数时,它会经过调用ld-linux-x86-64.so.2来加载所需的灵活链接库,并解析其中的符号(函数、变量等)。这样,程序就可以在运转时灵活地经常使用其余库中的配置,而不须要在编译时将这些库静态链接到程序中。
3.ldconfig的缓存文件,在这里
咱们留意到输入信息第一行为785libsfoundincache/etc/ld.so.cache(在缓存文件中找到785个库文件记载),说明/etc/ld.so.cache是ldconfig搜查灵活库时依据的缓存文件,该缓存文件记载了785个灵活库文件的信息,每条信息记载了key=>value的这样的键值对方式,例如libmysqlclient.so.21(libc6,x86-64)=>/lib/x86_64-linux-gnu/libmysqlclient.so.21。用ls-lht命令检查该缓存文件的属性:
user@linuxlibs:~$ls-lht/etc/ld.so.cache-rw-r--r--1rootroot48KDec1110:45/etc/ld.so.cacheuser@linuxlibs:~$file/etc/ld.so.cache/etc/ld.so.cache:>#可经过dpkg-L查问软件包libstdc++6装置后新增了哪些文件:user@linuxlibs:~$dpkg-Llibstdc++6/./usr/usr/lib/usr/lib/x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30/usr/lib/x86_64-linux-gnu/libstdc++.so.6/usr/share/doc/libstdc++6……略
装置后,准许存在多个不同版本的libstdc++灵活库包,但系统启用的只是其中一个:
user@linuxlibs:~$ls-l/usr/lib/x86_64-linux-gnu/libstdc++.so.6……/usr/lib/x86_64-linux-gnu/libstdc++.so.6->libstdc++.so.6.0.30
咱们看到这里的libstc++灵活库版本号是6.0.30。但千万不要误认为这是Linux驳回的C++规范库的代码版本号。灵活库版本号6.0.30示意该灵活库的版本信息。版本号理论由三个部分组成,区分示意主版本号、次版本号和补丁版本号。
灵活库的版本号理论用于标识软件或库的不同版本,以便用户和系统能够识别和治理不同版本的软件或库。在经常使用灵活库时,程序会依据须要去加载相应版本的灵活库。
灵活库的版本号确实定,理论是由库的开发者或保养者依据库的降级和颁布状况调配的。因此,即使库的代码启动了严重降级,版本号也或者只启动了庞大的变动。所以库的版本号并不必定与库的代码版本间接相关;即使同一个vim软件,在不同的Linux发行版有不同的打包保养人,只管都从软件官网取得同一源码版本号的vim的代码,但不同Linux发行版的软件打包保养人依据自己发行版的状况选择编译后打包的库文件的版本。
当然,也有些软件驳回两个版本号相等的方式颁布软件版本和代码,比如Ubuntu的保养者将OpenGL名目标灵活库版本与代码版本坚持分歧,灵活库版本前面以-数字示意该版本代码的第几次正式打包,这个数字每次正式打包前都要+1,如图中的2.2.0-4为Ubuntu22.04系统的libglew2.2软件包的2.2.0版本的第4次打包入库。
只管这个版本教训了4次打包颁布,但libglew-2.2.0的4次生成的软件包,在装置后,门路中的灵活库的文件名仍坚持.so.2.2.0开头。
这是由于4次打包时期,库代码接口没变,人造不应该修正X.Y.Z中的任何一个数字。免得破坏/usr/lib/x86_64-linux-gnu/libGLEW.so->libGLEW.so.2.2.0这种libGLEW.so软链接对实践灵活库文件libGLEW.so.2.2.0的链接成果:
开发者可以从哪里查问,灵活库文件的版本号与代码版本号的对应相关?
假设开发依赖了OpenGL(v1,v2,v3都有,libGLEW、libGLut、libGL、libegl-mesa0等称号单一)这种带有较多版本历史包袱的开发库,有时必定确定系统已装置的OpenGL库的版本号跟开发要求的库的代码版本号的能否婚配,能力确保代码调用的函数跟实践运转环境的库的版天性兼容。
那么如何查问呢?这个疑问没有为惟一答案,软件的颁布方式和保养方式太多了。但那些干流的Linux发行版的软件源装置的软件包往往驳回了近似的战略,繁难了用户查问协助信息。假设你的Linux是Ubuntu、,那么装置后可以间接从命令中取得大部分信息,包括灵活库版本说明:
(1)Ubuntu经常使用命令$aptshowlibglew2.2查问软件协助信息
(2)Centos经常使用命令$yuminfoglew-devel查问软件协助信息
[root@device78969~]#yuminfoglew-develLoadedplugins:fastestmirror,ovlLoadingmirrorspeedsfromcachedhostfile*base:mirrors.ustc.edu.cn*extras:mirrors.aliyun.com*updates:mirrors.163.comAvlablePackagesName:glew-develArch:i686Version:1.10.0Release:5.el7Size:172kRepo:base/7/x86_64Summary:DevelopmentfilesforglewURL:
最后,分享3个思绪,处置运转时灵活库不兼容疑问
这是很多开发者颁布软件包时最头痛的,系统自带的灵活库版本,与软件运转所要求的灵活库不兼容,间接影响了软件在Linux以后系统的反常配置。
评论区有网友指出,灵活库最大的弊病是跨Linux发行版部署的时刻,常由于依赖的灵活库版本在不同Linux上实践装置的是不同版本,两个版本的灵活库未坚持向低版本兼容,造成主程序找不到适宜的依赖库版本而不可运转。
上方引见针对这个疑问的3种解法(实践实质上是2种:主动、主动)
思绪1:由shell脚本协助载入适宜的灵活库:
![让软件支持多个发行版的3种方法](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
经过部分环境变量设置LD_LIBRARY_PATH和PRE_LOAD,让软件优先经常使用受支持版本的灵活库。
LD_PRELOAD环境变量用于指定在加载灵活链接库时优先加载的库文件。经过设置LD_PRELOAD环境变量,你可以在程序加载灵活链接库之前加载你自己的库文件,从而成功对程序行为的修正或调试。
想在部分失效LD_PRELOAD环境变量,可以经常使用以下内容写到一个statup.sh脚本内:
#!/usr/bin/bashexportLD_PRELOAD=/path/to/your/library./my_dir/my_programe
或:
#!/usr/bin/bashLD_PRELOAD=/path/to/your/library./my_dir/my_programe
其中,/path/to/your/library是你要加载的库文件的门路,最好是以后可口头文件所在目录下的灵活库文件,以繁难治理;./my_dir/my_programe为你要运转的可口头文件。
LD_PRELOAD环境变量的经常使用须要审慎,由于它或者会影响程序的反常运转,所以只倡导在shell脚本外部经常使用,经过脚本运转后只要你的my_program受这个环境变量加载的灵活库的影响:而且会优先加载你指定的灵活库而不加载其余同名的灵活库,就防止了与系统自带灵活库的抵触。
这种设置环境脚本的思绪,在和Pycharm的装置方式和启动方式中被驳回。
!!!提示:
在经常使用LD_PRELOAD环境变量启动调试或修正程序行为时,倡导在测试环境中启动,并确保对或者的影响有充沛的了解,免得影响系统反常运转。
思绪2:代码编程成功本地主动加载灵活库文件,区别于思绪1的主动加载方式:
上方是一段伪代码,展示了由C代码控制,在运转时才加载灵活库文件到进程中。一个好处是提前了加载,而且由代码担任检测该灵活库能否提供了所需配置,若未提供,则卸载灵活库,再去加载其余灵活库:
#include<dll_function_headers.h>//定义加载灵活库的函数void*load_library(constchar*library_path,constchar*symbol_name){//关上灵活库void*handle=dlopen(library_path,RTLD_LAZY);if(handle==NULL){printf("dlopen()failed:%sn",dlerror());returnNULL;}//查找符号void*symbol_address=dlsym(handle,symbol_name);if(symbol_address==NULL){printf("dlsym()failed:%sn",dlerror());dlclose(handle);returnNULL;}//前往符号地址returnsymbol_address;}//定义经常使用灵活库符号的函数intuse_symbol(void*symbol_address){//定义符号的函数指针类型typedefint(*symbol_func_t)(void);symbol_func_tsymbol_func=(symbol_func_t)symbol_address;//调用符号对应的函数intresult=symbol_func();returnresult;}intmain(){//假定灵活库门路为/path/to/library.so,符号称号为symbolconstchar*library_path="/path/to/library.so";constchar*symbol_name="symbol";//加载灵活库void*symbol_address=load_library(library_path,symbol_name);if(symbol_address==NULL){printf("加载灵活库失败n");return1;}//经常使用符号intresult=use_symbol(symbol_address);if(result!=0){printf("符号调用失败n");return1;}//封锁灵活库dlclose(handle);return0;}
但这种方式没有处置一切本地灵活库都不可支持以后Linux系统的不凡场景。
思绪3:代码编程成功从网络主动加载灵活库文件,区别于思绪2的方式:
由于装备了后盾服务,且对各种须要兼容的Linux系统做了测试,预备了婚配的灵活库下载经常使用,所以软件装置包可以很小。这种方式其实也是很多软件驳回的软件自身新版本的降级机制。
缺陷是须要网络,开发阶段须要做多种Linux系统的灵活库兼容性测试,在服务端须要保养婚配的灵活库文件与信息。
适宜于到达必定经常使用规模的软件驳回。
linux各发行版本的问题?redhat、centos、ubunt……
1.都说redhat是linux的代名词,也就是说redhat的linux被大多数人认可。
可是.5 与 redhat linux 9.0 还有redhat fedora core 三者之间的具体关联和区别是什么? centos又是从哪冒出来的,我们公司用的就是centos,这个好吗,好在哪里? redhat成名的原因:历史悠久,1993年就开始做linux;公司运营,提供完整的解决方案,更专业,而不像debian是社区形式的;独创rpm包,使linux安装软件变得非常简单,免去编译的麻烦。
redhat在发行的9.03版之后,就不再延续以前的开发代号,而是以命名(简称rhel)即redhat企业版,现在已经开发到5,rhel好像是从3开始,需要客户购买license,即想获得系统的后续更新与服务是需要付费的(可以免费更新60天,而且如果不想享受更新,系统也是可以免费使用的。
),而其个人桌面免费版交给redhat社区在做,这个社区是可以获得redhat公司支持的,这个社区发布的版本就是fedora(直译也是一种男士帽子),一年两个版本,现在已经发行到10,fedora一直是rhel的一个实验场,每个版本所采用的软件,内核与库版本几乎都是最新的,因而配置起来有些困难,不过基于redhat的基础,使用fedora的人仍然占很大的比例。
centos是将rhel再次编译,去掉redhat标志,并有社区发布的linux版本,所以,centos与rhel几乎是没有区别的,主要的区别就是不用付费即可使用,从rhel的角度来说,centos是非常适合企业使用的。
2.据我所知,redhat是linux的发行厂商,除此之外还有ubuntu,debian,suse,redflag等,既然linux是免费的,为什么会有这么多公司专门做linux的发行版本呢,不赚钱为什么还要做呢?而且我觉得他们肯定能从中获取利益的,但我不知道这其中的猫腻。
明白的朋友给我多讲讲这个。
如果发行版本是可以盈利的,那linux内核的作者linus能得到什么好处呢? linux内核的每次升级都是linus这个最初的作者一直在搞的吗?每次升级花费的人力物力,对这个作者有何经纪上的回报吗? linux盈利方式:linux个人桌面版是可以免费获得并使用的,但像redhat企业版,redflag红旗企业版,是需要购买服务的,企业版主要针对的是银行,政府,或者大型企业这种对于稳定性和安全行要求较高的行业,比起昂贵的unix,linux还是有销路的。
个人桌面版也并不是无利可图的,至少很多linux社区不会赔钱,因为为社区工作的人都是分布在世界各地的,开发linux也是利用业余时间来做的,不为了获得报酬,只为了一份执着而工作,社区的linux版本发布后,用户可以购买linux安装光盘,虽然光盘很便宜(比起微软的系统),但由于成本几乎为0,所以还是有盈余的。
再有,现在市面上有很多预装ubuntu的笔记本销售,比如dell,那么戴尔肯定要付给ubuntu费用的,当然,这个费用要比预装vista低得多。
现在linux的内核应该是GNU在做,而不是linus。
3.上面说了这么多发行版本的linux,请问哪几种比较好,好在哪里?是不是根据linux的用途不同,选择linux的版本也应有所不同呢?麻烦具体说说各个版本的长处与缺点。
redhat企业版(rhel),适合企业使用,出色的稳定性和兼容性表现在每个版本都使用了比较成熟的库与内核,并且对一些大型的EDA软件都预先进行了测试安装,比如cadence,所以比较适合做服务器和工作站,但不适合当个人桌面,因为不购买license,就不能享受到丰富的更新,而且由于内核与库都比较保守,有点跟不上linux的发展速度,以至于很多娱乐软件安装起来非常困难。
centos与rhel类似。
fedora,前面已经说了,这个版本每次发行都比较冒进,以至于很多驱动程序都不能很好的配置,但最新的fedora10还是很保守和稳定的。
yu软件源基于rpm包管理,安装软件很方便。
ubuntu,基于debian,桌面环境以gnome为主,是目前最流行的linux个人桌面,它的优点是配置起来非常简单,安装完系统之后,只要硬件不是太新,基本不用进行其他配置,硬件都可以识别并安装好驱动。
而且其apt更新源服务器中的软件非常丰富,只要打一条命令,就可以自动从网络下载安装所需软件。
ubuntu安装方便,甚至于可以使用wubi将linux安装在windows分区。
ubuntu还有很多衍生版本,包括Kubuntu(桌面采用KDE,较为华丽),xubuntu(采用xfce,要求配置较低),eubuntu(面向儿童和教育),用户可以根据需求,偏好,和硬件配置进行选择。
suse,被誉为最漂亮的linux发行版本,当然,其本质和其他版本都是一样的,只是在窗口美工上开发者下了一定功夫,而且获得华丽的同时当然也需要付出更高的系统资源占用。
其他的linux版本通过一些改造,完全是可以实现suse的效果的。
redflag,中科院开发的linux版本,主要面向政府用户,其个人桌面版免费,这个版本的美工上与windows非常接近,是使用者的入门难度降低,但实际上桌面也是基于KDE的,很平常。
puppy,一个非常小巧的linux版本,安装镜像90多M,却包括了图形桌面,浏览器,办公等常用的软件,系统运行时都存在与内存中,据说安装在U盘中的puppy,在系统启动后,可以将U盘拿掉,系统依然可以运行。
4.我对linux的简单了解,各个发行版本使用的linux内核都是同一个。
只不过可能随着各版本的发行时间不同,采用的内核版本会不同。
不知道理解的对吗? linux的内核目前还在飞速的发展,现在常见的是2.X版本,X为奇数,为不稳定版,x为偶数为稳定版,比如rhel采用的2.4和目前最新的,很多个人桌面采用的2.6。
不同的linux发行版本采用的内核不尽相同,比如fedora一般都是采用最新的内核。
5.之所以会有这么多问题,是因为我此时的大脑对linux的理解非常混乱,对于操作系统的理解只有正版的windows和盗版的windows的简单理解。
暂时先不谈盗版问题,就正版而言,我知道linux部分版本是收费的,大部分可能是免费的,为什么会出现收费与免费两种现象? 作为企业级的服务器应用,免费版本的linux是否可以应付得了,免费的是不是比收费的性能安全上要差好多????具体说说免费和收费的linux,谈谈二者之间的区别。
前面已经提到一些了,至于免费版,如果采用较为保守的成熟的版本,稳定性应该是可以保证的,安全方面,不是很了解,从我单位使用的rhle来看,与普通linux个人桌面并无大的区别。
与Free:收费的linux版本,是不是就不算开源的操纵系统了呢?收费的linux肯定不会开源,是不是?因为如果开源了,人家都知道你的源代码了,开发商就没办法收费卖他们的发行版本的linux了。
不知道理解的对吗?请具体说说开源与免费 拿redhat来说,他们既有收费的rhel,也有反编译rhel得到的并且是开源的centos,使用那个完全取决于用户自愿。
这样来看,开源与免费的区别仅在于开源的东西,在遵守gnu协议的基础上,任何人都可以得到程序的源代码,并可以自己修改,并可以再发布;而免费的就只能免费使用,而不可修改了。
7.如果可以的话,再介绍一下linux的学习方法,和linux好的入门书籍。
在日常工作当中,linux的应用会有很多角色,我主要是想学习LAMP架构下的WEB开发,不知道应该侧重学习linux哪些应用?哪些是LAMP程序员必须熟练掌握的LINUX技术,在求职应聘LAMP程序员的职位,一般面试考核linux方面都是哪些技能? (不懂)
linux安装软件(linux安装软件有哪几种方式)
在Windows下安装软件时,只需用鼠标双击软件的安装程序,或者用Zip等解压缩软件解压缩即可安装。在Linux下安装软件对初学者来说,难度高于Windows下软件安装。下面我就详细讲解Linux下如何安装软件。
先来看看Linux软件扩展名。软件后缀为最初是RedHat
Linux提供的一种包封装格式,现在许多Linux发行版本都使用;后缀为是Den
Linux提供的一种包封装格式;后缀为、tar.Z、2或是使用Unix系统打包工具tar打包的;后缀为的一般是一些商业软件。通过扩展名可以了解软件格式,进而了解软件安装。
RPM格式软件包的安装
1.简介
几乎所有的Linux发行版本都使用某种形式的软件包管理安装、更新和卸载软件。与直接从源代码安装相比,软件包管理易于安装和卸载;易于更新已安装的软件包;易于保护配置文件;易于跟踪已安装文件。
RPM全称是RedHatPackageManager(RedHat包管理器)。RPM本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的Linux软件。RPM示意图见图1。
大多数LinuxRPM软件包的命名有一定的规律,它遵循名称-版本-修正版-类型-。
2.安装RPM包软件
RPM命令主要参数:
-i安装软件。
-t测试安装,不是真的安装。
-p显示安装进度。
-f忽略任何错误。
-U升级安装。
-v检测套件是否正确安装。
这些参数可以同时采用。更多的内容可以参考RPM的命令帮助。
3.卸载软件
#rpm-e软件名
需要说明的是,上面代码中使用的是软件名,而不是软件包名。例如,要卸载这个包时,应执行:
#rpm-esoftware
4.强行卸载RPM包
有时除去一个RPM是不行的,尤其是系统上有别的程序依赖于它的时候。如果执行命令会显示如下错误信息:
##rpm-exsnow
error:removingthesepackageswouldbreak:
/usr/X11R6/bin/xsnowisneededbyx-amusements-1.0-1
在这种情况下,可以用--force选项重新安装xsnow:
这里推荐使用工具软件Kleandisk,用它可以安全彻底清理掉不再使用的RPM包。
5.安装类型的文件
目前RPM有两种模式,一种是已经过编码的(),一种是未经编码的()。
这时系统会建立一个文件,在/usr/src/redflag/RPMS/子目录下,一般是i386,具体情况和Linux发行版本有关。然后执行下面代码即可:
rpm-ivh/usr/src/regflag/RPMS/i386/
使用deb打包的软件安装
deb是DebianLinux提供的一个包管理器,它与RPM十分类似。但由于RPM出现得早,并且应用广泛,所以在各种版本的Linux中都常见到,而Debian的包管理器dpkg只出现在DebinaLinux中。它的优点是不用被严格的依赖性检查所困扰,缺点是只在DebianLinux发行版中才能见到这个包管理工具。
1.安装
2.卸载
#dpkg-eMYsoftware
使用源代码进行软件安装和RPM安装方式相比,使用源代码进行软件安装会复杂一些,但是用源代码安装软件是Linux下进行软件安装的重要手段,也是运行Linux的最主要的优势之一。使用源代码安装软件,能按照用户的需要选择定制的安装方式进行安装,而不是仅仅依靠那些在安装包中的预配置的参数选择安装。另外,仍然有一些软件程序只能从源代码处进行安装。
现在有很多地方都提供源代码包,到底在什么地方获得取决于软件的特殊需要。对于那些使用比较普遍的软件,如Sendmail,可以从商业网站处下载源代码软件包(如[url][/url])。一般的软件包,可从开发者的Web站点下载。下面介绍一下安装步骤:
1.解压数据包
源代码软件通常以做为扩展名,也有tar.Z、2或为扩展名的。不同扩展名解压缩命令也不相同,见表1。
2.编译软件
成功解压缩源代码文件后,进入解包的目录。在安装前阅读Readme文件和Install文件。尽管许多源代码文件包都使用基本相同的命令,但是有时在阅读这些文件时能发现一些重要的区别。例如,有些软件包含一个可以安装的安装脚本程序()。在安装前阅读这些说明文件,有助于安装成功和节约时间。
在安装软件以前要成为root用户。实现这一点通常有两种方式:在另一台终端以root用户登录,或者输入“su”,此时系统会提示输入root用户的密码。输入密码以后,就将一直拥有root用户的权限。如果已经是root用户,那就可以进行下一步。
通常的安装方法是从安装包的目录执行以下命令:
#./configure#配置#
make#调用make#
makeinstall#安装源代码#
删除安装时产生的临时文件:
#makeclean
卸载软件:
#makeuninstall
有些软件包的源代码编译安装后可以用makeuninstall命令卸载。如果不提供此功能,则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,应该在编译前进行配置。
文件安装
扩展名为文件是二进制的,它也是源程序经编译后得到的机器语言。有一些软件可以发布为以为后缀的安装包,例如,流媒体播放器RealONE。如果安装过RealONE的Windows版的话,那么安装RealONEforLinux版本(文件名:r1p1_linux22_libc6_i386_)就非常简单了:
#chmodxr1p1_linux22_libc6_i386_
./r1p1_linux22_libc6_i386_
接下来选择安装方式,有普通安装和高级安装两种。如果不想改动安装目录,就可选择普通安装,整个安装过程几乎和在Windwos下一样。
文件的卸载,以RealONEforLinux为例,如果采用普通安装方式的话,在用户主目录下会有Real和Realplayer9两个文件夹,把它们删除即可。
Linux绿色软件
Linux也有一些绿色软件,不过不是很多。Linux系统提供一种机制:自动响应软件运行进程的要求,为它设定好可以马上运行的环境。这种机制可以是一种接口,或者是中间件。程序员编写的程序可以直接拷贝分发,不用安装,只要点击程序的图标,访问操作系统提供的接口,设定好就可以工作。若要删除软件,直接删除就可以,不用链接文件。这是最简单的软件安装、卸载方式。
上面介绍了Linux软件安装的方法,对于Linux初学者来说,RPM安装是一个不错的选择。如果想真正掌握Linux系统,源代码安装仍然是Linux下软件安装的重要手段。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。