玩转包管理工具

包管理

随着我们在Linux上花费更多的时间,我们看到它的软件格局非常动态。事情在不断变化。大多数顶级Linux发行版本每六个月发布一次新版本,并且每天都会进行许多单独的程序更新。为了跟上软件的飞速发展,我们需要良好的软件包管理工具

在本文中,我们将介绍一些用于软件包管理的命令行工具。尽管所有主要发行版都提供了功能强大且复杂的图形程序来维护系统,但是了解命令行程序也很重要。他们可以执行许多(或不可能)图形任务完成的任务。

包装系统

不同的发行版使用不同的包装系统,通常,用于一个发行版的包装与另一发行版不兼容。 大多数发行版都属于包装技术的两个阵营:Debian“.deb”阵营和Red Hat“ .rpm”阵营。 有一些的例外,例如GentooSlackwareForesight,但大多数无外乎这两种:
在这里插入图片描述
几乎所有用于Linux系统的软件都可以在Internet上找到。 大部分将由供应商以软件包文件的形式提供,其余将以可手动安装的源代码形式提供。

打包文件

软件包文件是构成软件包的文件的压缩集合。一个包可能包含许多程序和支持这些程序的数据文件。软件包文件还包含有关软件包的元数据,例如软件包及其内容的文本描述。此外,许多软件包都包含安装前和安装后脚本,这些脚本在软件包安装之前和之后执行配置任务。

软件包文件是软件包维护者创建的,通常是(但并非总是)发行商的雇员。软件包维护者从上游提供程序(程序的作者)以源代码的形式获取软件,对其进行编译,并创建软件包元数据和任何必要的安装脚本。软件包维护者通常会对原始源代码进行修改,以改善程序与Linux发行版其他部分的集成。

软件仓库

尽管某些软件项目选择执行自己的打包和分发,但当今大多数软件包都是由分发供应商和感兴趣的第三方创建的。在中央存储库中,分发包的用户可以使用软件包,其中可能包含成千上万个软件包,每个软件包都是专门为分发而构建和维护的。

发行版可以为软件开发生命周期的不同阶段维护几个不同的存储库。例如,通常会有一个“测试”存储库,其中包含刚刚构建的包。发行版通常会有一个“开发”存储库,该存储库中保存着要包含在发行版下一个主要版本中的在制品软件包。

发行版可能还具有相关的第三方存储库。由于法律原因(例如专利或DRM反规避问题),发行软件中通常不包含这些软件。也许最著名的情况是加密的情况DVD支持,在美国不合法。第三方存储库在不适用软件专利和反规避法律的国家/地区运营。这些存储库通常完全独立于它们支持和使用的发行版他们必须了解它们,并手动将它们包含在软件包管理系统的配置文件中。

依赖关系

程序很少“独立”; 相反,他们依靠其他软件组件的存在来完成工作。 常见的活动(例如输入/输出)由许多程序共享的例程处理。 这些例程存储在称为共享库,它为多个程序提供基本服务。 如果程序包需要共享资源(例如共享库),则称其具有依赖项。 现代软件包管理系统都提供了某种依赖方法,解决方案以确保在安装软件包时也安装了其所有依赖项。

高级打包工具

软件包管理系统通常由两种工具组成:处理诸如安装和删除软件包文件之类的任务的低级工具,以及执行元数据搜索和依赖关系解析的高级工具。 在本文中,我们将研究Debian风格的系统(例如Ubuntu)提供的工具以及最近的Red Hat产品使用的工具。 尽管所有Red Hat风格的发行版都依赖于相同的低级程序(rpm),但它们使用不同的高级工具。 在我们的讨论中,我们将介绍FedoraRed Hat Enterprise LinuxCentOS使用的高级程序yum。 其他Red Hat风格的发行版提供具有可比功能的高级工具。

DistributionslLow-Level ToolsHigh-Level Tools
Debian-Styledpkgapt - get , aptitude
Fedora , Red Hat Enterprise Linux , CentOSrpmyum

查找软件包

在存储库中查找软件包使用高级工具搜索存储库元数据,基于可以基于其名称或说明上。

StyleCommands
Debianapt - get update , apt - cache search search_string
Red Hatyum search search_string

从源安装软件包

StyleCommand
Debianapt - get update , apt - get install package_name
Red Hatyum install package_name

从本地软件包安装软件

StyleCommand
Debiandpkg - - install package_file
Red Hatrpm - i package_file

由于此技术使用低级rpm程序来执行安装,不执行任何依赖项解析。如果rpm发现缺少依赖,rpm将退出并显示错误。

移除包

StyleCommand
Debianapt - get remove package_name
Red Hatyum erase packages_name

Example:

[root@iZerb5rob3dcf6Z ~]# yum insatll nginx
[root@iZerb5rob3dcf6Z ~]# yum erase nginx

从仓库升级

StyleCommand
Debianapt - get update , apt - get upgrade
Red Hatyum update

从包文件升级

StyleCommand
Debiandpkg - - install package_file
Red Hatrpm - U package_file

列出已安装的软件包

StyleCommand
Debiandpkg - - list
Red Hatrpm -qa

Example:

[root@iZerb5rob3dcf6Z ~]# rpm -qa
audit-2.8.5-4.el7.x86_64
setup-2.8.71-10.el7.noarch
parted-3.1-31.el7.x86_64
ncurses-libs-5.9-14.20130511.el7_4.x86_64
......

确认包是否安装

StyleCommand
Debiandpkg - - status package_name
Red Hatrpm -a package_name

显示已安装软件包信息

StyleCommand
Debianapt - cach show package_name
Red Hatyum info package_name
[root@iZerb5rob3dcf6Z ~]# yum info openssh-clients-7.4p1-21.el7.x86_64
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
已安装的软件包
名称    :openssh-clients
架构    :x86_64
版本    :7.4p1
发布    :21.el7
......

查找哪个包安装了文件

StyleCommand
Red Hatrpm - af file_name
Debiandpkg - - search file_name

示例:要查看哪个软件包在Red Hat系统上安装了/usr/bin/vim文件:

[root@iZerb5rob3dcf6Z ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.629-6.el7.x86_64

总结

更过精彩不容错过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值