Linux 包管理器分类

实验环境:

  • Linux 5.19.13-arch1-1
  • konsole 22.08.2
  • apache 2.4.54-2

1. 包管理器类别

Linux 的包管理器可以帮助我们管理系统上的包,而不需要我们手动处理依赖,方便使用。

Linux 各种发行版分类的时候采用打包方式有明显的特征,如 Redhat 系列的系统一般使用 yum、rpm,Debian 系列的系统一般使用 dpkg、apt 这些包管理器。

如果学习 Linux 的目的是用 Linux 作为管理服务器上的包,可以主要学习 yum 的使用,市面上通常使用 RedHat 系列的系统作为服务器。

所有包管理的命令在网上都能找到比较全面的教程,或根据自己的系统学习相应的包管理器使用方法,查看相应的官方文档或查看其它博主写的文章:

以下是一些包管理器分类:

类别 打包工具 简介
Debian dpkg Debian家族基础包管理工具
apt 高级打包工具,是dpkg包管理的前端工具,众所周知,抽象层级越高越方便
aptitude 另一个非常常用的打包工具,工作方式类似apt,最初为Debian设计,但现在似乎在RedHat系列上也能看到它
synaptic 基于GTK+的APT的可视化包管理器,如果不想使用命令行的话可以试试这个
Rpm rpm 红帽创建的基本标准打包格式和基础包管理系统。基于这个底层系统,有多个前端包管理工具可以使用
yum 一个开源、流行的包管理器,和Apt具有大体相同的功能
dnf 基于Rpm的包管理器,可以说是下一代的yum,在新版的Fedora中dnf已经作为默认的包管理器
其它 Pacman ArchLinux的包管理器,用于 Arch Linux 和其他的一些小众发行版。简单易用
Zypper 使用 libzypp 库制作的用于 OpenSUSE 系统上的命令行包管理器
Portage Gentoo 的包管理器,被称为Linux下最好的包管理器
yay 基于Pacman的包管理器,可以作任何Pacman的操作并额外添加了其它用法

注意:通过包管理器安装的软件包是默认安装在根目录下的,不要轻易去改动安装位置

2. pacman

pacman 是 Arch Linux 上的一个包管理器,官方的库和第三方库都可以用 pacman 进行管理

因为我使用的包管理器为 pacman 和 yay,所以这份文档主要是以这两个包管理器为主,其它包管理器不适用这个文档。

pacman (简体中文) - ArchWiki

pacman 配置⽂件位于 /etc/pacman.conf pacman 的镜像列表位于 /etc/pacman.d/mirrorlist pacman 下载安装软件包时会将软件包保存在 /var/cache/pacman/pkg/

## ⽰例
# 从 aur 安装⼀个软件包
pacman -S konsole

# 从本地安装⼀个软件包
pacman -U /path/to/package/package_name-version.pkg.tar.zst

# 安装⼀个远程包(不在 pacman 配置的源⾥⾯)
pacman -U http://www.example.com/repo/example.pkg.tar.zst

# 升级软件包
pacman -Syu

# 删除单个软件包,保留其全部已经安装的依赖关系
pacman -R package_name

# 删除单个软件包,及其所有没有被其他已安装软件包使⽤的依赖关系
pacman -Rs package_name

# 上⾯这条命令在移除包含其他所需包的组时有时候会拒绝运⾏。这种情况下可以尝试
pacman -Rsu package_name

# 要删除软件包和所有依赖这个软件包的程序(不建议使⽤,可能破坏其它包的依赖关系)
pacman -Rsc package_name

# 删除⼀个被其他软件包依赖的软件包,但是不删除依赖这个软件包的其他软件包
pacman -Rdd package_name

# 如果需要显⽰包的详细信息可以添加选项`-i`
# 通过查询本地软件包数据库查看是否存在某软件包
pacman -Q package_name

# 查询已安装的软件包(string 可以忽略,但那会显⽰出所有软件包)
pacman -Qs string1 string2 ...

# 通过查询⽂件数据库查看是否存在某软件包
pacman -F package_name

# 在包数据库中查询软件包,查询位置包含了软件包的名字和描述
pacman -Ss package_name

# 显⽰软件包的依赖树,需要安装 pacman-contrib
pactree package_name

# 清理软件包缓存
# pacman 将下载的软件包保存在 /var/cache/pacman/pkg/ 并且不会⾃动移除旧的和未安装版本的软件包
paccache -r # 默认保留最近的三个版本
paccache -rk1 # 清理并只保存⼀个版本

# 删除⽬前没有安装的所有缓存的包,和没有被使⽤的同步数据库
pacman -Sc

# 删除缓存中的全部⽂件,使⽤两次-c开关。这是最为激进的⽅式,将会清空缓存⽂件夹
pacman -Scc

3. yay

pacman 是 Arch 上的自带包管理器,但通常却使用 yay 作为日常使用的包管理器,yay 可以执行 pacman 的大部分操作,并在此基础上添加很多额外的用法

## ⽰例
# 升级软件包
yay -Syu

# 在 AUR 中查询包(string 可使⽤正则表达式)
yay -q string

# 删除⼀个软件包
yay -Rs packafe_name

# 其它操作⼤体上与 pacman 等同

参考

posted @ 2022-10-31 01:25  故魇  阅读(667)  评论(0编辑  收藏  举报