Linux 下安装软件有自己的一套方式,用户可以根据自己的需要和获得的软件包的不同,选择自己喜欢的安装方式,
最常见的四种安装方式:
由于linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如apache、tomcat、php等软件。开源软件基本都提供源码下载,源码安装的方式;源码安装的好处是用户可以自己定制软件功能,安装需要的模块,不需要的功能可以不用安装,此外,用户还可以自己选择安装路径,方便管理,卸载软件也很方便,只需删除对应的安装目录即可。没有windows所谓的注册表之说。 源码安装软件一般有以下几个步骤组成:下载解压源码、分析安装平台环境(ifconfigure)、编译安装软件(make,make install)。下面分别介绍。
linux下软件的源码一般都是C或者C++语言编写的,并且都会在软件的官方网站上提供源码包下载,例如apache开源项目的官方网站为http://www.apache.org,此外在网上的很多开源社区一般也提供一些常用软件的源码下载,源码都打包成压缩文件,常见的源码打包压缩格式有“.tar.gz”、“.tar.baz2”等。我们可以从网站上首先下载源码文件,然后在传到所在的linux系统下,如果你的linux系统处于联网状态下,也可以直接在系统内通过wget之类的下载命令将源码包直接下载到linux系统下。 下载完成,把相应的软件解包即可,针对下载软件包的不同,使用不同的方法进行解压,解压完毕后进入解压生成的目录中,在这个目录下,一般都存在一个REDAME文件,这个文本文件非常重要,它详细的介绍了这个软件所能完成的功能、授权许可、安装需求、安装注意事项、安装方式等等,由于linux各个版本的差异,以及安装环境的不同,软件的安装方式也不尽相同,所以在安装软件前,一定要事先阅读这个README文件,确保安装的正确性。
在软件包解压完毕之后,我们进入源码目录,一般都会存在configure和README这么两个文件,README就是上面我们讲到的,是对软件的介绍和安装说明;linux下软件的安装受到操作系统安装环境的影响,比如某些软件在安装或者运行过程中需要调用操作系统本身的库文件,或者需要运行系统的某个工具等等,但是系统中不存在这个库文件或者这个工具没有安装,那么安装或者运行软件就会失败。 为了避免这个问题的出现,在安装软件的时候就需要分析操作系统环境,检测当前系统是否拥有安装软件所需的所有文件和工具,如果系统缺少某个文件,就给出提示,直到满足软件的所有需求为止。这个就是configure文件的功能,configure文件一般是个可执行文件,可以在当前目录下直接输入“./configure”进行软件安装的环境测试,如果提示缺少某些安装包,就需要进行安装,直到测试通过。通常的,源码安装都需要GCC或者CC编译器,这些编译器一般在安装系统时定制安装包中的开发工具选项下,其实这也是我们在第二章安装linux系统中要求选择开发工具包的原因所在。 此外,在执行configure分析软件需求时,还可以在“./configure”后面加上软件的安装路径以及安装所需的模块等等一些选项,来定制用户需要的软件功能。
在验证软件安装环境后,正式进入软件的编译步骤,在进行编译前,首先了解下关于编译的一些基础知识。 在linux系统下,make是我们经常用到的编译命令,无论是安装软件还是项目开发,都会经常用到编译、安装命令,也就是make和make install,对于一个包含很多源文件的应用程序,使用make和makefile工具可以简单快速的解决各个源文件之间复杂的依赖关系,同时,make工具还可以自动完成所有源码文件的编译工作,并且可以只对上次编译后修改过的文件进行增量编译,因此,熟练掌握了make和makefile工具之后,源码安装软件就变的像windows下安装软件一样简单。
make工具最主要的功能就是通过makefile文件来实现的,makefile文件是按照某种语法来进行编写的,文件中定义了各个源文件之间的依赖关系,并说明了如何编译源文件并生成可执行文件,它通过描述各个源程序之间的关系让make工具自动完成编译工作。 在linux系统下,习惯用Makefile替代makefile文件,我们在执行configure通过后,就会在当前目录下生成这个文件,一般情况下在命令行输入make时,make命令会默认去寻找当前目录下的Makefile文件,如果我们用其它文件作为makefile,就要在make命令选项后指定makefile文件,例如我们设定编译规则文件为make_file,就需要使用以下命令指定: [root@WEBServer ~]#make -f make_file
下面我们通过举例了解下Makefile的编写原则和内容。 例如有一个test程序,有三个源文件file1.c、file2.c、file3.c以及库文件LS编译生成,这三个源文件还分别包含了自己的头文件1.h、2.h、3.h。通常,C编译器将会输出三个目标文件file1.o、file2.o、file3.o。假定file1.c和file3.c都要声明用到一个apcs的文件,但是file2.c不用,也就是在file1.c和file3.c文件中都有类似“#include “apcs””的声明。 下面这段代码就是对test程序的描述:
1:#It is a example for describing makefile
2:test: file1.o file2.o file3.o
3:cc file1.o file2.o file3.o -LS -o test
4:file1.o: file1.c 1.h apcs
5:gcc -c file1.c
6:file3.o: file3.c 3.h apcs
7:gcc -c file3.c
8:file2.o: file2.c c.h
9:gcc -c file2.c
这个描述文档其实就是一个makefile文件,第一行为注释行,第二行指定test程序有file1.o、file2.o、file3.o链接生成,第三行描述了如何从test所依赖的文件建立可执行文件,接下来的第四、六、八行定义了三个目标文件和它们依赖的“.c”、“.h”和“apcs”文件。剩下的第五、七、九行定义了如何从目标依赖的文件生成可执行文件。
在了解Makefile文件结构后,我们就可以控制编译的选项,定制自己所需的软件功能。 接下来,我们只需在命令行输入make命令,即可进入编译阶段,根据软件源程序的大小和系统的硬件配置,编译时间不定,编译完毕,会在当前目录以及子目录下生成相应的可执行文件,接下来就进入最后的安装软件阶段,在命令行输入make install命令,开始安装软件,安装进程会首先创建安装目录,如果我们没有指定安装的目录,安装程序默认会安装在系统的/usr/local目录下创建安装目录,然后将相应的文件和可执行程序从源码目录拷贝到安装目录下,这样安装就完毕了。
下面我们通过源码安装apache,实例讲解linux下源码的安装方式。
[root@WEBServer~]#mkdir /apache #在根目录下创建一个apache目录
[root@WEBServer~]#cd /apache #切换到apache目录
[root@WEBServer apache]#wget \ #下载apache源码
>http://apache.mirror.phpchina.com/httpd/httpd-2.2.9.tar.bz2
[root@WEBServer apache]#tar -jxvf httpd-2.2.9.tar.bz2 #解压apache源码
[root@WEBServer apache]#ls #显示解压结果
httpd-2.2.9 httpd-2.2.9.tar.bz2
[root@WEBServer apache]#cd httpd-2.2.9 #切换到httpd-2.2.9目录下
[root@WEBServer httpd-2.2.9]#./configure --prefix=/opt/apache2.2.9 \
>--enable-so \
>--enable-mods-shared=most \
>--enable-proxy-balancer=shared \
>--enable-proxy-http=shared \
>--enable-proxy-ajp \
>--enable-rewrite
注意:上面我们指定apache的安装目录为/opt/apache2.2.9,同时指定需要编译的apache模块。 下面分别介绍这些模块代表的含义,更详细的请参看apache文档。
[root@WEBServer httpd-2.2.9]#make
[root@WEBServer httpd-2.2.9]#make install
安装完毕,apache被安装到/opt/apache2.2.9下,接下来我们就可以使用apache软件了。
RPM是Red Hat Package Manager的缩写,本意就是Redhat软件包管理,是最先由Redhat公司开发出来的linux下软件包管理工具,由于这种软件管理方式非常方便,逐渐被其它linux发行商所借用,现在已经成为linux平台下通用的软件包管理方式,例如Fedora 、Redhat、suse、Mandrake等主流linux发行版本都默认采用了这种软件包管理方式。 RPM包管理类似于windows下的“添加/删除程序”但是功能却比“添加/删除程序”强大很多。在Linux的系统安装光盘中,有很多以“.rpm”结尾的软件包,这些包文件就是我们所说的RPM文件。每个RPM文件中包含了已经编译好的二进制可执行文件,其实就是将软件源码文件进行编译安装,然后进行封装,就成了RPM文件,类似与windows安装包中的“.exe”文件。此外RPM文件中还包含了运行可执行文件所需的其它文件,这点也和windows下的软件包类似,windows程序的安装包中,除了“exe”可执行文件,还有其它依赖运行的文件。 RPM包管理方式的优点是:安装简单方便,因为软件已经编译完成打包完毕,安装只是个验证环境和解压的过程。此外通过RPM方式安装的软件,RPM工具都会记录软件的安装信息,这样方便了软件日后的查询,升级和卸载。 RPM包管理方式的缺点是对操作系统环境的依赖很大,它要求RPM包的安装环境必须与RPM包封装时的环境相一致或相当。还需要满足安装时与系统某些软件包的依赖关系,例如需要安装A软件,但是A软件需要系统有B和C软件的支持,那么就必须先安装B和C软件,然后才能安装A软件。这也是我们在用RPM包方式安装软件需要特别注意的地方。
RPM包的封装格式一般有两种,分别是RPM和SRPM,SRPM包也是一种RPM,但是它包含了编译时的源码文件和一些编译指定的参数文件,因而在使用的时候需要重新进行编译,通常SRPM对应的RPM文件类似与“xxxxxxxx.src.rpm”格式。 下面我们讲述一下两种RPM包对应的文件名含义: 例如一个rpm文件:nxserver-2.1.0-22.i386.rpm,其中:
一般的RPM封装包的命名格式都有这五个部分组成,由于SRPM包是需要编译才能使用的,因此没有上面显示项中对应的平台选项,其它与RPM包命令格式完全一样。 对于RPM包的五个组成部分,我们下面介绍一些它们更详细的含义和异同:
需要注意的是:i386软件包可以在任意x86平台下使用,无论是i686或是x86_64的机器,相反,i686的软件包不一定能在i386硬件上面使用,由于i686软件包一般都是对cpu进行了优化,所有具有向后兼容性,但是不具有先前兼容的特性。
RPM工具的使用分为安装、查询、验证、更新、删除等操作,下面我们分别介绍。
命令格式:rpm -i [辅助选项] file1.rpm file2.rpm…..fileN.rpm
主选项说明:
辅助选项说明:这里的选项很多,我们只列出常用选项,详细解释如下:
举例: (1)我们安装ipvsadm-1.24-6.i386.rpm,使用下面命令:
[root@localhost ~]# rpm -ivh ipvsadm-1.24-6.i386.rpm
执行结果如下:
warning:ipvsadm-1.24-6.i386.rpm:V3 DSA signature: NOKEY, key ID 44e181
Preparing... ############################ [100%]
1:ipvsadm ############################[100%]
(2)下面操作显示了安装gcc-3.4.4-2.i386.rpm包过程,在安装过程中,出现了安装包依赖问题,我们的处理过程是这样的:
[root@server ~]# rpm -ivh gcc-3.4.4-2.i386.rpm
执行结果如下:
warning: gcc-3.4.4-2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
error: Failed dependencies:
glibc-devel >= 2.2.90-12 is needed by gcc-3.4.4-2.i386
Suggested resolutions:
glibc-devel-2.3.4-2.13.i386.rpm
这里显示在安装gcc编译器之前需要安装glibc-devel包的支持,这个包详细的版本是glibc-devel-2.3.4-2.13.i386.rpm,因此,我们需要先安装这个软件包。
[root@server ~]# rpm -ivh glibc-devel-2.3.4-2.13.i386.rpm
执行结果如下:
warning: glibc-devel-2.3.4-2.13.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
error: Failed dependencies:
glibc-headers is needed by glibc-devel-2.3.4-2.13.i386
glibc-headers = 2.3.4-2.13 is needed by glibc-devel-2.3.4-2.13.i386
Suggested resolutions:
glibc-headers-2.3.4-2.13.i386.rpm
这里又出现依赖关系,上面的错误提示是说安装glibc-devel包需要先安装glibc-headers软件包,并且给出了安装建议版本,于是我们就先安装glibc-headers包。
[root@server ~]# rpm -ivh glibc-headers-2.3.4-2.13.i386.rpm
执行结果如下:
warning: glibc-headers-2.3.4-2.13.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
error: Failed dependencies:
kernel-headers is needed by glibc-headers-2.3.4-2.13.i386
kernel-headers >= 2.2.1 is needed by glibc-headers-2.3.4-2.13.i386
Suggested resolutions:
glibc-kernheaders-2.4-9.1.98.EL.i386.rpm
依然报错,信息与上面相同,意思是说在安装kernel-headers包之前,需要glibc-kernheaders包的支持,并且给出了建议版本,我们先安装glibc-kernheaders包。
[root@server ~]# rpm -ivh glibc-kernheaders-2.4-9.1.98.EL.i386.rpm
执行结果如下:
warning: glibc-kernheaders-2.4-9.1.98.EL.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################### [100%]
1:glibc-kernheaders ###################### [100%]
这次依赖终于解除了,按照相反的顺序开始安装,下面显示安装步骤。
[root@server ~]# rpm -ivh glibc-headers-2.3.4-2.13.i386.rpm
warning: glibc-headers-2.3.4-2.13.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################### [100%]
1:glibc-headers ######################## [100%]
[root@server ~]# rpm -ivh glibc-devel-2.3.4-2.13.i386.rpm
warning: glibc-devel-2.3.4-2.13.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################### [100%]
1:glibc-devel ######################## [100%]
[root@server ~]# rpm -ivh gcc-3.4.4-2.i386.rpm
warning: gcc-3.4.4-2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ############################## [100%]
1:gcc ########################### [100%]
(3) 在上例中,如果我们在安装gcc第一步加入“--nodeps”参数,gcc由于不检查依赖关系,即可安装成功:
[root@server ~]# rpm -ivh gcc-3.4.4-2.i386.rpm –nodeps
执行结果如下:
warning: gcc-3.4.4-2.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ############################## [100%]
1:gcc ########################### [100%]
注意:这里加入了忽略依赖关系的参数,虽然可以安装成功,但是我们不建议这么做,因为这样安装的软件很有可能是不可用的,或者使用过程中出现问题, 除非我们知道忽略依赖关系对软件本身没有影响的话,才可使用此参数。
(4)安装xxxxxx.src.rpm的方法,这里我们以my-package.src.rpm名称为例,在redhat linux i386平台下进行介绍,常用的有两种方法,操作步骤如下: 方法一: ①执行rpm -i my-package.src.rpm
②执行以下命令切换目录
cd /usr/src/redhat/SPECS
③通过以下命令执行rpmbuild操作
rpmbuild -bp my-package.specs
my-package.specs 一个和软件包同名的specs文件。
此时,在/root/rpmbuild/RPMS/x86_64这个目录下,有一个或者多个已经生成的rpm包,这个就是已经编译好的可执行的rpm文件。 ④ cd /usr/src/redhat/BUILD/my-package/ 一个软件包同名的目录 ⑤ ./configure 这一步和编译普通的源码软件一样,可以加上参数 ⑥ make ⑦ make install 方法二: 1)执行rpm -i my-package.src.rpm 2)cd /usr/src/redhat/SPECS 前两步和方法一相同 3)rpmbuild -bb my-package.specs 一个和软件包同名的specs文件。 此时,在/usr/src/redhat/RPM/i386/ (这里的路径根据具体包的不同,也可能是i686、noarch等等) 在这个目录下,有一个或者两个新的rpm包,这个是编译好的二进制文件。 4)执行rpm -i new-package.rpm,安装完成。 例如:利用xxxx.src.rpm格式的包安装rsh软件,操作方法如下: [root@localhost ~]# rpm -i rsh-0.17-25.3.src.rpm [root@localhost ~]#cd /usr/src/redhat/SPECS/ rsh.spec [root@localhost SPECS]#rpmbuild -bb rsh.spec [root@localhost SPECS]# cd /usr/src/redhat/RPMS/i386/ rsh-0.17-25.3.i386.rpm rsh-debuginfo-0.17-25.3.i386.rpm rsh-server-0.17-25.3.i386.rpm [root@localhost i386]#rpm -ivh rsh-* Preparing... ############################ [100%] 1:rsh-server ########################## [ 33%] 2:rsh ############################## [ 67%] 3:rsh-debuginfo ######################## [100%] [root@localhost i386]#
命令格式:
rpm -q [辅助选项] package1……packageN
主选项说明:
辅助选项说明:
例如:
[root@localhost ~]# rpm -qf /bin/bash
bash-3.0-19.2
例如:
[root@server ~]# rpm -qp gcc-3.4.4-2.i386.rpm
gcc-3.4.4-2
从这里的查询可以得知,“gcc-3.4.4-2.i386.rpm”安装到系统以后,对应的包名为gcc-3.4.4-2。
例如:
[root@server ~]# rpm –ql gcc-3.4.4-2
/usr/bin/c89
/usr/bin/c99
/usr/bin/cc
/usr/bin/gcc
/usr/bin/gcov
………(以下省略)………
例如:在得到一个软件,安装之前一般都需要看下软件包有什么内容,可以使用以下命令: [root@server ~]# rpm -qi gcc-3.4.4-2.i386 或者使用 [root@server ~]# rpm -qpi gcc-3.4.4-2.i386.rpm 这里由于用到了“-p”选项,首先显示出了安装后的软件包名,所以“-i”选项后可跟“.rpm”结尾的软件包。
例如:查看当前系统属于“开发/调试器”类别的包有多少,使用以下命令: [root@server ~]# rpm -qg "Development/Debuggers" lsof-4.72-1.1 crash-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
例如:查看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
例如:查看ipvsadm-1.24-6包中每个文件的状态,使用以下命令: [root@localhost ~]# rpm -i --excludedocs ipvsadm-1.24-6.i386.rpm [root@localhost ~]# rpm -qs ipvsadm-1.24-6 normal /etc/rc.d/init.d/ipvsadm normal /sbin/ipvsadm normal /sbin/ipvsadm-restore normal /sbin/ipvsadm-save not installed /usr/share/doc/ipvsadm-1.24 not installed /usr/share/doc/ipvsadm-1.24/README not installed /usr/share/man/man8/ipvsadm-restore.8.gz not installed /usr/share/man/man8/ipvsadm-save.8.gz not installed /usr/share/man/man8/ipvsadm.8.gz 从上面可以看到,我们在安装ipvsadm-1.24-6.i386.rpm的时候指定不安装说明文档,然后通过“-s”命令查看文件状态时,软件包的说明文档状态均为“not installed”。
例如:查看nxclient-2.1.0-17.i386.rpm提供的功能,使用以下命令: [root@localhost ~]# rpm -qp --provides nxclient-2.1.0-17.i386.rpm nxclient = 2.1.0-17 可以看到这个软件提供了nxclient的功能。
(1) 验证已经安装的软件包 校验软件包比较的是某软件包安装的文件和原始软件包中的同一文件的信息是否一致。它校验每个文件的大小、权限、MD5 值、类型、所有者、以及组群。 命令格式:
rpm -V [辅助选项] package1……packageN
主选项说明:
辅助选项说明:
例如:下面是验证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.rpm
warning: rsh-0.17-25.3.i386.rpm: V3 DSA signature: NOKEY, key ID db2a6e
missing /usr/bin/rcp
missing /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.gz
missing d /usr/share/man/man1/rlogin.1.gz
missing d /usr/share/man/man1/rsh.1.gz
[root@localhost ~]# rpm -ivh rsh-0.17-25.3.i386.rpm
warning: rsh-0.17-25.3.i386.rpm: V3 DSA signature: NOKEY, key ID db2a6e
Preparing... ########################### [100%]
1:rsh ######################## [100%]
[root@localhost ~]# rpm -Vp rsh-0.17-25.3.i386.rpm
warning: 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包状态时,没有任何输出了,表示软件包文件全部正常。
例如:检查mysqlclient包中各个文件的状态,我们的操作如下:
[root@localhost ~]# rpm -ql mysqlclient10-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.1
missing /usr/lib/mysql/libmysqlclient_r.so.10
[root@localhost ~]# rpm -Vf /usr/lib/mysql/libmysqlclient_r.so.10
missing /usr/lib/mysql/libmysqlclient_r.so.10
#这里我们首先检查了mysqlclient包中包含的所有文件,然后模拟删除mysqlclient包中一个文件,然后查看这个文件的状态,可以看到显示为“missing”,如果我们通过“-Vf”选项检查某个文件,没有任何输出时,表示这个文件状态正常。
(2)验证未安装的软件包文件 发行的RPM格式的软件包是否值得信任,是否损坏,我们可以通过RPM提供的选项进行验证。RPM软件包一般使用 Gnu 隐私卫士(或称 GPG)来签名,从而帮助使用者肯定下载软件包的可信任性。 命令格式:
rpm -K file1.rpm……fileN.rpm
主选项说明:
例子:如果想要校验某个软件包是否被篡改或者是否损坏,可以使用如下命令检查:
[root@localhost ~]# rpm -K nxserver-2.1.0-22.i386.rpm
nxserver-2.1.0-22.i386.rpm: md5 OK
这里的“md5 OK”表示文件在下载中没有被损坏或者没有被篡改。即这个文件是安全的。 [root@localhost ~]# rpm -K ipvsadm-1.24-6.i386.rpm ipvsadm-1.24-6.i386.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: GPG#443e1821) 上面的输出表示这个软件没有被授权签名,在安装未被linux发行商授权的软件包时,请务必谨慎,因为这些软件包内可能包含有害的代码。
命令格式:
rpm -U [辅助选项] file1.rpm……fileN.rpm
主选项说明:
辅助选项说明:
其它选项与安装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.rpm
warning: rsh-0.17-37.el5.i386.rpm: V3 DSA signature: NOKEY, key ID 37017186
Preparing... ######################### [100%]
1:rsh ########################### [100%]
[root@localhost ~]# rpm -q rsh
rsh-0.17-37.el5
命令格式:
rpm -e [辅助选项] package1……packageN
主选项说明:
erase 英[ɪˈreɪz] 美[ɪˈreɪs] vt. 抹去; 清除; 擦掉;
辅助选项说明:
举例: (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 rsh
package 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.i386
gcc = 3.4.4-2 is needed by (installed) gcc-g77-3.4.4-2.i386
gcc = 3.4.4-2 is needed by (installed) gcc-java-3.4.4-2.i386
gcc = 3.4.3 is needed by (installed) libtool-1.5.6-4.EL4.1.i386
gcc is needed by (installed) systemtap-0.4-0.EL4.i386
这里又出现了删除依赖性了,根据上面的提示可知,要删除gcc软件包,必须删除与gcc相互依赖的五个软件包,这个操作要非常慎重,除非知道删除后对系统没有影响,否则一定不要盲目执行删除操作,因为这样可能导致系统的崩溃。 其实我们也可以加入“--nodeps”参数,忽略依赖关系,但是这样可能会导致相关依赖软件的不可用。
Linux下二进制格式的软件是指事先已经在各种平台编译安装好相关软件,然后压缩打包,在安装时只需解压或者执行安装可执行文件即可。这种软件发行格式类似与windows系统,这样做的原因是保护源代码程序不对外泄露,保护知识产权。
二进制软件包的优点是安装简单、容易,
缺点是缺乏灵活性,相应的软件包执行在对应平台下安装,离开这个环境软件就无法运行。
二进制软件包提供了很多类型的打包方式,最常见的就是我们上节讲到的RPM格式的包,还有以“*.tar.gz、*.tgz、*.bz2“等形式的二进制软件包,
最后还有一个就是提供安装程序进行安装的二进制软件包。下面分别介绍:
这种格式的软件包,安装其实就是简单的解压过程,根据不同的软件打包格式,我们用相应的解压命令解压即可。 对于*.tar.gz软件格式解压:
tar –zxvf xxxxxx.tar.gz
对于*.bz2软件格式解压:
tar -jxvf xxxxxx.tar.gz
这类软件的卸载,对于解压后只有单一目录的软件,可以直接删除对应软件目录即可,如果解压后文件分散在几个目录中,需要一一手动删除目录。 例如:我们常用的应用服务器容器tomcat软件就是基于这种打包压缩格式发行的。我们只需下载后解压即可完成安装,如果需要卸载,直接删除对应的tomcat目录即可。
这种软件包都提供了安装脚本或者安装向导程序,只需在下载此类软件包后解压,然后进入安装目录,找到类似的setup、install、install.sh之类的可执行文件运行即可,然后根据提示(比如安装路径,参数设置等等)进行相应的设置,接着安装就自动完成。 这类软件的卸载也提供了相应的卸载脚本或者卸载向导,根据提示即可完成软件卸载。 例如:经常使用的sun jdk就是这种安装方式,从网络下载下来的jdk是个二进制可执行文件,首先设置文件的可执行权限(例如chmod 755 jdk1.6.0_07.bin,权限操作本书后面会有详细讲述) ,然后运行软件(也即是./ jdk1.6.0_07.bin)即可完成安装。安装完成会在当前目录产生一个对应的jdk程序目录。 Linux下一些大型的软件安装,比如weblogic、oracle等软件都提供了安装向导程序,用户可以根据安装提示,顺利完成此类软件的安装。
yum是yellowdog updater modified 的缩写,yellow dog(黄狗)也是一个 Linux 的 发行版本,只不过Redhat公司是将这种升级技术利用到自己的发行版上就形成了现在的 yum。 yum是进行linux自动升级常用的一个工具,通过yum工具配合互联网即可实现自动升级系统。例如一台经过授权的Redhat Linux操作系统,或者一台Centos Linux系统,只要你的系统能连接互联网,输入yum install sftp 即可将sftp软件安装到系统中,输入yum update 即可实现系统的自动升级。通过yum进行系统升级实质是yum命令去下载指定的远程互联网 主机上的RPM软件包,然后自动进行安装,同时解决各个软件之间的依赖关系。
检查yum是否已经安装:
[root@localhost ~]# rpm -qa|grep yum
如果没有任何显示,表示系统中还没有安装yum工具,yum安装包在centos系统光盘中可以找到,执行如下指令进行安装:
[root@localhost ~]# rpm -ivh yum-*.noarch.rpm
安装yum需要python-elementtree、python-sqlite、urlgrabber、yumconf等软件包的支持,这些软件包在Centos Linux系统安装光盘均可找到,如果在安装yum过程中出现软件包之间的依赖性,只需按照依赖提示寻找相应软件包安装即可,直到yum包安装成功。
yum工具安装完毕,接下来的工作是进行yum的配置,yum的配置文件有主配置文件/etc/yum.conf、资源库配置目录/etc/yum.repos.d,yum安装后,默认的一些资源库配置可能无法使用,因此需要进行修改,下面是/etc/yum.repos.d/CentOS-Base.repo资源库配置文件各项的详细含义:
[root@localhost ~]#vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-4 - Base
#name 就是发行版的名称,其格式表示“操作系统名和释出版本”,“base”是表明此段寻找的是base包信息。
baseurl=http://mirror.centos.org/centos/4/os/$basearch/
#baseurl”表示yum在互联网上查找升级文件的URL地址。其中“$basearch”代表了系统的硬件构架如“i386”、“x86-64等,同时,yum在资源更新时,会检查baseurl/repodata/repomd.xml文件。 “repomd.xml”是一个索引文件,它的作用是提供了更新rpm包文件的下载信息和SHA校验值。 “repomd.xml”包括了3个文件,分别为“other.xml.gz”、”filelists.xml.gz”和”primary.xml.gz”,表示的含义依次是“其它更新包列表”、“更新文件集中列表”和“主要更新包列表”。
gpgcheck=1
#gpgcheck表示是否启用gpg检查,1表示启用,0表示不启用校验,如果启用,就是需要在配置文件里注明GPG-RPM-KEY的位置,可以看到下面gpgkey字段,指定了GPG-RPM-KEY验证文件的位置。
#released updates
[update]
#本段是updates更新模块要用到的部分配置。
name=CentOS-4 - Updates
baseurl=http://mirror.centos.org/centos/4/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#gpgkey指定GPG密钥的地址
#packages used/produced in the build but not released
#本段指定的是尚未发布的软件包部分(addons)配置
[addons]
name=CentOS-4 - Addons
baseurl=http://mirror.centos.org/centos/4/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#additional packages that may be useful
#本段指定的是有用的额外软件包部分(extras)配置
[extras]
name=CentOS-4 - Extras
baseurl=http://mirror.centos.org/centos/4/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#additional packages that extend functionality of existing packages
#本段指定的是扩展的额外软件包部分(centosplus)配置
[centosplus]
name=CentOS-4 - Plus
baseurl=http://mirror.centos.org/centos/4/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
#contrib - packages by Centos Users
#这里是contrib部分
[contrib]
name=CentOS-4 - Contrib
baseurl=http://mirror.centos.org/centos/4/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
1) 安装方便,自动解决增加或删除rpm包时遇到的依赖性问题。 2)可以同时配置多个资源库(Repository) 3) 配置文件简单明了(/etc/yum.conf、/etc/yum.repos.d/CentOS-Base.repo) 4)保持与RPM数据库的一致性 注意:yum会自动下载所有所需的升级资源包并默认放置在/var/cache/yum目录下, 当第一次使用yum或yum资源库更新时,软件升级所需的时间可能较长。
(1)通过yum安装和删除RPM包 安装rpm包,如dhcp [root@localhost ~]#yum install dhcp 删除rpm包,包括与该包有依赖性的包 [root@localhost ~]#yum remove licq 注意:同时会提示删除licq-gnome,licq-qt,licq-text (2)通过yum工具更新软件包 检查可更新的rpm包: [root@localhost ~]#yum check-update 更新所有的rpm包: [root@localhost ~]#yum update 更新指定的rpm包,如更新kernel和kernel source: [root@localhost ~]#yum update kernel kernel-source 大规模的版本升级,与yum update不同的是,陈旧的淘汰的包也会升级: [root@localhost ~]#yum upgrade (3)通过yum查询RPM包信息 列出资源库中所有可以安装或更新的rpm包的信息: [root@localhost ~]#yum info 列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息: [root@localhost ~]#yum info vsftpd [root@localhost ~]#yum info perl* 注意:可以在rpm包名中使用匹配符, 如上面例子是列出所有以perl开头的rpm包的信息。 列出资源库中所有可以更新的rpm包的信息: [root@localhost ~]#yum info updates 列出已经安装的所有的rpm包的信息: [root@localhost ~]#yum info installed 列出已经安装的但是不包含在资源库中的rpm包的信息: [root@localhost ~]#yum info extras 注:也就是通过其它网站下载安装的rpm包的信息。 列出资源库中所有可以更新的rpm包: [root@localhost ~]#yum list updates
列出已经安装的所有rpm包: [root@localhost ~]#yum list installed 列出已经安装的但不包含在资源库中的rpm包: [root@localhost ~]#yum list extras 注:也就是通过其它网站下载安装的rpm包。 列出资源库中所有可以安装或更新的rpm包: [root@localhost ~]#yum list 列出资源库中特定的可以安装或更新以及已经安装的rpm包: [root@localhost ~]#yum list sendmail [root@localhost ~]#yum list gcc* 注意:可以在rpm包名中使用匹配符, 如上面例子是列出所有以gcc开头的rpm包。 搜索匹配特定字符的rpm包的详细信息: [root@localhost ~]#yum search wget 注意:可以通过“search”在rpm包名,包描述中进行搜索。 搜索包含特定文件名的rpm包: [root@localhost ~]#yum provides realplay (4)通过yum操作暂存信息(/var/cache/yum) 清除暂存的rpm包文件: [root@localhost ~]#yum clean packages 清除暂存的rpm头文件: [root@localhost ~]#yum clean headers
清除暂存中旧的rpm头文件和包文件: [root@localhost ~]#yum clean all