Linux程序包管理之RPM、YUM
一、程序包管理工具
1.程序包制作流程
程序源码预处理后进行编译,编译成目标代码,然后汇编成二进制代码,最后将源程序所用的库代码与目标代码合并,最终形成可执行的二进制代码。
2.程序包管理工具
一般情况下一个程序不止一个二进制程序,可能存在配置文件,帮助文档等相应文件,这时候我们就需要一个打包软件将程序包及相关组件进行打包,此时就需要使用程序包管理工具。
程序包管理器功能:
把二进制程序、库文件、配置文件、帮助文件打包成一个文件;从而更方便地实现程序包的安装、升级、卸载和查询等管理操作
3.常用程序包管理工具
后端工具:
Debian:工具dpt, dpkg;包名 ".deb"
RedHat:工具 rpm ;包名 ".rpm"
前端工具:自动解决依赖关系;
RHEL系列: yum
Debian: apt-get (apt-cache)
SUSE:: zypper
Fedora : dnf
二、RPM命令管理程序包
1.什么是RPM
RPM是一个开放的软件包管理器,全称是Redhat Package Manager,它工作于Red Hat Linux以及其它Linux系统,成为了Linux中公认的软件包管理标准。
2.RPM的命名格式
name-version-release-release.arch.rpm
包名-主版本号.次版本号.发行号.arch.rpm
主版本号:软件内容发生重大改进会修改主版本号
次版本号:软件内容的某个子功能发生重大变化会修改次版本号
发行号:修正了部分bug,调整了一点功能会修改发行号
arch:表示为arch平台架构
rpm:软件包扩展名
3.RPM常用命令
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
查询:
rpm {-q|--query} [select-options] [query-options]
[select-options]:
PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a, --all:查询所有已经安装过的包;
-f FILE:查询指定的文件由哪个程序包安装生成;
-p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
[query-options]
--changelog:查询rpm包的changlog;
-l, --list:程序安装生成的所有文件列表;
-i, --info:程序包相关的信息,版本号、大小、所属的包组等;
-c, --configfiles:查询指定的程序包提供的配置文件;
-d, --docfiles:查询指定的程序包提供的文档;
--provides:列出指定的程序包提供的所有的CAPABILITY;
-R, --requires:查询指定的程序包的依赖关系;
--scripts:查看程序包自带的脚本片断;
安装:rpm {-i|--install} [install-options] PACKAGE_FILE ...
常规选项:
-v:verbose,详细信息
-vv:更详细的输出
安装选项:
-h:hash marks输出进度条;每个#表示2%的进度;
--test:测试安装,检查并报告依赖关系及冲突消息等;
--nodeps:忽略依赖关系;不建议;
--replacepkgs:重新安装
升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U:升级或安装;
-F:升级
rpm -Uvh PACKAGE_FILE ...如果装有老版本的,则升级;否则,则安装
rpm -Fvh PACKAGE_FILE ...如果装有老版本的,则升级;否则,则退出
--oldpackage:降级;
--force:强制升级;
注意:
(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
(2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
卸载:
rpm {-e|--erase}[--allmatches][--nodeps][--noscripts] [--test] PACKAGE_NAME ...
-e :卸载
--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式
校验:
rpm {-V|--verify} PACKAGE_FILE ... 无输出信息即为正常、
数据库重建:
rpm管理器数据库路径:/var/lib/rpm/,查询操作是通过此处的数据库进行;
rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
--initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
三、YUM程序包管理
YUM在rpm的基础上很好的解决了软件包之间的依赖关系。 YUM是一种基于C/S架构的服务,需要Server和Client来进行使用,即yum仓库和本地的yum工具。
1.YUM仓库(即服务端配置):
yum仓库可以是本地文件、ftp服务器和http服务器。yum仓库的配置文件即为YUM的元数据文件,元数据文件需要存放在一个叫repodata的目录下面,其目录和组成yum众多rpm包需要同处于同一个目录下(在此目录下可用createrepo命令创建本地yum仓库)。
primary.xml.gz:定义了当前仓库中所有的rpm包列表以及各包之间的依赖关系和每个软件包安装生成的文件列表
filelists.xml.gz:当前仓库中所有RPM包的文件列表
other.xml.gz:额外信息,rpm包的修改日志
repomd.xml:记录的是上面三个文件的时间戳和校验和
comps.xml:RPM包分组信息
2.YUM本地工具(即客户端配置):
客户端配置文件在/etc/yum.repos.d/*.repo文件内进行定义,可以定义多个.repo文件,也可以在一个repo文件定义多个yum服务器,其格式如下:
[RepositoryID]
name=Some name for this repository
baseurl=yum仓库路径
enabled={0|1}:是否启用此仓库,默认不写的时候是启用
gpgcheck={0|1}:校验文件的完整性
yum仓库的路径有三种:
ftp服务器: ftp://
http服务器:http://
本地文件 : file:///
3.YUM常用命令
显示仓库列表:yum repolist
显示程序包:
yum list:查看yum列表
all:默认选项,会列出所有的rpm包
available:列出仓库中未安装的包
installed:列出显示已经安装的软件
updates:列出可以升级的软件包
yum clean:清除缓存
安装程序包:
yum install Package
yum �y install Package直接自动完成软件的安装
yum reinstall Package 重新安装
升级程序包:
update Package 升级软件包
downgrade Package (降级)
检查可用升级:
check-update
卸载程序包:
remove | erase Package
查看程序包information:
yum info Package
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] [...]
4.YUM的组管理命令
yum grouplist :查看组,包括安装或未安装的
yum groupinstall GROUPNAME :安装组,注意如果组名中间有空格,需要使用””
groupinfo 组名:显示组包含包信息(如果组名中间有空格,使用””)
groupremove :删除组
四、源码程序安装
1.通过“包组”提供开发组件
CentOS 6: "Development Tools", "Server Platform Development",
第一步:configure脚本
选项:指定安装位置、指定启用的特性--help: 获取其支持使用的选项
选项分类:
安装路径设定:
--prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
System types:
Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可选包
--with-PACKAGE[=ARG]
--without-PACKAGE
第二步:make
第三步:make install
安装后的配置:
1)导出二进制程序目录至PATH环境变量中;
编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
2)导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中;让系统重新生成缓存:
ldconfig [-v]
3)导出头文件
基于链接的方式实现:
ln -sv
4)导出帮助手册
编辑/etc/man.config文件
添加一个MANPATH
2.通过编译、安装web服务器来说明编译安装的相关过程
1.解压源码包
tar xf httpd-2.2.29.tar.bz2并进入解压包目录
2.配置参数、编译、安装
3.添加环境变量
vim /etc/profile.d/httpd.sh ,添加如下内容
export PATH=$PATH:/usr/local/apache/bin //增加环境变量
httpd安装完后默认主页面文件路径:/var/www/html/index.html