乐趣区

关于linux:Linux系统下的软件包管理命令汇总使用Linux系统前必备知识

在最开始介绍 Linux 发行版 分类时曾提到过是依照软件包打包格局分为如下三大类:

  • Debian系列:软件包后缀格局为.deb,软件包治理命令为apt
  • Red Hat系列: 软件包后缀格局为.rpm, 软件包治理命令为yumdnfzypper
  • ArchLinux系列:软件包后缀格局为.pkg.tar.zst, 软件包治理命令为pacman
  • GentooLinux系列: 软件包从源代码构建,GentooLinux 为用户提供了大量的应用程序源代码,软件包治理命令工具为emerge

apt 包管理器用法

APT 高级打包工具(英语:Advanced Packaging Tools,缩写为 APT)是 Debian 及其派生的 Linux 软件包管理器。APT 能够主动下载,配置,装置二进制或者源代码格局的软件包,因而简化了 Unix 零碎上管理软件的过程。APT 最早被设计成 dpkg 的前端,用来解决 deb 格局的软件包。当初通过 APT-RPM 组织批改,APT 曾经能够装置在反对 RPM 的系统管理 RPM 包。

  • 装置软件 : apt install <package>
  • 删除软件 : apt remove <package>
  • 查找软件 : apt search <package-name>
  • 更新软件 : apt update
  • 软件源配置文件: /etc/apt/sources.list.d/*.list 自定义软件源配置文件
  • 更新软件源缓存: apt update
  • 清理软件源缓存: 无

yum 包管理器用法

Yum(Yellowdog Updater, Modified), 是由 Duke University 团队批改 Yellow Dog Linux 的 Yellow Dog Updater 开发而成,是一个基于 RPM 包治理的字符前端软件包管理器。可能从指定的服务器主动下载 RPM 包并且装置,能够解决依赖性关系,并且一次装置所有依赖的软件包,毋庸繁琐地一次次下载、装置。被 Yellow Dog Linux 自身,以及 Fedora、Red Hat Enterprise Linux 采纳。

  • 装置软件 : yum install <package>
  • 删除软件 : yum remove <package>
  • 查找软件 : yum search <package-name>
  • 更新软件 : yum update
  • 软件源配置文件: /etc/yum.repos.d/*.repo 自定义软件源配置文件
  • 更新软件源缓存: yum makecache
  • 清理软件源缓存: yum clean all

DNF 包管理器(yum 的下一代代替版)

DNF,全称 Dandified Yum,是 RPM 发行版的软件包管理器 Yellowdog Updater, Modified(yum)的下一代版本。DNF 最早呈现在 Fedora 18 中,并在 Fedora 22、RHEL8 中代替yum。DNF 旨在解决局部 yum 已知的不足之处,包含蹩脚的性能、高内存应用、迟缓的迭代拓扑排序。

简略说下 DNF 代替了 Yum 的次要起因:

  • 宏大而简单的外部代码集,这也是任何一款软件产品倒退到肯定阶段经常要面临的难题,有时候从新实现某一性能要比在它根底上革新要简略的多。
  • Python的终结,Yum是应用 Python 实现的,迁徙到 Python3 可能革新可能有微小的艰难且毫无意义,倒不如从新实现来的简略且更好,最新版本的 DNF 改用 C/C++ 来实现,并将大部分性能封装到了 libdnf 库中,以便对外提供 API。
  • 解决软件包的装置依赖关系的解析速度和性能问题,让安装包更加智能的解析依赖关系。

既然是代替计划,当然用法差别并不大,接下来理解下 DNF 软件包管理器的用法:

  • 装置软件 : dnf install <package>
  • 删除软件 : dnf remove <package>
  • 查找软件 : dnf search <package-name>
  • 更新软件 : dnf update
  • 软件源配置文件: /etc/yum.repos.d/*.repo(配置目录兼容 yum, 实际上yum 命令是 dnf 命令的软链接)
  • 更新软件源缓存: dnf makecache
  • 清理软件源缓存: dnf clean all

当初咱们在 CentOS8 中看到的 yum 其实曾经是 dnf 命令的软链接了。

ZYPPER 包管理器用法

zypperSuSe Linux 分支默认的包管理器工具,采纳了一种称为 布尔可满足性问题 算法计算软件包依赖性问题,简略的来说就是剖析出依赖关系后,将软件依赖包装置选择权和决策权交给用户本人决策。

  • 装置软件 : zypper install <package>
  • 删除软件 : zypper remove <package>
  • 查找软件 : zypper search <package-name>
  • 更新软件 : zypper update
  • 软件源配置文件: /etc/zypp/repos.d/*.repo
  • 更新软件源缓存: zypper refresh
  • 清理软件源缓存: zypper clean

Pacman 包管理器用法

Pacman是一个软件包管理器,作为 Arch Linux 发行版的一部分。它最早由 Arch Linux 的 Judd Vinet 开发。Pacman能够解决装置过程中的依赖问题,主动下载并且装置所有须要的软件包。

最后的 pacman 很慢。这是因为您要援用的镜像服务器与您网络间隔太远,传输速度太慢。
因而,有必要在应用前应用上面命令主动执行镜像优化。

# 测试并抉择提早最低的镜像源地址(通过 - c 参数抉择国家)
$ sudo pacman-mirrors -g -c China

# 更新软件源本地缓存
$ sudo pacman -Sy
  • 装置软件 : pacman -S <package>-Sw选项只下载不装置
  • 降级所有版本比源列表低的包:pacman -Su
  • 删除软件 : pacman -R <package>
  • 查找软件 : pacman -Ss <package>
  • 查找软件 : pacman -Qs <package>(查找本地装置软件)
  • 更新软件 : pacman -U <package>,软件包能够是软件包名字、本地门路,也能够是 URL 地址。
  • 软件源配置文件: /etc/pacman.conf
  • 更新软件源缓存: pacman -Sy
  • 清理软件源缓存: pacman -Sc(清理装置后长期缓存的软件包),-Scc选项彻底清理所有缓存信息。

portage 包治理用法

gentoo 的包管理工具称为 portage。emerge是这个 portage 的字符界面管理工具,图形界面工具还有 portato,porthole,kuroo,himerge 等。

emerge常用命令有:

  • 同步 portage:emerge –sync 或 emerge-webrsync
  • 降级所有的软件包:emerge -uDN @world
  • 重编译所有的软件包:emerge -e @world

特立独行的软件装置办法

下面列举的软件包管理工具都是重点思考如何解决软件包依赖问题,而有些软件装置办法就不须要这种思考,这类软件被称为 (portable software) 便携软件 ,在Windows 零碎中被称做 绿色软件,这类软件不须要装置就能够间接应用。

不依赖于特定发行版的包装格局在 Linux 生态系中在 Flatpak 前早已被提出过数次。
2000 年代晚期,autopackage 开始,2004 年则是 klik,这也提供了 Alexander Larsson 灵感,于 2007 年开发出 glick 我的项目。
到了 2014 年,klik 便演化成 AppImage,其指标是成为不依赖于特定分布版的便携式上游打包格局。
Canonical 公司则于 2016 年公布了Snappy,其指标也是为了提供宽泛的 linux 生态系一个通用的包装格局,其反对相似于Flatpak 的格局,同时也反对应用程序商店式的数字发行与更新模式。

上面列举一些常见的 便携软件

  • AppImage:核心思想是 一个应用程序 = 一个文件 ,下载即用,非常适合无需 root 权限的软件。您能够浏览官网文档理解如何制作、应用一款AppImage 更多介绍。应用示例: AnotherRedisDesktopManager
  • Flatpak : 口号是 Linux 零碎上的软件的将来Flatpak 的指标是在用户想要运行他们可能并不齐全信赖的应用软件时提供一个 平安的沙盒环境 供用户应用。应用程序将必须应用由 flatpak 提供的函数调用来管制硬件设施或拜访用户的文件,而 flatpak 将会在给予应用程序拜访权限前提醒用户。Flatpak容许应用程序开发人员间接向用户提供更新,而无需通过发行版,而不用为每个发行版别离打包和测试应用程序。晋升了软件更新的速度但也可能会升高稳定性。您能够拜访 Flathub 软件仓库获取更多软件。
  • Snappy:用过 Ubuntu 的人肯定应用过这类软件,这类软件包最后设计是利用于 Ubuntu Core 零碎的挪动端、云、物联网平台,snap格局包是一种能够由主机操作系统动静挂载的压缩的文件系统,其中还附有元数据申明,snap 零碎能够据其为应用程序设置适当的平安沙箱或容器。装置 snap 软件后执行 df 命令,你能够看到多了 /dev/loopX 文件系统。

总结

本文介绍了 Linux 零碎 大多数发行版可能应用的软件包管理工具,依据软件包格局分为三大支流派别:DebianRed HatPacman

接着介绍了三大派别以后应用最宽泛的 软件包管理器 以及应用办法。

古人云:天下大势,分久必合 。总有一些人在想着解决 软件包依赖问题 ,以及各种软件包如何能够在所有Linux 发行版 中通用,因而就呈现了 AppImageFlatpakSnap。从当初 (2020 年) 的应用状况来看,将来很可能属于 Flatpak 的。


退出移动版