1. RPM
RPM就是厂商先在他们的系统上编译好了用户所需要的软件,打包成RPM安装包,然后将安装包直接发布给用户去安装。
RPM优点:
- RPM内含已经编译过的程序与设置文件等数据,可以让用户免去重新编译的困扰;
- RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本等,避免文件被错误安装;
- RPM提供软件版本信息、依赖属性软件名称、软件用途说明、软件所含文件等信息;
- RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、删除、查询与验证。
- RPM安装
rpm -ivh a.i386.rpm
rpm -ivh http://website.name/path/pkgname.rpm
// 安装之前可以使用test选项来测试一下该软件是否可以被安装
rpm -ivh pkgname.i386.rpm --test
// 指定安装目录,默认为/usr/local
rpm -ivh pkgname.i386.rpm --prefix=/usr/local/software
- RPM升级
rpm -Fvh pkgname.i386.rpm
- RPM查询
// 查询是否有安装nginx软件
rpm -q nginx
// 列出nginx软件安装后的所有目录与文件
rpm -ql nginx
// 列出nginx软件的相关说明数据,包含开发商、版本与说明等
rpm -qi nginx
// 分别找出nginx的设置文件与帮助文件
rpm -qc nginx
rpm -qd nginx
// 列出安装nginx所需的依赖软件
rpm -qR nginx
// 找出文件属于哪个已安装的软件
rpm -qf /bin/sh
上面是查已安装到系统上面的软件信息,这部分信息由/var/lib/rpm提供;如果我们要查未安装的rpm文件内容,就得使用rpm -qp (p是package的意思):
// 找出安装软件的依赖文件
rpm -qpR filename.i386.rpm
在查询本机上面的RPM软件相关信息时,不需要加版本名。因为它会由/var/lib/rpm数据库去查询。但是查某个未安装的RPM文件,就需要指定整个文件名。
- 卸载RPM
// 如果存在已安装的软件依赖本软件,则卸载不会成功
rpm -e pam
- 重建rpm数据库
由于文件经常会安装/删除/升级,某些操作可能会导致RPM数据库/var/lib/rpm内的文件损坏。我们可以使用--rebuilddb重建
rpm --rebuilddb
2. SRPM
通常不同的distribution所发布的RPM文件并不能在其他的distribution上用。如果我们真的需要安装其他distribution提供的好用的RPM软件怎么办?还好,还有SRPM,这个SRPM所提供的软件内容并没有经过编译,它提供的是源码。
通常一个软件在发布的时候,会同时释出RPM于SRPM。RPM必须在相同的环境下才能安装,而SRPM既然是源码,自然就可以通过修改SRPM内的参数设置文件,然后重新编译成能合适我们Linux环境的RPM文件。
为何说CentOS是“社区维护的企业版”呢?因为Red Hat公司的RHEL发布后,连带会将SRPM发布。一些社区的朋友就将这些SPRM收集起来并重新编译成所需要的软件,再重新发布成CentOS,真要感谢SRPM啊。
假设我们下载了一个SRPM文件,又不想修改这个文件内的源码与相关设置值,利用rpmbuild直接生产RPM包来安装
rpmbuild --rebuild filename.i386.src.rpm
3. YUM在线升级机制
RPM软件会有所谓的文件依赖问题。要是我们将这些依赖软件先列表,在有要安装软件需求的时候先到这个列表去找,同时与系统内已安装的软件相比较,没有安装的依赖软件就一口气安装起来,那不就解决依赖问题了吗?这就是YUM机制。
由于distribution必须先要释出软件,然后将软件放置于yun服务器上,以提供客户端来要求安装与升级之用的。因此我们要使用yum的功能,必须要先找到合适的yun server才行。
- YUM操作
// 查询以pam开头的软件有哪些
yum list pam*
// 安装
yum install pam-devel
// 升级
yum update pam-devel
// 删除
yum remove pam-devel
- YUM设置文件
vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5