鸟哥私房菜 第二十三章 软件安装:RPM、SRPM与YUM功能

软件安装:RPMSRPMYUM功能

 

软件管理器简介

 

Linux界的两大主流:PRMDPKG

dpkg:最早由Debian Linux社区所开发,只要是派生与Debian的其他Linux distributions大多使用dpkg这个机制来管理软件,包括B2DUbuntu等。在线升级机制(命令):APT(apt-get)

 

RPM:最早由Red Hat这家公司开发出来,很多distributions都来使用它,包括FedoraCentOSSUSE等。在线升级机制(命令):YUM(yum)

 

什么是RPMSRPM

RPM全名是“RedHat Package Manager”

优点:

1.由于已经编译完成并且打包完毕,所以软件传输与安装上很方便(不需要再重新编译);

2.由于软件的信息都已经记录在linux主机的数据库上,很方便查询升级与反安装。

 

缺点:

1.软件安装的环境必须与打包时的环境需求一致或相当;

2.需要满足软件的依赖属性需求;

3.反安装时需要特别小心,最底层的软件不可先删除,否则可能造成整个系统的问题。

 

SPRM“Source RPM”的意思,也就是RPM文件里包含有源代码,并且这个SRPM所提供的软件内容是未被编译过的源代码。其中也提供了参数设置文件。

通常SRPM的拓展名是以***.src.rpm这种格式来命名的。

安装SRPM软件:

先将该软件以RPM管理的方式编译,此时SRPM会被编译成为RPM文件;

然后将编译完成的RPM文件安装到Linux系统中。

 

 

RPM的优点:

RPM内含已经编译过的程序与配置文件等数据,可以让用户免除重新编译的困扰;

RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装;

RPM文件本身提供软件版本信息、想依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件;

RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、移除、查询与验证。

 

 

RPM软件管理程序

 

RPM默认安装路径

软件安装完毕后,该软件的信息会被写入/var/lib/rpm/下的数据库文件中。

/etc:一些配置文件放置的目录;

/usr/bin:一些可执行文件;

/usr/lib:一些程序使用的动态函数库;

/usr/share/doc:一些基本的软件使用手册与说明文件;

/usr/share/man:一些man page文件;

 

RPM安装(install

执行安装命令:

rpm -ivh package_name

-iinstall的意思;

-v:查看更详细的安装信息画面;

-h:以安装信息栏显示安装进度 

 

RPM升级更新(upgrade/freshen

-Uvh-Fvh来升级;

-Uvh:后面接的软件若没有安装过,则系统将予以直接安装;若后面接的软件有安装过旧版,则系统自动更新至新版;

-Fvh:后面接的软件即使没有安装过,则软件不会被安装;若后面接的软件有安装过旧版,则系统自动更新至新版;

 

RPM查询(query

已安装软件:rpm -qa

已安装软件:rpm -q[licdR] 已安装的软件名称;

已安装软件:rpm -qf 存在与系统上面的某个文件名;

查阅RPM文件:rpm -qp[licdR] 未安装的某个文件名。

-q:仅查询,后面接的软件名称是否有安装;

-qa:列出所有已经安装的所有软件名称;

-qi:列出该软件的详细信息;

-ql:列出该软件所有的文件与目录所在的完整文件名;

-qc:列出该软件的所有配置文件;

-qd:列出该软件的所有说明文件;

-qR:列出与该软件有关的相依软件所含文件;

-qf:有后面接的文件名,找出该文件属于哪一个已安装的软件;

-qp[licdR]:参数与上面一样,但是用途仅在于找出某个RPM文件内的信息,而非已安装软件信息。

 

RPM验证与数字证书(Verify/Signature

验证的作用方式是使用/var/lib/rpm下面的数据库内容来比较目前Linux系统的环境下所有软件文件。命令:

rpm -Va
rpm -V  已安装的软件名称
rpm -Vp  某个 RPM 文件的文件名

rpm -Vf 在系统上面的某个文件

-V:若该软件所含的文件被改动,会列出来;

-Va:列出目前系统中可能已被改动过的文件;

-Vp:列出该软件内可能被改动过的文件;

-Vf:列出某个文件是否被改动过。

 

输出例子:S.5....T. c /etc/crontab

文档名之前的c,就是configuration,就是设置文件的意思。最前面的一串信息是:

S(file Size differs):文件容量大小是否被改变;

M(Mode differs):文件类型或文件属性(rwx)是否被改变;

5(MD5 sum differs)MD5这一种指纹码的内容已经不同;

D(Device major/minor number mis-match):设备的主/次代码已经改变;

L(readLink2path mis-match)Link路径已被改变;

U(User ownership differs):文件的所有者已被改变;

G(Group ownership differs):文件的所属用户组已被改变;

T(mTime differs):文件的创建时间已被改变;

P(caPabilities differs):功能已被改变。

 

那个c代表“Configfile”,也就是文件类型,文件类型有以下几类:

c:设置文件(config file);

d:文档(documentation);

g文件(ghost file),通常是该文件不被某个软件所包含,较少发生;

l:授权文件(license file);

r:自述文件(read me)。

 

卸载RPM与重建数据库(erase/rebuilddb

卸载的过程一定是从最上层开始的。

删除的选项,就是-e,不过很常发生软件属性依赖导致无法删除某些软件的问题。

 

由于RPM文件经常需要安装/升级/卸载所以难免会导致RPM数据库/var/lib/rpm内的文件损坏,但我们可以通过--rebuilddb来重建数据库,例如:

rpm --rebuilddb 

 

SRPM的使用:rpmbuild

 

利用默认值安装SRPM文件(--rebuild/--recompile

不修改文件内的源代码与相关的设置值,直接编译并安装,可以利用rpmbuild配合选项,参数如下:

--rebuild:这个选项后面的SRPM进行编译和打包工作,最后生成RPM的文件,但是并没有安装。

--recompile:直接编译、打包并且安装。

SRPM使用的路径与需要的软件

CentOS6.x之后,因为每个用户都有能力自己安装自己的软件,因此SRPM安装、设定、编译、最终结果所使用的目录都与操作者的家目录有关,假设用root的身份运行,用该会使用到以下目录:

/root/rpmbuild/SPECS:放置该软件的是该软件的设置文件;

/root/rpmbuild/SOURCES:这个目录当中放置的是该软件的源文件以及config这个设置文件;

/root/rpmbuild/BUILD:在编译的过程中,有些暂存的数据都会放置在这个目录当中;

/root/rpmbuild/RPMS在编译后,并且顺利编译后,将打包完成的文件设置放在这个目录当中;

/root/rpmbuild/SRPMS:与RPMS内相似,这里放置的是SRPM封装的文件。

 

 

SRPM的编译命令(-ba/-bb

*.spec这个文件,这是主要的将SRPM编译成RPM的配置文件,他的基本规则可以这样看:

1.整个文件以Summary为开始,这部分的设定都是最基础的说明内容;

2.然后每个不同的段落之间,都以%来做为开头,例如%prep%install等。

 

要将/root/rpmbuild底下的数据编译或者是单纯的打包成为RPMSRPM时,就需要rpmbuild的指令和相关选项的帮忙。命令如下:

编译并同时产生RPMSRPM文件:rpmbuild -ba *.spec

仅编译成RPM文件:rpmbuild -bb *.spec

 

 

YUM在线升级机制

利用yum进行查询、安装、升级与移除功能

查询功能:yum [list|info|search|provides|whatprovides] 参数

命令如下:

yum [option] [查询工作项目] [相关参数]

[option]:主要的参数,包括有:

-y:当yum要等待用户输入时,这个选项可以自动提供yes的响应;

--installroot=/some/path:将该软件安装在/some/path中而不使用默认路径;

[查询工作项目] [相关参数]:这方面的参数有:

search:搜索某个软件名称或者是描述(description)的重要关键字;

list:列出目前yum所管理的所有的软件名称与版本;

info:同上,有点类似于rpm -qai的运行结果;

provides:从文件去搜索软件!类似于rpm -qf的功能。


安装/升级功能:yum[install|update] 软件

命令如下:

yum [option] [查询工作项目] [相关参数]

install:后面接要安装的软件;

update:后面接要升级的软件,若整个系统都要升级,就直接update即可。

 

删除功能:yum [remove] 软件

 

 

你可能感兴趣的:(鸟哥私房菜,读书笔记)