这篇文章主要介绍“Linux软件安装和包管理工具有哪些”,在日常操作中,相信很多人在Linux软件安装和包管理工具有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux软件安装和包管理工具有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联建站不只是一家网站建设的网络公司;我们对营销、技术、服务都有自己独特见解,公司采取“创意+综合+营销”一体化的方式为您提供更专业的服务!我们经历的每一步也许不一定是最完美的,但每一步都有值得深思的意义。我们珍视每一份信任,关注我们的成都做网站、成都网站制作质量和服务品质,在得到用户满意的同时,也能得到同行业的专业认可,能够为行业创新发展助力。未来将继续专注于技术创新,服务升级,满足企业一站式全网营销推广需求,让再小的品牌网站设计也能产生价值!
0 前言
一般来说,在Linux系统中有三种安装软件的方式:源码编译安装,可执行文件(软件包)安装 以及 前端工具依赖安装。
0.1 源码编译安装
绝大多数开源软件都是直接以源代码形式发布的,源代码一般会被打成 .tar.gz 的归档压缩文件。对压缩文件进行解压后,获取到的 源代码 需要 编译成 二进制形式之后才能够运行使用。源代码编译基本流程:
./configure 检查、构建编译环境;
make 对源代码进行编译,一般是调用 Makefile 文件,从中读取指令,生成可执行文件;
make test / make check 对上一步的编译进行检查,确保无错误(有时候没有这一步);
make install 将生成的可执行文件安装到本地;
源代码安装操作复杂,编译时间长,极易出现问题,依赖关系复杂且需手动安装依赖。
0.2 软件包安装
由于源代码安装的不便利,软件包平台会将代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。针对不同的系统设定不同的包,例如针对Debian和Ubuntu设计了dpkg软件包,针对Red Hat和CentOS设计了RPM软件包等。
软件包安装虽然可以直接对软件包运行命令,但仍然需要下载软件包到本地,且需要手动处理依赖关系,比较不便。
0.3 前端工具安装
为了解决软件包安装的安装包和依赖问题,设计了前端工具,例如 yum 是 rpm的前端工具,apt-get 是 dpkg 的前端工具。前端工具引入了仓库(可以是本地的,也可以是远程的)概念,对软件包进行管理,同时在软件安装过程中自动解决依赖问题。
1 软件包管理 Package Management
软件包管理系统是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。
在Linux发行版中,几乎每一个发行版都有自己的软件包管理系统。常见的有:
dpkg: 全称 Debian Package,原先被Debian使用,现在也被Ubuntu使用(注:Ubuntu源于Debian,最早于2004年是作为Debian的一个分支出现)。用来管理 .deb 格式软件包,是第一个拥有广泛知晓的依赖解决方案工具APT的软件包管理工具。aptitude,基于 ncurses 供APT使用的前端,也同样是一个为Debian类系统的软件包管理器。
RPM: 全称 Redhat Package Manager,由Red Hat 创建。RPM 是 Linux标准的基础打包格式,并且是一系列其他工具的基础,包括 apt4rpm, 红帽的 up2date, Mageia的urpmi, openSUSE的 ZYpp(zypper), PLD Linux的 poldek, Fedora的DNF 和 YUM (被 Red Hat 企业版Linux 和 Yellow Dog Linux使用)。也就是说,这些都是它的前端。
其他软件包管理系统有ArchLinux中使用的Pacman,Gentoo使用的基于源代码的Portage,FreeBSD下的pkg,Mac系统下的Homebrew等。
使用软件包管理系统将大大简化在Linux发行版中安装软件的过程。
2 dpkg
2.1 dpkg (Debian Package)
dpkg本身是一个底层的工具,可以安装,移动和构建软件包,但是不像其他的软件包管理系统,它只能用来安装本地的.deb文件,不能自动地从远程包仓库下载包以及处理包的依赖的关系,且不会关心软件仓库内的软件。以下是使用dpkg来管理本地安装的软件包:
列出在系统软件包数据库中的所有软件,包括所有的软件包,安装的、未安装的,也可用 grep 来指定列出某些包:
dpkg -l | grep packageName
列出被软件安装的文件
dpkg -L keyword
如果你不确定某个文件是被哪个软件包所安装,
dpkg -S
会告诉你:dpkg -S /etc/host.conf base-files: /etc/host.conf
上面的例子说明
/etc/host.conf
属于 base-files 软件包。注意
很多文件是在软件包安装过程中自动产生的,尽管它们存在文件系统中,但
dpkg -S
也可能不知道这些文件属于哪个软件包。安装本地
.deb
文件示例:
sudo dpkg -i zip_3.0-4_amd64.deb
卸载软件包示例:
sudo dpkg -r zip
警告:
使用dpkg去卸载软件包,在大多数情况下,是不推荐使用的。更好的方法,是使用一个软件包管理器去处理依赖问题,确保系统处在一个持续可用的状态。例如,使用
dpkg -r zip
将卸载 zip 软件包,但是其他已安装的依赖于这个软件包的软件就可能用不了了。
使用 man dpkg
命令查看更多。
2.2 apt (Advanced Packaging Tool)
apt命令是一个强大的命令行工具,执行 安装新的软件包,更新已有的软件包,更新软件包列表索引 甚至 更新整个Ubuntu系统等操作。apt-get会解决和安装模块的依赖问题,并会查询软件仓库,但不会安装本地的deb文件。apt是建立在dpkg之上的软件管理工具。以下是一些常用方法
2.2.1 apt-get命令
# 更新 sudo apt-get update 更新源 sudo apt-get dist-upgrade 升级系统到相应的发行版(根据 source.list 的配置) sudo apt-get upgrade 更新已安装的包 # 安装 sudo apt-get install packageName1 [packageName2] 安装包 sudo apt-get install packageName --reinstall 重新安装包 sudo apt-get -f install packageName 修复安装 sudo apt-get build-dep packageName 安装相关的编译环境 # 删除 sudo apt-get remove packageName 删除包 sudo apt-get --purge remove packageName 删除包,包括配置文件等 # 其他 apt-get check 检查是否有损坏的依赖 sudo apt-get source packageName 下载该包的源代码 apt-get autoclean 删除你已经删掉的软件的 deb 包 apt-get clean 删除所有的 deb 包,包括已经安装的软件包
2.2.2 apt-cache命令
sudo apt-cache search packageName 搜索软件包 sudo apt-cache show packageName 获取包的相关信息,如说明、大小、版本等。 sudo apt-cache showpkg packageName 显示软件包的大致信息 sudo apt-cache depends packageName 了解该包依赖哪些包 sudo apt-cache rdepends packageName 查看该包被哪些包依赖
2.2.3 apt文件
/var/lib/dpkg/available 软件包的描述信息, 其中包括当前系统中已安装的和未安装的软件包. /etc/apt/sources.list 记录软件源的地址,修改此文件可配置软件源 /var/cache/apt/archives 已经下载到的软件包都放在这里( apt-get install 安装软件时,软件包临时存放路径) /var/lib/apt/lists 使用 apt-get update 命令会从/etc/apt/sources.list中下载软件列表,并保存到该目录 /var/log/dpkg.log 所有apt操作的日志将保存至该文件
2.2.4 apt-get update 执行过程
执行 apt-get update
程序分析
/etc/apt/sources.list
和/etc/apt/sources.list.d
自动连网寻找 list 中对应的 Packages/Sources/Release 列表文件,如果有更新则下载之,存入 /var/lib/apt/lists/ 目录
apt-get install 相应的包 ,下载并安装。
2.2.5 apt-get intsall 执行过程
扫描本地的软件更新列表,也就是 apt-get update 时保存的 /var/lib/apt/lists 文件
软件包依赖检查,找到需要安装的软件包所依赖的所有包
从软件源中的镜像站中下载 deb 包
解压软件包,并自动完成软件的安装和配置
2.2.6 修改软件源 /etc/apt/sources.list
备份原先的 source.list 文件,方便回滚
修改 sources.list 文件
sudo apt-get update 更新源
2.2.7 apt-get update 和 apt-get upgrade 的区别
应该先执行 apt-get update 再执行 apt-get upgrade。它们中的任何一个都不会自动地执行另一个。
apt-get update
更新可用的软件包列表以及版本。但不对软件包进行安装或升级。apt-get upgrade
将实际地安装你所拥有的软件包的更新版本。当你更新完软件清单后,软件包管理器就知道你已安装的软件中哪些有可用的更新,这就是为什么一开始要执行update的原因。可以联合执行
apt-get update && apt-get upgrade
2.3 aptitude
2.3.1 菜单结构
不用命令行选项启动 Aptitude 将会展示一个菜单结构,基于文本的前端 APT系统。很多共同的软件包管理方法,例如安装,卸载和升级,都可以以 Aptitude 加一个一般是小写字母的单词命令进行执行。
与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
Aptitude 最适合于在非图像界面终端环境中使用,可在终端中输入:
sudo aptitude
当 Aptitude 启动时,你将在屏幕顶部看到一个菜单栏,下面有两个窗口。上面的窗口包括软件包目录,例如 新的软件包 和 未安装的软件包。底下的窗口包含软件包和软件包路面的相关信息。
使用 Aptitude用户界面 来做软件包管理非常简单:
安装软件: 使用 键盘方向键 + ENTER 按键,在 未安装软件包 目录中定位到你想要安装的软件。当软件包高亮时,按 + 键。此时,软件包将变成 绿色 ,意味着它已被标记成要安装了。此时按下 g键,将展示一段软件包动作的小结。再按 g键,此时将开始软件包的下载和安装。当完成后,按 ENTER键 返回菜单。
卸载软件: 使用 键盘方向键 + ENTER 按键,在 已安装软件包 目录中定位到你想要卸载的软件。当软件包高亮时,按 - 键。此时,软件包将变成 粉红色 ,意味着它已被标记成要被卸载了。此时按下 g键,将展示一段软件包动作的小结。再按 g键,此时将开始软件包的卸载。当完成后,按 ENTER键 返回菜单。
更新软件包索引: 按 u键 即可。
更新软件包: 先执行以上更新软件包索引的操作,再按 U键 去标记所有你想更新的软件包。此时按下 g键,将展示一段软件包动作的小结。再按 g键,此时将开始软件包的下载和安装。当完成后,按 ENTER键 返回菜单。
展示在顶部窗口的软件包信息的第一列,当在查看当前软件包状态时,可使用以下快捷键:
i: 已安装软件 c: 软件包未安装,但包配置文件仍存在系统中 p: 已从系统中清除 v: 虚拟软件包 B: 已破损软件包 u: 解压出来的文件,但安装包仍未配置 C: 半配置的:配置失败需要解决 H: 半安装的:卸载失败需要解决
为了退出 Aptitude,按 q键 并确认即可。按 F10键 查看 Aptitude 菜单的详情。
2.3.2 命令行
你也可以 Aptitude 作为命令行工具,和 apt类似。
安装
sudo aptitude install packageName
卸载
sudo aptitude remove packageName
2.4 dpkg 和 apt 的关系
两者都是对.deb文件进行安装、卸载等操作。
dpkg需手动下载.deb文件到本地进行操作,而apt作为前端工具,会直接从远程仓库中获取下载。
dpkg不能处理依赖问题,需要手动一个个安装好,而apt会自动处理,并一次性安装好。
3 RPM (Red Hat Package Manager)
Linux发行版经常使用不通的软件包管理工具,而 基于 Red Hat的发行版使用 RPM
(Red Hat Package Manager) 和YUM/DNF
(Yellow Dog Updater, Modified/Dandified YUM).
3.1 RMP (Red Hat Package Manager)
RPM
是在 Red Hat企业版Linux基础的发行版中的一个流行的软件包管理工具。你可以使用 RPM
安装、卸载和查询软件安装包。虽然RPM
不能像 YUM
一样进行软件包依赖管理,但仍会提示安装所需要的软件包清单。 一个 RPM
软件包由 文件 和 元数据存档 组成,其中元数据包括帮助脚本,文件属性 和 软件包信息。
RPM
维护了一个已安装软件包的数据库,这提供了强大而快速的查询功能。RPM
数据库在 /var/lib
目录里,文件以 __db*
命名。
RPM
有很多基本模式:查询、验证、安装、升级、清除、展示查询标签、展示配置等,要执行软件包管理任务,必须选择其中之一。每个模式都有自己的一套选项。可通过命令 man rpm
进行查看。以下是一些常用的模式
模式 | 描述 |
-i | 安装软件包 |
-U | 升级软件包 |
-e | 清除软件包 |
-V | 验证软件包 |
-q | 查询软件包 |
这是一些常用选项:
选项 | 目的 |
-? | --help | 输出帮助信息 |
--version | 输出版本信息 |
-v | 输出冗余信息 |
命令示例
# 安装 rpm -i package-file # 升级 rpm -U package-file # 安装,输出冗余信息,并用#符号(hash)展示进度,见图一 rpm -ivh package-file # 查询,选项a表示查询所有的(all)已安装软件包,见图二 rpm -qa vim-enhanced # 移除,见图三 rpm -evh vim-enhanced
图一
图二
图三
3.2 Yellow Dog Updater, Modified (YUM) / Dandified yum (DNF)
[ 编者注: DNF 或 Dandified YUM 是Red Hat 企业版Linux 8, CentOS 8, Fedora 22(以及它们为基础的发行版)更新后默认的软件包管理器。 一般来说,命令选项是一样的。这里着重介绍YUM ]
YUM
是在Red Hat 企业版Linux中 首要的 软件包管理工具,用来对软件包进行安装、更新、卸载和管理。 YUM
会在安装、更新、卸载软件包时处理软件依赖问题。YUM
可以从系统中 已安装的仓库 以及 .rpm
软件包中安装。YUM
的主要配置文件在 /etc/yum.conf
文件中,所有的仓库在 /etc/yum.repos.d
目录中。
命令格式
yum -选项 命令 yum -option command
以下是常用的命令:
命令 | 功能 |
yum install | 安装指明的软件包 |
remove | 移除指明的软件包 |
search | 用关键词搜索软件包元数据 |
info | 列举描述信息 |
update | 更新每个软件包到最新版本 |
repolist | 列出仓库列表 |
history | 展示过去的操作,会提供这些操作在哪天执行了哪些命令 |
以下是常用的选项:
选项 | 功能 |
-C | 从系统缓存中运行 |
--security | 包括给安全问题提供了解决方案的软件包 |
-y | 对所有Yes/No问题回答Yes |
--skip-broken | 跳过软件包引起的问题 |
-v | 展示冗余信息 |
你可以通过使用 history
命令来取消、回滚某些操作。格式如下:
yum history undo
YUM
提供了很多软件包管理选项,可以通过man yum
and yum –help
来查看。另外可参考文档。
3.3 RPM 和 YUM的关系
RPM 和 YUM 都可以对 .rpm 软件包进行管理。
RPM需要将 .rpm安装包 下载到本地之后才可以进行安装,而YUM只需要指明要安装的软件名称,就会自动地从指定的服务器自动下载并进行安装。
当遇到依赖问题时,RPM需要自己手动地一个个下载安装,而YUM会自动处理依赖性关系,并且一次安装所有依赖的软体包。
到此,关于“Linux软件安装和包管理工具有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
名称栏目:Linux软件安装和包管理工具有哪些
URL地址:http://scgulin.cn/article/iiispi.html