Linux软件包安装与管理,linux软件包源码安装与RPM包方式安装

发布时间:2020-07-30编辑:脚本学堂
本文介绍了linux下软件包的安装与管理方法,分为linux软件包源码安装与RPM包方式安装,Linux下如何安装软件的详细教程,需要的朋友参考下。

linux软件包源码安装与RPM包方式安装 第二部分
2. 查询软件包

命令格式:rpm -q [辅助选项] package1……packageN主选项说明:

-q:query的意思,也可以使用“--query”。

参数说明:package1……packageN为已经安装的软件包名称。

辅助选项说明:

-f:查询操作系统中某个文件属于哪个对应的rpm软件包。

例如:
[root@localhost ~]# rpm -qf /bin/bash
bash-3.0-19.2

-p:查询以“.rpm”为后缀的软件包安装后对应的包名称。

例如:
[root@server ~]# rpm -qp gcc-3.4.4-2.i386.rpmgcc-3.4.4-2从这里的查询可以得知,“gcc-3.4.4-2.i386.rpm”安装到系统以后,对应的包名为gcc-3.4.4-2。
-l:显示软件包中的所有文件列表。此选项后面跟软件包安装后对应的包名,切记不是以“.rpm”为后缀的rpm包。

例如:
[root@server ~]# rpm –qgcc-3.4.4-2
/usr/bin/c89
/usr/bin/c99
/usr/bin/cc
/usr/bin/gcc
/usr/bin/gcov
………(以下省略)………

-i:显示软件包的概要信息,例如软件名称、版本、适应平台、大小等等。此选项后面跟完整的包名,切忌不是以“.rpm”为后缀的rpm包。

例如:在得到一个软件,安装之前一般都需要看下软件包有什么内容,可以使用以下命令:

[root@server ~]# rpm -qi gcc-3.4.4-2.i386或者使用[root@server ~]# rpm -qpi gcc-3.4.4-2.i386.rpm这里由于用到了“-p”选项,首先显示出了安装后的软件包名,所以“-i”选项后可跟“.rpm”结尾的软件包。

-g:查询系统有哪些软件包属于指定的类别,RPM工具根据软件功能的不同,将软件分了很多种类,分别如下,括弧内为注释说明:

Amusements/Games (娱乐/游戏)

Amusements/Graphics(娱乐/图形)

Applications/Archiving (应用/档案)

Applications/Communications (应用/通讯)

Applications/Databases (应用/数据库)

Applications/Editors (应用/编辑器)

Applications/Emulators (应用/仿真器)

Applications/Engineering (应用/工程)

Applications/File (应用/文件)

Applications/Internet (应用/因特网)

Applications/Multimedia (应用/多媒体)

Applications/Productivity (应用/产品)

Applications/Publishing (应用/印刷)

Applications/System (应用/系统)

Applications/Text (应用/文本)

Development/Debuggers (开发/调试器)

Development/Languages (开发/语言)

Development/Libraries (开发/函数库)

Development/System (开发/系统)

Development/Tools (开发/工具)

Documentation (说明文档)

System Environment/Base (系统环境/基础)

System Environment/Daemons (系统环境/守护)System Environment/Kerne(系统环境/内核)System Environment/Libraries (系统环境/函数库)System Environment/shells (系统环境/接口)User Interface/Desktops (用户界面/桌面)User Interface/X (用户界面/X窗口)
User Interface/X Hardware Support (用户界面/X硬件支持)例如:查看当前系统属于“开发/调试器”类别的包有多少,使用以下命令:
[root@server ~]# rpm -qg "Development/Debuggers"lsof-4.72-1.1crash-4.0-2
sysreport-1.3.15-5
ltrace-0.3.36-2.EL4
strace-4.5.13-0.EL4.1
valgrind-2.2.0-5.EL4
valgrind-callgrind-0.9.9-1
gdb-6.3.0.0-1.63
pstack-1.2-6

-d:显示软件包中的说明文件列表,RPM将软件包中的文件分为三类,一类是配置文件,一类是说明文件,一类是可执行文件。后面跟完整的包名,切忌不是以“.rpm”为后缀的rpm包。

例如:查看file软件包中的说明文件,使用以下命令:
[root@server108 cicro]# rpm -qd  file-4.10-2/usr/share/doc/file-4.10/LEGAL.NOTICE/usr/share/doc/file-4.10/README
/usr/share/man/man1/file.1.gz
/usr/share/man/man3/libmagic.3.gz
/usr/share/man/man5/magic.5.gz

-s:与“-l“选项类似,除了显示软件包中的所有文件列表信息,而且还显示每个文件的状态。RPM已安装的软件包中各个文件拥有四种状态,分别是normal(正常状态,表示文件没有被其它软件包修改过)、not installed(未安装状态,表示文件没有安装)、replaced(已替换状态,表明此文件已经被其它软件包修改替换过了)、net shared(网络共享状态,表示此文件处于网络共享状态)。

例如:查看ipvsadm-1.24-6包中每个文件的状态,使用以下命令:
[root@localhost ~]# rpm -i --excludedocs ipvsadm-1.24-6.i386.rpm[root@localhost ~]# rpm -qs ipvsadm-1.24-6norma       /etc/rc.d/init.d/ipvsadmnorma       /sbin/ipvsadm
norma       /sbin/ipvsadm-restore
norma       /sbin/ipvsadm-save
not installed /usr/share/doc/ipvsadm-1.24not installed /usr/share/doc/ipvsadm-1.24/READMEnot installed /usr/share/man/man8/ipvsadm-restore.8.gznot installed /usr/share/man/man8/ipvsadm-save.8.gznot installed /usr/share/man/man8/ipvsadm.8.gz从上面可以看到,我们在安装ipvsadm-1.24-6.i386.rpm的时候指定不安装说明文档,然后通过“-s”命令查看文件状态时,软件包的说明文档状态均为“not installed”。

-R (或--requires):显示软件包所需的功能,所谓功能,可以是软件包标识,也可以是共享动态库文件等等,软件包的依赖关系就是依靠功能来实现的,如果所需的功能不存在,则依赖关系一定得不到满足,软件安装就会失败。

--provides:显示软件包提供的功能,这个功能可以是动态库文件,也可以是虚拟软件的包名等等。

例如:查看nxclient-2.1.0-17.i386.rpm提供的功能,使用以下命令:

[root@localhost ~]# rpm -qp --provides nxclient-2.1.0-17.i386.rpmnxclient = 2.1.0-17可以看到这个软件提供了nxclient的功能。

3. 验证软件包

验证已经安装的软件包

校验软件包比较的是某软件包安装的文件和原始软件包中的同一文件的信息是否一致。它校验每个文件的大小、权限、MD5 值、类型、所有者、以及组群。

命令格式:rpm -V [辅助选项] package1……packageN主选项说明:

-V:verify的意思,也可以用“--verify”代替。此参数主要校验已经安装的软件包内的文件和最初安装时是否一致。

参数说明:package1……packageN 表示需要校验的且已经安装的软件包名。

辅助选项说明:

-p:验证软件包文件

例如:下面是验证rsh包的安装状态,操作过程如下:
[root@localhost ~]# rpm -V rsh-0.17-25.3
package rsh-0.17-25.3 is not installed
[root@localhost ~]# rpm -Vp rsh-0.17-25.3.i386.rpmwarning: rsh-0.17-25.3.i386.rpm: V3 DSA signature: NOKEY, key ID db2a6emissing     /usr/bin/rcpmissing     /usr/bin/rexec
missing     /usr/bin/rlogin
missing     /usr/bin/rsh
missing   d /usr/share/man/man1/rcp.1.gz
missing   d /usr/share/man/man1/rexec.1.gzmissing   d /usr/share/man/man1/rlogin.1.gzmissing   d /usr/share/man/man1/rsh.1.gz[root@localhost ~]# rpm -ivh rsh-0.17-25.3.i386.rpmwarning: rsh-0.17-25.3.i386.rpm: V3 DSA signature: NOKEY, key ID db2a6ePreparing...   ########################### [100%]
1:rsh     ######################## [100%]
[root@localhost ~]# rpm -Vp rsh-0.17-25.3.i386.rpmwarning: rsh-0.17-25.3.i386.rpm:V3 DSA signature: NOKEY, key ID db2a6e[root@localhost ~]# rpm -V rsh-0.17-25.3#上面操作中,首先验证rsh,可以知道rsh没有在系统中安装,接着安装了rsh软件包,再次查看rsh包状态时,没有任何输出了,表示软件包文件全部正常。

-f:校验文件在所属的软件包的状态,此选项后面跟相应的文件名。

例如:检查mysqlclient包中各个文件的状态,操作如下:
[root@localhost ~]# rpm -qmysqlclient10-3.23.58-4.RHEL4.1/etc/ld.so.conf.d/mysqlclient10-i386.conf/usr/lib/mysql/libmysqlclient.so.10/usr/lib/mysql/libmysqlclient.so.10.0.0
/usr/lib/mysql/libmysqlclient_r.so.10
/usr/lib/mysql/libmysqlclient_r.so.10.0.0[root@localhost ~]# mv >/usr/lib/mysql/libmysqlclient.so.10  /usr/lib/mysql/libmysqlclient.so.10.d[root@localhost ~]# rpm –V mysqlclient10-3.23.58-4.RHEL4.1missing     /usr/lib/mysql/libmysqlclient_r.so.10[root@localhost ~]# rpm -Vf  /usr/lib/mysql/libmysqlclient_r.so.10missing     /usr/lib/mysql/libmysqlclient_r.so.10#这里我们首先检查了mysqlclient包中包含的所有文件,然后模拟删除mysqlclient包中一个文件,然后查看这个文件的状态,可以看到显示为“missing”,如果我们通过“-Vf”选项检查某个文件,没有任何输出时,表示这个文件状态正常。

-a:检验所有的软件包。

-g:检验所有属于组的软件包。

验证未安装的软件包文件

发行的RPM格式的软件包是否值得信任,是否损坏,我们可以通过RPM提供的选项进行验证。RPM软件包一般使用 Gnu 隐私卫士(或称 GPG)来签名,从而帮助使用者肯定下载软件包的可信任性。

命令格式:rpm -K file1.rpm……fileN.rpm

主选项说明:

-K: checksig的意思,也可以用“--checksig”代替。这个选项用来检查 RPM 软件包文件的md5校验和GPG签名。

参数说明:file1.rpm……fileN.rpm表示需要校验软件包名。

例子:如果想要校验某个软件包是否被篡改或者是否损坏,可以使用如下命令检查:

[root@localhost ~]# rpm -K nxserver-2.1.0-22.i386.rpmnxserver-2.1.0-22.i386.rpm: md5 OK这里的“md5 OK”表示文件在下载中没有被损坏或者没有被篡改。即这个文件是安全的。

[root@localhost ~]# rpm -K ipvsadm-1.24-6.i386.rpmipvsadm-1.24-6.i386.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: GPG#443e1821)上面的输出表示这个软件没有被授权签名,在安装未被linux发行商授权的软件包时,请务必谨慎,因为这些软件包内可能包含有害的代码。

4. 更新软件包

命令格式:rpm -U [辅助选项] file1.rpm……fileN.rpm主选项说明:

-U:upgrade的意思,可以使用“--upgrade”代替。

参数说明:file1.rpm……fileN.rpm表示需要升级的rpm文件包。

辅助选项说明:

--oldpackage 表示允许"升级"到一个老版本,即软件版本降级。

其它选项与安装RPM软件包辅助参数完全相同,这里不再讲述。

例子:将rsh从rsh-0.17-25.3升级到rsh-0.17-37.el5,步骤如下:
[root@localhost ~]# rpm  -q rsh
rsh-0.17-25.3
[root@localhost ~]# rpm  -Uvh rsh-0.17-37.el5.i386.rpmwarning: rsh-0.17-37.el5.i386.rpm: V3 DSA signature: NOKEY, key ID 37017186Preparing... ######################### [100%]
1:rsh    ########################### [100%]
[root@localhost ~]# rpm  -q rsh
rsh-0.17-37.el5

5. 删除软件包
命令格式:rpm -e [辅助选项] package1……packageN主选项说明:
-e:erase的意思,也可以用“--erase”代替。

参数说明:package1……packageN表示已经安装的软件包名称。

辅助选项说明:
--test:只执行删除的测试。
--nodeps:不检查依赖性。

举例:
1) 删除rsh软件包,使用以下命令:
[root@localhost ~]# rpm  -q rsh
rsh-0.17-37.el5

[root@localhost ~]# rpm  -e rsh-0.17-37.el5[root@localhost ~]# rpm  -q rshpackage rsh is not installed

2)删除gcc软件包,但是存在依赖关系,操作过程如下:
[root@server ~]# rpm -e gcc
error: Failed dependencies:

gcc = 3.4.4-2 is needed by (installed) gcc-c++-3.4.4-2.i386gcc = 3.4.4-2 is needed by (installed) gcc-g77-3.4.4-2.i386gcc = 3.4.4-2 is needed by (installed) gcc-java-3.4.4-2.i386gcc = 3.4.3 is needed by (installed) libtool-1.5.6-4.EL4.1.i386gcc is needed by (installed) systemtap-0.4-0.EL4.i386这里又出现了删除依赖性了,根据上面的提示可知,要删除gcc软件包,必须删除与gcc相互依赖的五个软件包,这个操作要非常慎重,除非知道删除后对系统没有影响,否则一定不要盲目执行删除操作,因为这样可能导致系统的崩溃。

其实也可以加入“--nodeps”参数,忽略依赖关系,但是这样可能会导致相关依赖软件的不可用。

三、二进制软件安装方式

Linux下二进制格式的软件是指事先已经在各种平台编译安装好相关软件,然后压缩打包,在安装时只需解压或者执行安装可执行文件即可。这种软件发行格式类似与windows系统,这样做的原因是保护源代码程序不对外泄露,保护知识产权。二进制软件包的优点是安装简单、容易,缺点是缺乏灵活性,相应的软件包执行在对应平台下安装,离开这个环境软件就无法运行。

二进制软件包提供了很多类型的打包方式,最常见的就是我们上节讲到的RPM格式的包,还有以“*.tar.gz、*.tgz、*.bz2“等形式的二进制软件包,最后还有一个就是提供安装程序进行安装的二进制软件包。下面分别介绍:

3.1 安装“*.tar.gz、*.bz2”二进制软件包

这种格式的软件包,安装其实就是简单的解压过程,根据不同的软件打包格式,我们用相应的解压命令解压即可。

对于*.tar.gz软件格式解压:tar –zxvf xxxxxx.tar.gz对于*.bz2软件格式解压:  tar  -jxvf xxxxxx.tar.gz这类软件的卸载,对于解压后只有单一目录的软件,可以直接删除对应软件目录即可,如果解压后文件分散在几个目录中,需要一一手动删除目录。

例如:我们常用的应用服务器容器tomcat软件就是基于这种打包压缩格式发行的。我们只需下载后解压即可完成安装,如果需要卸载,直接删除对应的tomcat目录即可。

3.2 提供安装程序的软件包

这种软件包都提供了安装脚本或者安装向导程序,只需在下载此类软件包后解压,然后进入安装目录,找到类似的setup、install、install.sh之类的可执行文件运行即可,然后根据提示(比如安装路径,参数设置等等)进行相应的设置,接着安装就自动完成。

这类软件的卸载也提供了相应的卸载脚本或者卸载向导,根据提示即可完成软件卸载。

例如:经常使用的sun jdk就是这种安装方式,从网络下载下来的jdk是个二进制可执行文件,首先设置文件的可执行权限(例如chmod 755  jdk1.6.0_07.bin,权限操作本书后面会有详细讲述) ,然后运行软件(也即是./ jdk1.6.0_07.bin)即可完成安装。安装完成会在当前目录产生一个对应的jdk程序目录。

Linux下一些大型的软件安装,比如weblogic、oracle等软件都提供了安装向导程序,用户可以根据安装提示,顺利完成此类软件的安装。