一、前言介绍
软件包即程序包
程序包管理
关键词:rpm程序包管理、YUM仓库管理、源码编译安装
程序包管理:
将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级、和校验等管理操作
管理程序包的方式:
使用包管理器:rpm
使用前段工具:yum
rpm包含命名方式:
name-VERSION-release.arch.rpm
VERSION:major.minor.release
release.arch:
常见的arch:
x86:i386, i486, i586. i686
x86_64:x64, x86_64, amd64
powerpc:ppc
跟平台无关:noarch
包之间:存在依赖关系
X, Y, Z
二、命令详解
1.rpm
【命令作用】
程序包管理
【命令语法】
rpm [选项] [参数]
【常用选项】
(1)安装:
rpm {-i|--install} --注意花扩符号,必须包含选项[install-options] PACKAGE_FILE ...查询为软件头代表名:tree,安装为整个文件名
-v<verbose> --显示详细过程
rpm {-i|--install}
-h --以显示程序包管理执行进度,每个#表示2%的进度
rpm -ivh PACKAGE_FILE ...
[install-options]
--test --测试安装,但不真正执行安装过程
--nodeps --忽略依赖关系
--replacepkgs --重新安装
--force --强制安装直接代替nodeps和replacepkgs,但是尽量不要忽略依耐性关系
--nosignature --不检查来源合法性
--nodigest --不检查包完整性
秘钥文件:ll /etc/pki/rpm-gpg/
(2)升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrade --安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”
freshen --安装有旧版程序包,则“升级”:如果不存在旧版程序包,则不执行升级操作
[install-options]
--test --测试安装,但不真正执行安装过程
--nodeps --忽略依赖关系
--oldpackage --降级
--fore --强行升级
注意:①不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核
②如果原程序包的配置文件安装后曽被修改,升级时,新版本提供的同一配置文件不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
(3)查询:
rpm {-q|--qurey} [select-options] [query-options]
①[select-options] --挑选选项
-a --所有已安装程序包
-f --查看指定的文件由哪个程序包安装生成
-p /PATH/TO/PACKAGE_FILE --针对尚未安装的程序包文件做查询操作
②[query-options] --查询选项
-c --查询程序的配置文件
-d --查询程序的文档
-i --查询程序的信息
-l --查看指定的程序包安装后生成的所有文件
常见的组合用法:
-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
-qa
(4)卸载:
rpm {-e|--erase} PACKAGE_NAME ...
--test --测试卸载,但不真正执行卸载过程
--nodeps --忽略依赖关系
(5)校验(非常用):
①rpm {-V|--verify} [select-options] [verify-options]
rpm -V FILE
S --文件大小差异
M --权限差异
5 --验证码差异
D --主设备号和次设备号
L --路径差异
U --文件拥有者差异
G --文件拥有组差异
T --修改时间差异
P --特性差异
②包来源合法性验证及完整性验证:
完整性验证: SHA256
来源合法性验证: RSA
③公钥加密:
对称加密:加密、解密使用同一密钥
非对称加密:密钥是成对儿的
③导入所需要公钥:
rpm --import /PATH/FROM/GPG-PUBKEY-FILE导入*
CentOS 7 发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7
(6)数据库维护:
RPM数据库 ll /var/lib/rpm
ll /var/ilb/rpm --查询数据文件
rpm {--initdb|--rebuilddb}
initdb --初始化。如果事先不存在数据库,则新建之;否则,不执行任何操作
rebuilddb --重建。无论当前存在与否,直接重新创建数据库
【参数说明】
指定要操纵的rpm软件包
【命令示例】
2.yum
【命令作用】
YUM(Yellow dog,全称为 Yellow dog Updater,Modified)是一个Fedora和RedHat以及CentOS中的Shell前段软件包管理。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum repository:yum repo
--存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata)
文件服务器:
ftp://
http://
nfs://
file:///
yum 客户端:
配置文件:
/etc/yum.conf --为所有仓库提供公共配置
/etc/yum.repos.d/*.repo --为仓库的指向提供配置
仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为随机挑选
cost=
默认为1000
【命令语法】
yum [选项] [参数]、
【常用选项】
-y<yes> --对所有的提问回答"yes"
-c --指定配置文件
-q --静默模式
-v --详细模式
-d --设置调试等级(0/10)
-e --设置错误等级(0/10)
-R --设置yum处理一个命令的最大等待时间
-C --完全从缓存中运行,而不去下载或者更新任何头文件
【参数说明】
(1)command is one of(命令如下):
install package1 [package2] [...] --安装rpm程序包1 程序包2
update [package1] [package2] [...] --更新rpm程序包1 程序包2
update-to [package1] [package2] [...] --更新程序包1程序包2,。此命令的工作方式类似于“update”,但始终指定要更新的包的版本。
check-update --检查是否有可用的更新rpm软件包
upgrade [package1] [package2] [...]
upgrade-to [package1] [package2] [...]
distribution-synchronization [package1] [package2] [...]
remove | erase package1 [package2] [...] --删除指定的rpm程序包
list [...] --显示程序包的信息
info [...] --显示指定的rpm程序包的描述信息和概要信息
provides | whatprovides feature1 [feature2] [...]
clean [packages | metadata | expire-cache | rpmdb | plugins | all ] --清理yum过期的缓存
makecache
groupinstall group1 [group2] [...] --安装程序组group1和group2
groupupdate group1 [group2] [...] --更新程序组group1和group2
grouplist [hidden] [groupwildcard] [...] --查看可能批量安装的列表
groupremove group1 [group2] [...] --卸载程序组group1和group2
groupinfo group1 [...] --显示程序组group1信息
search string1 [string2] [...] --根据关键字string查找安装包
shell [filename] --进入yum的shell提示符[文件名]
resolvedep dep1 [dep2] [...] --显示rpm程序包1和2的依赖关系
localinstall rpmfile1 [rpmfile2] [...] --安装本地的rpm程序包1和2
(maintained for legacy reasons only - use install)
localupdate rpmfile1 [rpmfile2] [...] --显示本地rpm程序包1和2进行更新
(maintained for legacy reasons only - use update)
reinstall package1 [package2] [...]
downgrade package1 [package2] [...]
deplist [all|enabled|disabled] --显示rpm程序包的所有依赖
version [all | installed | available | group-* | nogroups* | grouplist | groupinfo]
history [info|list|packages-ilst|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
check
help [command]
(2)显示仓库列表:
repolist [all|enabled|disabled]
(3)显示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] [...]
# yum list {available|installed|updates} [glob_exp1] [...]
(4)安装程序包:
install package1 [package2] [...]
reinstall package1 [package2] [...] (重新安装)
(5)升级程序包:
update [package1] [package2] [...]
downgrade package1 [package2] [...] (降级)
(6)检查可用升级:
check-update
(7)卸载程序包:
remove | erase package1 [package2] [...]
(8)查看程序包information:
info [...]
(9)清理本地缓存
clean [pakages | metadata | expire-cache | rpmdb | plugins | all]
(10)构建缓存:
makecache
(11)搜索:
search string1 [string2] [...]
以指定的关键字搜索程序包名及summary信息
(12)查看指定包所依赖的capabilities:
deplist package1 [package2] [...]
(13)查看yum事务历史
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
(14)安装及升级本地程序包:
localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
(15)包组管理的相关命令
groupinstall group1 [group2] [...]
groupupdate group1 [group2] [...]
grouplist [hidden] [groupwildcard] [...]
groupremove group1 [group2] [...]
groupinfo group1 [...]
(16)如何使用光盘当作本地yum仓库
①挂载光盘至某目录,例如/media/cdrom
#mount -r -t iso9660 /dev/cdrom /media/cdrom
②创建配置文件
[DVD]
name=
baseurl=
gpgcheck=
enabled=
(17)yum的命令行选项:
--nogpgcheck --禁止进行gpg check
-y --自动回答为"yes"
-q --静默模式
--disablerepo=repoidglob --临时禁用此处指定的repo
--enablerepo=repoidglob --临时启用此处指定的repo
--noplugins --禁用所有插件
【命令示例】
(1)# yum install -y samba --安装samba服务并且所有的提问默认"yes"
(2)# yum remove -y samba --卸载samba服务并且所有提问默认"yes"
(3)# yum list rpm* --用yum的功能找出以rpm为开头的程序包名称有哪些
(4)# yum clean all --清除yum仓库缓存
(5)# yum makeache --生成yum缓存
3.源码编译安装
前提:准备开发环境(编译环境)
安装软件包组"Development Tools"和"Development Libraries"
C代码编译安装三步骤
./configure:
(1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile
(2)检查依赖到的外部环境
make:
根据makefile文件,构建应用程序
make install
建议:安装前查看INSTALL,README
创建yum仓库:
createrepo [options] <directory>