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   -Uupgradevh:有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”

         -Ffreshenvh:有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作

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 Modifierrpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,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

yumrepo配置文件中可用的变量:

$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 发行日期是2015511日。 DNF 包管理器(包括在他之前的所有版本) 都大部分采用 Pathon 编写,发行许可为GPL v2

 

dnf的安装可直接使用yum install dnf来安装

 

关于dnf的使用,dnf继承了yum的命令,使用方法同yum相同

以上是关于Linux中包管理工具的主要内容,如果未能解决你的问题,请参考以下文章

除了标准库中包含的工具之外,Linux 上的 Python 还存在哪些分析工具?

Linux之网络管理虚拟网卡

Linux内核分析——进程的描述和进程的创建

《Linux内核--分析Linux内核创建一个新进程的过程 》 20135311傅冬菁

linux--软件包管理工具

Linux软件管理 - YUM工具