软件包管理 RPM和YUM的使用
如果说一个高效稳定安全运行的系统是网络社会构建必不可少的基石,那么系统中运行的软件就如同宇宙中璀璨的星辰,是他们让这个网络社会能够处理更多跟繁杂的事物,是这个网络社会能够更加高效发展的推手。
而这一个个的软件最最基础的就是软件包,软件包分为两种:一种是由作者提供源码包;而另外一种则是经过加工的二进制运行程序。源码包是由作者通过C语言,C++或者别的语音编写的纯文本的文件,而这些文本是不能被机器所识别的,这时候我们就需要对源代码进行编译,让其成为能够被机器识别的二进制程序,以便于在接下来的系统中提供服务与支持。
那么接下来就让我们就让我们具体了解LInux是如何实现对软件包的安装于管理的。
在Linux系统的核心思想之一“一切皆文件”,我们通过对于文件的管理来实现对于软件的管理。/etc, /bin, /sbin, /lib 在这些文件目录中存放的是linux系统启动时需要用到的程序,/usr/bin,/usr/sbin,/usr/lib,这些文件目录中存放的则是操作系统的核心功能,那我们如何在纷繁众多的文件和目录中实现对于软件的管理呢?
RPM最开始的时候是由RedHat公司开发的,以一种数据库记录的方式将所需要耳朵套件安装到Linux主机上的一种套机管理软件。简单的说就是RPM是一款能够实现对于软件进行安装、查询、卸载、升级、校验、数据库的重建、验证数据库等工作的软件。
那么RPM是如何实现这些功能的?
一、RPM安装(install)
rpm -i /PATH/TO/PACKAGE_FILE
-h: 以#显示进度;每个#表示2%;
-v: 显示详细过程
-vv: 更详细的过程
Rpm -i createrepo-0.4.11-3.el5.noarch.rpm
--nodeps: 忽略依赖关系;
--replacepkgs: 重新安装,替换原有安装;
--force: 强行安装,可以实现重装或降级;
二、RPM查询
RPM在查询时,查询的地方是在/var/lib/rpm目录下的数据库文件。另外RPM也可以查询文件内的信息
rpm -q PACKAGE_NAME: 查询指定的包是否已经安装
rpm -qa : 查询已经安装的所有包
rpm -qi PACKAGE_NAME: 查询指定包的说明信息;
rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表;
rpm -qc PACEAGE_NEME:查询指定包安装的配置文件;
rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件;
rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本
rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的;
如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE 查询指定包的说明信息
rpm -qpl /PATH/TO/PACKAGE_FILE 查询指定包安装后生成的文件列表
三、升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;
四、卸载
rpm -e PACKAGE_NAME 存在依赖关系时不允许卸载
--nodeps 强行卸载
五、校验
rpm -V PACKAGE_NAME
六、重建数据库
rpm
--rebuilddb:重建数据库,一定会重新建立
--initdb:初始化数据库,没有才建立,有就不用建立
七、检验rpm包来源合法性,及软件包完整性;
rpm -K 软件包.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:导入**文件
就是通过这些基本的功能,RPM实现的对与软件包的管理,但是linux软件有很多是存在在依赖关系的,例如我们需要安装X软件,就必须先安装Y软件,而Y软件的安装则又需要安装Z软件,有些更甚至是形成了一个个的依赖环。当这些依赖关系存在的时候我们去安装一个软件,就需要同时安装很多不同的软件。假如说我们强制安装,不去管这些依赖关系,虽然也能够将之安装成功,不过即便是安装成功了也不能够使用。那么解决RPM依赖关系的办法就是YUM。
YUM能够通过分析RPM的标题数据库,根据各软件的相关行制作出属性依赖的解决方案,然后可以自动处理软件的依赖关系。YUM是一个C/S构架的软件,在使用YUM的过程中,你必须给YUM配置一个YUM的服务器也可以称之为YUM仓库。
filelists.xml.gz
当前仓库中所有RPM包的所有文件列表;
other.xml.gz
额外信息,RPM包的修改日志;
primary.xml.gz
所有RPM包的列表;
依赖关系;
每个RPM安装生成的文件列表;
repomd.xml
记录的是上面三个文件的时间戳和校验和;
comps*-.xml: RPM包分组信息
创建完yum服务器之后,我们就需要在yum客户端的配置文件中指向yum服务器所在的地址。
在/etc/yum.repos.d目录下的*.repo文件就是yum客户端的配置文件
[Repo_name]
name=Description(描述信息)
baseurl=仓库地址
ftp://
http://
file:///
enabled={1|0}
gpgcheck={1|0}
gpgkey=file:///
yum命令
list:列表 支持通配符
all:
available:所有可用的,仓库中有但尚未安装的
installed:已经安装的
updates:可用的升级
clean:清理缓存
packages 只清理rpm包
headers 头部信息
metadata 元数据文件
dbcache 本地rpm包的库缓存
all 清除所有
repolist:yum仓库列表
all所有
enabled可用
Disabled
Yum的安装
yum install PACKAGE_NAME
yum
-y:自动回应yes安装
--nogpgcheck: 不做gpg检查
update: 升级
update_to: 升级为指定版本
remove|erase:卸载 会将依赖的软件也同时卸载
info:显示信息
provides| whatprovides:查看指定的文件或特性是有哪个包安装生成的;
groupinfo:显示yum组信息
groupinstall:安装yum组
search:查找
localinstall:本地yum安装
--nogpgcheck: 不做gpg检查
创建yum仓库:
1、createrepo 仓库地址
2、指定yum客户端配置文件
编译安装的三步骤:
前提,准备开发环境(编译环境)
安装“Development Tools”“Development Libraries”
# tar
# cd
# ./configure
--help
--prefix=/path/to/somewhere 安装路径
--sysconfdir=/PATH/TO/CONFFILE_NAME 配置文件路径
功能:1、让用户选定编译特性;2、检查编译环境
# make
# make install
以安装apache为例:
# tar xf httpd-2.2.16.tar.bz2
# cd httpd-2.2.16
# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd
# make
# make install
# cd /usr/local/apache
在安装完软件之后,软件还是不能够直接使用的,接下来我们就需要:
1、修改PATH环境变量,以能够识别此程序的二进制文件路径;
在/etc/profile.d/目录建立一个以httpd.sh文件,在里面定义export PATH=$PATH:/usr/local/apache/bin
2、添加系统搜索库文件的路径
在/etc/ld.so.conf.d/中创建以httpd.conf的文件,而后包要增添的路径直接写至此文件中;
# ldconfig 通知系统重新搜索库文件
-v:显示重新搜索库的过程
3、头文件:输出给系统
默认在:/usr/include
增添头文件搜寻路径,使用链接进行;
4、man文件路径:默认安装在--prefix指定的目录下的man目录: /usr/share/man(/etc/man.conf中修改配置文件)
在/etc/man.conf中添加一条MANPATH
最后启动apache:
apachectl start
查看开启状态
转载于:https://blog.51cto.com/yhwhzhang/1156063