这篇文章主要介绍“Linux软件安装和包管理工具有哪些”,在日常操作中,相信很多人在Linux软件安装和包管理工具有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux软件安装和包管理工具有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一般来说,在Linux系统中有三种安装软件的方式:源码编译安装,可执行文件(软件包)安装 以及 前端工具依赖安装。
绝大多数开源软件都是直接以源代码形式发布的,源代码一般会被打成 .tar.gz 的归档压缩文件。对压缩文件进行解压后,获取到的 源代码 需要 编译 成 二进制形式之后才能够运行使用。源代码编译基本流程:
./configure 检查、构建编译环境;
make 对源代码进行编译,一般是调用 Makefile 文件,从中读取指令,生成可执行文件;
make test / make check 对上一步的编译进行检查,确保无错误(有时候没有这一步);
make install 将生成的可执行文件安装到本地;
源代码安装操作复杂,编译时间长,极易出现问题,依赖关系复杂且需手动安装依赖。
由于源代码安装的不便利,软件包平台会将代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。针对不同的系统设定不同的包,例如针对Debian和Ubuntu设计了dpkg软件包,针对Red Hat和CentOS设计了RPM软件包等。
软件包安装虽然可以直接对软件包运行命令,但仍然需要下载软件包到本地,且需要手动处理依赖关系,比较不便。
为了解决软件包安装的安装包和依赖问题,设计了前端工具,例如 yum 是 rpm的前端工具,apt-get 是 dpkg 的前端工具。前端工具引入了仓库(可以是本地的,也可以是远程的)概念,对软件包进行管理,同时在软件安装过程中自动解决依赖问题。
软件包管理系统是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。
在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发行版中安装软件的过程。
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
命令查看更多。
apt命令是一个强大的命令行工具,执行 安装新的软件包,更新已有的软件包,更新软件包列表索引 甚至 更新整个Ubuntu系统等操作。apt-get会解决和安装模块的依赖问题,并会查询软件仓库,但不会安装本地的deb文件。apt是建立在dpkg之上的软件管理工具。以下是一些常用方法
# 更新 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 包,包括已经安装的软件包
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 查看该包被哪些包依赖
/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操作的日志将保存至该文件
执行 apt-get update
程序分析 /etc/apt/sources.list
和 /etc/apt/sources.list.d
自动连网寻找 list 中对应的 Packages/Sources/Release 列表文件,如果有更新则下载之,存入 /var/lib/apt/lists/ 目录
apt-get install 相应的包 ,下载并安装。
扫描本地的软件更新列表,也就是 apt-get update 时保存的 /var/lib/apt/lists 文件
软件包依赖检查,找到需要安装的软件包所依赖的所有包
从软件源中的镜像站中下载 deb 包
解压软件包,并自动完成软件的安装和配置
备份原先的 source.list 文件,方便回滚
修改 sources.list 文件
sudo apt-get update 更新源
应该先执行 apt-get update 再执行 apt-get upgrade。它们中的任何一个都不会自动地执行另一个。
apt-get update
更新可用的软件包列表以及版本。但不对软件包进行安装或升级。
apt-get upgrade
将实际地安装你所拥有的软件包的更新版本。当你更新完软件清单后,软件包管理器就知道你已安装的软件中哪些有可用的更新,这就是为什么一开始要执行update的原因。
可以联合执行 apt-get update && apt-get upgrade
不用命令行选项启动 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 菜单的详情。
你也可以 Aptitude 作为命令行工具,和 apt类似。
安装
sudo aptitude install packageName
卸载
sudo aptitude remove packageName
两者都是对.deb文件进行安装、卸载等操作。
dpkg需手动下载.deb文件到本地进行操作,而apt作为前端工具,会直接从远程仓库中获取下载。
dpkg不能处理依赖问题,需要手动一个个安装好,而apt会自动处理,并一次性安装好。
Linux发行版经常使用不通的软件包管理工具,而 基于 Red Hat的发行版使用 RPM
(Red Hat Package Manager) 和YUM/DNF
(Yellow Dog Updater, Modified/Dandified YUM).
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
图一
图二
图三
[ 编者注: 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 <id>
YUM
提供了很多软件包管理选项,可以通过man yum
and yum –help
来查看。另外可参考文档。
RPM 和 YUM 都可以对 .rpm 软件包进行管理。
RPM需要将 .rpm安装包 下载到本地之后才可以进行安装,而YUM只需要指明要安装的软件名称,就会自动地从指定的服务器自动下载并进行安装。
当遇到依赖问题时,RPM需要自己手动地一个个下载安装,而YUM会自动处理依赖性关系,并且一次安装所有依赖的软体包。
到此,关于“Linux软件安装和包管理工具有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。