Linux中包管理工具
Posted bailandecheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中包管理工具相关的知识,希望对你有一定的参考价值。
在linux的使用过程中我们难免需要下载文件,但下载的文件多数是以包的形式,所以我们就需要知道如何去管理这些包
在Centos系统上系统自带有rpm命令来管理程序包,可以对这些包进行安装、卸载、升级、查询、校验、数据库维护等操作,除了rpm,我们常用的还有yum,dnf等包管理工具
一.rpm
1. rpm的安装功能
格式:rpm {-i|--install} [install-options] PACKAGE_FILE…
rpm -i 安装
-iv 显示安装过程
-ivv 显示安装详细过程
-ivh 显示过程及安装进度百分比
--test 仅测试,并不真正安装
--nodeps 在安装或卸载时忽略依赖性
--replacepkgs重复安装已安装过的包,文件覆盖
--replacefiles将要安装包的部分文件与其他已安装的包文件冲突,可继续安装,文件不覆盖
--oldpackage 已安装过新版本,现在装旧版本
--force 等同于 --replacepkgs, --replacefiles, and --oldpackage.
--noscripts 安装时不执行包中自带的脚本
--force: 强制安装
2. rpm的升级功能
格式:rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
rpm -U(upgrade)vh:有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”
-F(freshen)vh:有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作
rpm的升级操作实质上是安装新的包,并把原来安装的文件进行删除操作,所以在对内核进行升级时建议使用ivh选项,在安装新的内核的同时保留原来的内核,以防止出现升级后原来内核被删除,升级的内核无法使用的情况
3. rpm的包查询功能
格式:rpm {-q|--query} [select-options] [query-options]
rpm -q 查询指定包是否安装
-qa: 查询所有包
-qi:查询指定包的详细信息
-ql: 打印包安装的文件列表
-qf: 查看指定的文件由哪个程序包安装生成
-qp:针对尚未安装的程序包文件做查询操作
-q --provides: 查看指定包提供了哪些CAPABILITY -a --provides 查看所有CAPABILITY
-q --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供也可以与-f 相同查看文件由哪个程序包安装生成
-q --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
-q --changelog:查看rpm包的changelog
-q --scripts:查看程序包自带的脚本
4. rpm的包卸载功能
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
一般情况下使用rpm -e 包名就可以卸载一个包了
--nodeps 忽略依赖关系
--test 测试卸载
--allmatches 表示如果一个程序包同时安装多个版本,则次选项一次全部卸载之
5. rpm的包校验功能
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs文件大小
M Mode differs (includes permissions and file type)文件权限
5 digest (formerly MD5 sum) differs文件摘要信息
D Device major/minor number mismatch设备文件的主/次设备号
L readLink(2) path mismatch软链接变化
U User ownership differs所属用户
G Group ownership differs所属组
T mTime differs文件的 mtime
P capabilities differ
rpm -K|checksig rpmfile 检查包的完整性和签名
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
二.yum
yum: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具。yum将大量rpm包及其相关的元数据文件存放到一个仓库中,在我们安装一个包时,自动搜索仓库数据,并将这个包所依赖的包一同安装。
1.yum常用命令:
格式:yum [options] [command] [package ...]
显示仓库列表:
yum repolist [all|enabled|disabled] all全部;enabled激活的仓库(默认);disabled未激活的仓库
显示程序包:
yum list 等同yum list all列出全部程序包
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]; available可用的;installed已安装的;updates可更新的
显示的结果: base 未安装的包,来自于base
epel 未安装的包,来自于epel
@base 该包已经安装,且是从base安装的
@anaconda 该包已经安装,且是从操作系统的安装程序anaconda安装的
安装程序包:
yum install package1 [package2] [...] (-y 自动应答为yes)
yum reinstall package1 [package2] [...] (重新安装)
升级程序包:
yum update [package1] [package2] [...]
yum downgrade [package1] [package2] [...] (降级)
检查可用升级:
yum check-update
卸载程序包
yum remove | erase [package1] [package2] [...]
查看程序包information:
yum info [package]
查看指定的特性(可以是某文件)是由哪个程序包所提供,可以是未安装的包:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]默认all
构建缓存:
yum makecac()
搜索以指定的关键字搜索程序包名及summary信息可以模糊搜索:
yum search string1 [string2] [...]
查看指定包所依赖的capabilities:
yum deplist package1 [package2] [...]
查看yum事务历史:
yum history 显示所有的yum历史
yum history [info|list|packages-list|packages-info|
info # 查看某条历史的详细信息,#代表数字用来指定某条历史
redo # 重做某条历史
undo # 撤消某条历史
日志 :/var/log/yum.l
包组管理的相关命令:
yum groupinstall group1 [group2] [...] 安装包组
yum groupupdate group1 [group2] [...] 升级包组
yum grouplist [hidden] [groupwildcard] [...] 列出包所有组
yum groupremove group1 [group2] [...] 删除包组
yum groupinfo group1 [...] 查看指定包组中含有那些包
2. yum仓库的配置
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID] 仓库的真实名字不可重复
name=Some name for this repository 仓库的描述,可以不写,将会用repoid当作name
baseurl=url://path/to/repository/ 仓库路径
enabled={1|0} 激活或禁用仓库,若不写该行,则默认启用
gpgcheck={1|0} 是否在安装包是检测gpg签名,默认检测,即为1
gpgkey=URL 指定gpg key的路径
enablegroups={1|0}
failovermethod={roundrobin|priority}
roundrobin:意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
三. dnf
dnf是新一代的RPM软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,他取代了YUM,正式成为 Fedora 22 的包管理器。DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。
DNF 发行日期是2015年5月11日。 DNF 包管理器(包括在他之前的所有版本) 都大部分采用 Pathon 编写,发行许可为GPL v2
dnf的安装可直接使用yum install dnf来安装
关于dnf的使用,dnf继承了yum的命令,使用方法同yum相同
以上是关于Linux中包管理工具的主要内容,如果未能解决你的问题,请参考以下文章
除了标准库中包含的工具之外,Linux 上的 Python 还存在哪些分析工具?