软件安装:RPM、SRPM与YUM功能
软件管理器简介
Linux界的两大主流:PRM与DPKG
dpkg:最早由Debian Linux社区所开发,只要是派生与Debian的其他Linux distributions大多使用dpkg这个机制来管理软件,包括B2D,Ubuntu等。在线升级机制(命令):APT(apt-get)
RPM:最早由Red Hat这家公司开发出来,很多distributions都来使用它,包括Fedora,CentOS,SUSE等。在线升级机制(命令):YUM(yum)。
什么是RPM与SRPM
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
-i:install的意思;
-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(readLink(2)path 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底下的数据编译或者是单纯的打包成为RPM或SRPM时,就需要rpmbuild的指令和相关选项的帮忙。命令如下:
编译并同时产生RPM与SRPM文件: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] 软件