1
0
wiki/Tech/operating-system/Linux/基础/Linux 软件包管理器.md
2023-11-09 17:30:33 +08:00

419 lines
34 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Linux 软件包管理器
description: Linux 软件包管理器
keywords:
- Linux
- 软件包管理器
tags:
- Linux/基础
sidebar_position: 6
author: 7Wate
date: 2023-03-30
---
包管理器Package Manager是一个用于自动化软件包安装、升级、配置、删除以及跟踪已安装软件包的工具。它在操作系统尤其是 Linux 和 Unix-like 系统上扮演着重要角色。包管理器通过使用软件仓库Repositories将软件包即应用程序、库和工具组织和管理起来。
以下是包管理器的主要功能和特点:
1. 软件仓库包管理器从软件仓库Repositories中获取软件包。仓库是托管预编译软件包及其元数据的服务器。大多数 Linux 发行版都有官方仓库,同时也支持第三方仓库。仓库通常分为稳定、测试和不稳定等不同的分支,以满足不同用户的需求。
2. 配置仓库源:在开始使用包管理器之前,用户需要配置软件源,即仓库的地址。这通常在系统安装时自动完成,但用户也可以手动添加或删除软件源。包管理器将从这些源获取软件包及其相关信息。
3. 更新索引:包管理器需要更新本地软件包索引,以便从软件仓库获取最新的软件包信息。这个过程也称为“更新软件包数据库”或“同步软件包列表”。更新索引通常通过运行类似于 `apt update`、`yum update` 或 `pacman -Sy` 的命令来完成。
4. 搜索和查询:用户可以使用包管理器搜索和查询软件包。搜索功能允许用户查找特定的软件包或库,而查询功能则提供软件包的详细信息,如描述、版本和依赖关系。
5. 安装软件包:用户可以使用包管理器安装软件包。在此过程中,包管理器会检查并解决依赖关系,确保所有必需的软件包和库都已安装。然后,包管理器从仓库下载软件包,并将其解压缩到正确的位置。
6. 升级和删除软件包:包管理器允许用户升级已安装的软件包到新版本,或从系统中删除不再需要的软件包。在升级过程中,包管理器会确保依赖关系得到妥善处理,以避免潜在的问题。在删除软件包时,包管理器还会检查是否有其他软件包依赖于它,以避免不小心破坏系统。
7. 安全性和验证:在下载和安装软件包时,包管理器通常会验证其完整性和来源,以确保软件包没有被篡改。这是通过使用签名和哈希检查等方法来实现的。
总之,包管理器是一个自动化工具,负责处理操作系统上软件包的各种任务。它简化了软件安装、升级、配置和删除的过程,确保系统的稳定性和安全性。不同的操作系统和发行版可能使用不同的包管理器,但其核心概念和功能类似。
## Dpkg
dpkgDebian Package Manager是 Debian 操作系统及其衍生系统(如 Ubuntu中的一个**底层软件包管理工具**。它负责处理安装、卸载、更新等软件包管理操作。**dpkg 并不处理依赖关系**,这是由更高层的工具(如 apt、apt-get、aptitude 等)完成的。
dpkg 最早于 1993 年由 Debian 项目的创始人 Ian Murdock 开发。自此dpkg 成为了 Debian 项目的核心组件之一,逐步发展壮大。后来,随着 Ubuntu 等基于 Debian 的发行版的出现dpkg 的使用范围进一步扩大。
dpkg 主要由 C 语言编写,其源代码托管在 GitLab<https://salsa.debian.org/dpkg-team/dpkg)。dpkg> 在底层使用 DEBDebian package文件格式一个 DEB 文件包含软件包的元数据如名称、版本、依赖关系等、二进制文件、配置文件等。dpkg 提供了用于安装、卸载、查询等操作的命令行界面。
dpkg 的主要设计理念是简单、稳定、可扩展。它旨在为 Debian 及衍生系统提供一个可靠、易于使用的软件包管理基础设施。此外,**dpkg 还遵循 Unix 哲学,即“做好一件事”,专注于软件包的底层管理,而将依赖关系处理等高级功能交给上层工具。**
### 优点
1. 简单且易于使用dpkg 提供了一套直观的命令行界面,让用户可以轻松地管理软件包。
2. 稳定性高经过多年的发展和优化dpkg 已经非常稳定,被广泛应用于 Debian 及其衍生系统。
3. 良好的兼容性dpkg 支持多种硬件平台和操作系统。
4. 可扩展性强dpkg 的设计允许上层工具方便地对其进行扩展,如 apt 和 aptitude。
### 缺点
1. 持续优化性能随着软件包的数量和复杂性不断增加dpkg 需要持续优化以提高性能。
2. 改进依赖关系处理:
3. 尽管 dpkg 本身不处理依赖关系,但未来的发展方向可能会考虑将一些依赖关系处理能力整合进 dpkg使其更为强大。 3. 更好地支持其他 Linux 发行版dpkg 可能会扩展对其他非 Debian 系发行版的支持,提高其在 Linux 生态中的通用性。
4. 提高安全性随着网络安全问题日益严重dpkg 需要不断提高安全性,以确保软件包安装和更新过程中的安全性。
5. 用户友好性改进:虽然 dpkg 已经相对简单易用,但未来仍可考虑进一步优化用户界面,使其更加直观和友好。
6. 容器化与云原生支持随着容器化和云原生技术的普及dpkg 可能需要增强在这些环境下的支持和适配能力。
总之dpkg 未来的发展方向主要集中在性能优化、依赖关系处理、跨发行版支持、安全性、用户友好性和云原生环境支持等方面。通过不断改进和创新dpkg 将继续为 Debian 及其衍生系统提供可靠的软件包管理基础设施。
### 命令
| 命令 | 说明 |
| ------------------------------- | ---------------------------------------------------------- |
| dpkg -i package.deb | 安装一个 DEB 软件包 |
| dpkg -r package_name | 移除一个已安装的软件包,但保留配置文件 |
| dpkg -P package_name | 完全移除一个已安装的软件包,包括配置文件 |
| dpkg -L package_name | 列出已安装软件包的所有文件 |
| dpkg -l | 列出所有已安装的软件包 |
| dpkg -s package_name | 显示已安装软件包的状态信息 |
| dpkg -S file_path | 查询指定文件属于哪个软件包 |
| dpkg --get-selections | 获取当前系统上所有软件包的安装状态 |
| dpkg --set-selections | 从文件或标准输入中读取软件包状态信息,设置相应软件包的状态 |
| dpkg --configure package_name | 配置一个尚未配置的软件包 |
| dpkg --unpack package.deb | 解包 DEB 文件,但不配置软件包 |
| dpkg --print-architecture | 显示当前系统的架构 |
### 选项
| 选项 | 说明 |
| ------------------------------- | ---------------------------------------------------------- |
| -i, --install | 安装一个或多个 DEB 软件包 |
| -r, --remove | 移除一个或多个已安装的软件包,但保留配置文件 |
| -P, --purge | 完全移除一个或多个已安装的软件包,包括配置文件 |
| -L, --listfiles | 列出指定软件包的所有文件 |
| -l, --list | 列出所有已安装的软件包 |
| -s, --status | 显示指定软件包的状态信息 |
| -S, --search | 查询指定文件属于哪个软件包 |
| --get-selections | 获取当前系统上所有软件包的安装状态 |
| --set-selections | 从文件或标准输入中读取软件包状态信息,设置相应软件包的状态 |
| --configure | 配置一个或多个尚未配置的软件包 |
| --unpack | 解包一个或多个 DEB 文件,但不配置软件包 |
| --print-architecture | 显示当前系统的架构 |
| --force-<选项> | 强制执行某些操作,如 --force-depends 强制忽略依赖问题 |
| --no-act | 模拟操作,不实际执行 |
| --refuse-<选项> | 拒绝执行某些操作 |
| --ignore-depends=package_name | 安装或删除软件包时忽略指定的依赖关系 |
## APT
APTAdvanced Package Tool是一个用于管理 Debian 及其衍生系统(如 Ubuntu软件包的高级工具集。它提供了一个统一的方法来处理软件包的安装、升级、配置和卸载以及管理系统上的依赖关系。APT 包括多个子工具,如 apt-get、apt-cache、apt-config 等。
APT 最早在 1998 年由 Debian 开发者 Ian Murdock 和其他开发者创建。当时Debian 社区意识到需要一个更高级的软件包管理工具来简化系统维护,因此 APT 应运而生。随着时间的推移APT 得到了持续的改进和扩展,逐渐成为 Debian 及其衍生系统的重要组成部分。
APT 的实现主要基于 C++ 编程语言,后端库则依赖于 dpkg。**APT 与 dpkg 紧密协作dpkg 负责底层的软件包安装、卸载和管理,而 APT 则负责处理软件仓库、依赖关系和软件包更新。**
APT 的设计理念主要包括以下几点:
1. 简化软件包管理APT 旨在简化 Debian 及其衍生系统的软件包管理,使用户能够轻松地安装、升级和卸载软件。
2. 自动处理依赖关系APT 可以自动处理软件包之间的依赖关系,避免了手动解决依赖问题的繁琐工作。
3. 高度可定制APT 允许用户自定义软件源、代理设置等,满足不同用户的需求。
4. 提供多种前端工具APT 提供了多种前端工具,如命令行工具 apt-get、图形界面工具 Synaptic 等,方便用户选择。
### 优点
1. 依赖关系处理APT 自动处理软件包之间的依赖关系,使得安装、升级和卸载过程更简单、更方便。
2. 软件仓库支持APT 提供了一个集中式的软件仓库,用户可以从中搜索和安装所需的软件包,这使得软件安装变得更简单、更安全。
3. 自动更新APT 支持自动更新功能,可以保证系统中的软件包总是处于最新状态,提高了系统的安全性和稳定性。
4. 丰富的前端工具APT 提供了多种前端工具,如 APT-GET命令行、APT-CACHE缓存管理、Synaptic图形界面满足不同用户的需求。
5. 跨平台支持APT 支持多种操作系统,如 Debian、Ubuntu、Linux Mint 等,方便用户在不同平台上进行软件包管理。
### 缺点
1. 性能问题APT 在处理大量软件包时,可能会出现性能瓶颈,导致系统响应变慢。
2. 与非 Debian 系统的兼容性APT 主要针对基于 Debian 的 Linux 发行版,对于非 Debian 系统的支持相对较弱。
3. 错误提示不明确APT 在出现问题时,有时会给出相对模糊的错误提示,导致用户难以判断问题的具体原因。
未来 APT 发展的重点主要集中在提升性能、扩展平台支持、优化用户界面、增强依赖关系处理能力以及与其他软件包管理系统的集成。这将有助于为用户提供更快速、更兼容、更直观的软件包管理体验,同时降低软件冲突和不兼容的风险。
### 常用命令
| 功能 | APT 命令 | APT-GET 命令 |
| ---------------- | -------------------------- | ------------------------------- |
| 更新索引 | apt update | apt-get update |
| 升级软件包 | apt upgrade | apt-get upgrade |
| 处理依赖关系升级 | apt full-upgrade | apt-get dist-upgrade |
| 安装软件包 | apt install <package_name> | apt-get install <package_name> |
| 删除软件包 | apt remove <package_name> | apt-get remove <package_name> |
| 删除软件包及配置 | apt purge <package_name> | apt-get purge <package_name> |
| 自动删除依赖 | apt autoremove | apt-get autoremove |
| 清理软件包缓存 | apt clean | apt-get clean |
| 清理过期缓存 | apt autoclean | apt-get autoclean |
| 搜索软件包 | apt search <package_name> | apt-cache search <package_name> |
| 显示软件包详情 | apt show <package_name> | apt-cache show <package_name> |
| 软件包版本信息 | apt policy <package_name> | apt-cache policy <package_name> |
## RPM
RPMRPM Package Manager原名为 Red Hat Package Manager是一种用于管理 Linux 发行版(主要是基于 Red Hat 的发行版,如 Fedora、RHEL 和 CentOS软件包的工具。RPM 用于安装、升级、卸载和查询软件包及其依赖关系。它使用 .rpm 文件作为软件包的容器格式。
RPM 的发展始于 1997 年,当时由 Red Hat 的开发人员创建,用于替代当时较为简单的 Linux 软件包管理工具。随着 Linux 的发展RPM 得到了广泛的应用,成为了许多基于 Red Hat 的发行版的标准软件包管理工具。现在RPM 在 Fedora、RHEL、CentOS 等发行版中仍被广泛使用。
RPM 使用 C 语言编写,基于 Berkeley DB 存储软件包的元数据。它使用 .rpm 文件作为软件包格式这种文件包含了软件包的二进制文件、源代码、元数据以及安装、升级和卸载时的脚本。RPM 通过这些信息来处理软件包之间的依赖关系以及软件包的安装、升级和卸载过程。
RPM 的设计理念主要集中在以下几点:
1. 提供一种统一的软件包格式,简化软件的安装和管理过程。
2. 软件包之间的依赖关系处理,确保软件正确安装和运行。
3. 对软件包进行版本管理,便于升级和回滚。
4. 适用于基于 Red Hat 的 Linux 发行版,简化这些发行版的软件包管理工作。
### 优点
1. 广泛应用RPMRed Hat Package Manager是 Red Hat 及其衍生发行版(如 Fedora、CentOS、openSUSE的标准软件包管理工具具有广泛的应用基础。
2. 便捷的软件包管理RPM 提供了便捷的软件包管理功能,如安装、升级、卸载、查询等。
3. 易于分发RPM 软件包可以方便地在互联网上分发和共享,便于用户安装和升级软件。
4. 独立软件包RPM 软件包包含了软件的所有文件和元数据,可以方便地进行软件包的备份和恢复。
5. 数字签名支持RPM 支持软件包的数字签名,确保软件包的来源和完整性。
### 缺点
1. 依赖关系处理RPM 本身不具备处理软件包依赖关系的能力,需要借助其他工具(如 YUM、DNF进行依赖关系管理。
2. 与 Debian 系统的兼容性RPM 主要针对基于 Red Hat 的 Linux 发行版,对于 Debian 系统的支持相对较弱。
3. 学习成本RPM 的命令和工具相对繁琐,对于新手可能存在一定的学习成本。
RPM 未来发展方向主要包括提高与其他软件包管理系统的兼容性、优化用户界面、增强依赖关系处理能力以及提升性能和稳定性。这将有助于为用户提供更广泛的软件支持、更友好的操作体验,同时降低软件冲突和不兼容的风险。
### 命令
| 命令 | 功能描述 |
| ------------------------------- | ------------------------------- |
| rpm -i package.rpm | 安装指定的 RPM 软件包 |
| rpm -U package.rpm | 升级指定的 RPM 软件包 |
| rpm -e package_name | 卸载指定的 RPM 软件包 |
| rpm -qa | 查询所有已安装的 RPM 软件包 |
| rpm -q package_name | 查询指定 RPM 软件包的安装状态 |
| rpm -qi package_name | 显示指定 RPM 软件包的详细信息 |
| rpm -qf file_path | 查询指定文件属于哪个 RPM 软件包 |
| rpm -ql package_name | 列出指定 RPM 软件包中的所有文件 |
| rpm -qp package.rpm --scripts | 显示指定 RPM 软件包的脚本信息 |
| rpm -qR package_name | 显示指定 RPM 软件包的依赖关系 |
| rpm -V package_name | 验证指定 RPM 软件包的完整性 |
| rpm -ivh package.rpm | 安装指定的 RPM 软件包并显示进度 |
| rpm -Uvh package.rpm | 升级指定的 RPM 软件包并显示进度 |
### 选项
| 选项 | 功能描述 |
| -------------- | ---------------------------------------------- |
| -i, --install | 安装指定的 RPM 软件包 |
| -U, --upgrade | 升级指定的 RPM 软件包 |
| -e, --erase | 卸载指定的 RPM 软件包 |
| -q, --query | 查询已安装或指定 RPM 软件包的信息 |
| -v, --verbose | 显示详细的操作信息 |
| -h, --hash | 显示安装或升级过程中的进度条 |
| -F, --freshen | 升级已安装软件包的新版本,不安装未安装的软件包 |
| -V, --verify | 验证指定 RPM 软件包的完整性 |
| -K, --checksig | 检查指定 RPM 软件包的数字签名 |
| --nosignature | 不检查数字签名 |
| --nodeps | 不检查依赖关系 |
| --force | 强制执行操作,即使存在依赖关系或文件冲突等问题 |
| --test | 测试操作,不实际执行操作 |
## Yum
YumYellowdog Updater Modified是一种在 Linux 系统上自动更新、安装和卸载软件包的开源软件包管理器。它是 Fedora 和 Red Hat Enterprise LinuxRHEL等 Linux 发行版中的标准软件包管理器之一。
Yum 最初由 Seth Vidal 编写2003 年首次在 Fedora Core 1 中引入。Yum 的设计理念是为了改进 Red Hat Linux 中的软件包管理器使其更快、更易用和更灵活。目前Yum 已成为 Red Hat Enterprise LinuxRHEL和 CentOS 等 Linux 发行版中的标准软件包管理器。
Yum 是用 Python 编写的,使用了 RPM 包管理系统。Yum 通过配置软件仓库和更新源实现对软件包的自动更新、安装和卸载。Yum 将所有软件包的信息存储在本地的缓存中,这样可以提高查询速度,并且减轻软件仓库服务器的负担。
Yum 的设计理念是易用、灵活、可扩展。Yum 提供了一个简单的命令行界面使用户可以轻松地搜索、安装、升级和删除软件包。Yum 的配置文件可以轻松地添加、删除和编辑这使得用户可以轻松地添加自己的软件仓库和更新源。Yum 还支持插件机制,可以通过插件扩展 Yum 的功能。
### 优点
- 方便的软件包管理Yum 可以自动解决依赖关系,自动下载和安装软件包,使软件包管理变得简单和快速。
- 可扩展性:用户可以添加自己的软件仓库和更新源,也可以通过插件扩展 Yum 的功能。
- 自动更新Yum 可以在后台自动更新软件包,使系统保持最新状态。
- 稳定性Yum 使用 RPM 包管理系统,可以确保软件包的安全和稳定性。
### 缺点
- 更新速度慢Yum 需要从远程服务器下载软件包,因此更新速度可能较慢。
- 软件包版本滞后:由于软件包需要经过 Fedora 和 Red Hat 的审核,因此软件包的版本可能比其他 Linux 发行版滞后。
- 依赖关系不够灵活Yum 的依赖关系比较严格,可能会出现无法安装软件包的情况。
未来 Yum 的发展方向主要是加强容器化支持、多架构支持、安全性、依赖关系和性能等方面,以满足快速部署和管理的需求,以适应不断变化的应用场景和用户需求。
### 常用命令
| 命令 | 功能描述 |
| -------------------------------- | -------------------------------- |
| yum check-update | 检查可用更新 |
| yum update | 更新已安装的软件包 |
| yum install package_name | 安装指定软件包 |
| yum remove package_name | 卸载指定软件包 |
| yum search keywords | 搜索包含指定关键字的软件包 |
| yum info package_name | 显示指定软件包的详细信息 |
| yum list | 列出所有可安装软件包的信息 |
| yum clean all | 清理软件包缓存和元数据 |
| yum deplist package_name | 显示指定软件包的依赖关系 |
| yum history | 显示软件包操作历史记录 |
| yum downgrade package_name | 降级指定软件包到较旧的版本 |
| yum provides file_path | 查找提供指定文件的软件包 |
| yum groupinstall package_group | 安装指定的软件包组 |
| yum groupremove package_group | 卸载指定的软件包组 |
| yum repolist | 显示已启用的所有软件包仓库的列表 |
## DNF
DNFDandified YUM是一个基于 YUM 的新一代软件包管理器,由 Red Hat 开发,旨在改善 YUM 的性能和稳定性并提供更多的功能和灵活性。DNF 命令与 YUM 命令非常相似,可以方便地在基于 Fedora、CentOS 和 RHEL 等系统上进行软件包管理。
DNF 最初是由 Fedora 项目推出的 YUM 的替代品目的是提供更好的性能、更好的内存管理和更好的依赖关系解决方案。随着时间的推移DNF 在 Red Hat 及其衍生产品中逐渐取代了 YUM。
DNF 的实现基于 Python使用 RPM 库进行底层软件包管理。DNF 的核心设计思想是提供更好的性能、内存管理和依赖关系解决方案,同时支持多个软件包仓库、插件和模块化架构。
DNF 的设计理念主要包括以下几点:
1. 高性能和稳定性DNF 旨在提供更快速和更可靠的软件包管理体验,减少因软件包管理导致的系统崩溃和故障。
2. 内存管理DNF 的内存管理机制与 YUM 不同,可以有效减少内存占用,提高软件包管理的效率。
3. 依赖关系解决方案DNF 采用更先进的依赖关系解决方案,可以更好地处理复杂的软件包依赖关系和冲突问题。
4. 模块化设计DNF 的架构采用模块化设计,可以方便地增加新的功能和插件,满足不同用户的需求。
### 优点
1. 高性能DNF 的性能比 YUM 更快,可以快速处理大量软件包操作。
2. 稳定性DNF 的内存管理机制比 YUM 更稳定,可以有效降低系统崩溃和故障的风险。
3. 依赖关系处理DNF 可以处理复杂的依赖关系和冲突问题,确保软件包的安装和升级不会导致系统问题。
4. 模块化架构DNF 的模块化架构可以方便地增加新的功能和插件,提供更好的扩展性和灵活性。
### 缺点
1. 兼容性问题:由于 DNF 是一个相对较新的软件包管理器,可能存在与旧版系统或其他软件包管理工具不兼容的问题。
2. 学习成本:虽然 DNF 命令与 YUM 命令非常相似,但对于不熟悉 Linux 命令行的新手用户而言,仍然需要一定的学习成本。
DNF 的未来发展方向主要包括提高性能和稳定性、增强依赖关系处理能力、增加新功能和插件以及提高用户体验。作为一个现代化、高效、稳定的软件包管理器DNF 在 Linux 系统中的应用前景广阔。
### 常用命令
| 命令 | 说明 |
| ------------------ | ------------------------------------------ |
| dnf install | 安装软件包 |
| dnf upgrade | 升级已安装的软件包 |
| dnf remove | 删除软件包 |
| dnf search | 搜索软件包 |
| dnf info | 查看软件包信息 |
| dnf list | 列出已安装的软件包 |
| dnf repository | 管理软件包仓库 |
| dnf group | 管理软件包组 |
| dnf history | 查看软件包操作历史记录 |
| dnf config-manager | 管理 DNF 配置文件中的 YUM 软件库管理器配置 |
| dnf module | 管理软件包模块 |
| dnf clean | 清理缓存和临时文件 |
| dnf check-update | 检查软件包更新 |
| dnf system-upgrade | 系统升级 |
| dnf repoquery | 查询软件包依赖关系和文件信息 |
| dnf download | 下载软件包 |
| dnf autoremove | 自动删除已不需要的软件包及其依赖 |
## Pacman
Pacman 是 Arch Linux 发行版的官方软件包管理器其名称缩写来自“Package Manager软件包管理器”。Pacman 能够管理本地软件包、从官方仓库中获取软件包、以及从第三方仓库中获取软件包,具有很高的灵活性。
Pacman 最初由 Judd Vinet 在 2002 年创建,旨在提供一种简单、快速、可靠的软件包管理器,用于管理 Arch Linux 中的软件包。Pacman 的底层软件包管理库 libalpm 具有很高的稳定性和性能,能够在短时间内完成大规模的软件包操作。
Pacman 的实现基于 C++ 语言编写的命令行工具,使用 libalpm 库实现底层软件包管理。libalpm 是一个独立的库,提供了一组用于软件包操作的 API包括软件包的安装、升级、删除、查询等。
Pacman 的设计理念主要包括以下几点:
1. 简单易用Pacman 的命令简单、直观,容易上手,适合各种用户使用。
2. 高效可靠Pacman 的操作速度快,稳定性高,能够满足大规模软件包管理的需求。
3. 可定制性Pacman 支持多种自定义配置选项,可以根据用户的需求进行灵活设置。
4. 灵活性Pacman 可以管理本地软件包、从官方仓库中获取软件包、以及从第三方仓库中获取软件包,具有很高的灵活性。
### 优点
1. 快速Pacman 操作速度快,能够在短时间内完成大规模软件包操作。
2. 稳定性高Pacman 的底层软件包管理库 libalpm 具有很高的稳定性,能够有效降低系统崩溃和故障的风险。
3. 灵活性Pacman 可以管理本地软件包、从官方仓库中获取软件包、以及从第三方仓库中获取软件包,具有很高的灵活性。
4. 自定义性Pacman 支持多种自定义配置选项,可以根据用户的需求进行灵活设置。
5. 易用性Pacman 的命令简单、直观,容易上手,适合各种用户使用。
### 缺点
1. 依赖关系处理较为严格Pacman 的依赖关系处理较为严格,可能会对某些软件包的安装和升级造成一定的限制。
2. 可用软件包数量较少与其他一些流行的发行版相比Arch Linux 的软件包数量相对较少,这可能会导致一些软件包无法得到支持。
Pacman 是 Arch Linux 发行版的官方软件包管理器,具有简单、快速、可靠、灵活等优点,未来的发展方向包括提高性能和稳定性、增强依赖关系处理能力、增加新功能和插件以及提高用户体验。作为 Arch Linux 的核心软件包管理器Pacman 在未来仍将发挥重要作用。
### 命令
| 命令 | 说明 |
| ---------------------------- | -------------------------------------------- |
| pacman -S package | 安装软件包 |
| pacman -Syu | 升级系统中所有已安装的软件包 |
| pacman -Sy package | 同步软件包数据库并安装指定软件包 |
| pacman -Ss package | 搜索软件包 |
| pacman -Qi package | 查询已安装软件包信息 |
| pacman -Ql package | 列出软件包的文件列表 |
| pacman -Qu | 检查软件包更新 |
| pacman -Qs package | 搜索已安装软件包 |
| pacman -R package | 删除软件包 |
| pacman -Rs package | 删除软件包及其所有没有被其他软件包依赖的文件 |
| pacman -Rns package | 删除软件包及其所有依赖包、配置文件和数据文件 |
| pacman -Sc | 清理不再需要的软件包缓存 |
| pacman -Scc | 清除所有软件包缓存 |
| pacman -Sw package | 仅下载软件包而不安装 |
| pacman -Syy | 强制更新软件包数据库 |
| pacman -Syu --ignore package | 升级系统时忽略指定的软件包 |
### 选项
| 选项 | 说明 |
| ------------------- | ----------------------------------------------- |
| -S, --sync | 安装指定软件包 |
| -U, --upgrade | 升级软件包 |
| -R, --remove | 删除软件包 |
| -Ss, --search | 搜索软件包 |
| -Qi, --info | 查询已安装软件包信息 |
| -Ql, --list | 列出软件包的文件列表 |
| -Qu, --upgrades | 检查软件包更新 |
| -Qs, --search | 搜索已安装软件包 |
| -Rs, --recursive | 删除软件包及其所有没有被其他软件包依赖的文件 |
| -Rns, --recursive | 删除软件包及其所有依赖包、配置文件和数据文件 |
| -Sc, --clean | 清理不再需要的软件包缓存 |
| -Scc, --clean | 清除所有软件包缓存 |
| -Sw, --downloadonly | 仅下载软件包而不安装 |
| -Syy, --refresh | 强制更新软件包数据库 |
| --noconfirm | 不需要用户确认 |
| --needed | 只安装必需的依赖包 |
| --noprogressbar | 不显示下载进度条 |
| --color | 指定输出颜色 |
| --overwrite | 覆盖已存在的文件 |
| --ignore | 忽略指定软件包 |
| --arch | 指定安装软件包的架构,如 i686、x86_64、any 等等 |
| --force | 强制执行操作,即使会导致不良影响 |
| --asdeps | 将软件包标记为依赖包而不是显式安装的软件包 |
| --asexplicit | 将软件包标记为显式安装的软件包而不是依赖包 |
## 仓库源
仓库源是指软件包管理器所用的软件仓库,用于提供软件包的下载和更新。常见的 Linux 发行版都有官方仓库源,也有一些社区提供的非官方仓库源,以及一些专门为国内用户提供的镜像源。
### 官方
官方仓库源是由 Linux 发行版官方维护的软件仓库,提供的软件包通常经过严格的测试和验证,保证了软件的稳定性和安全性。用户可以通过软件包管理器直接访问官方仓库源,以获取最新的软件包和更新。
- Debian 官方源:<http://deb.debian.org/>
- Debian 安全源:<https://security.debian.org/>
- Ubuntu 官方源:<http://archive.ubuntu.com/>
- CentOS 官方源:<http://mirror.centos.org/>
### 中国
由于国内网络环境的特殊性,使用国外官方仓库源可能会遇到较慢的下载速度或无法连接的问题。因此,一些开源社区提供了针对国内用户的镜像仓库源,用于加速软件包下载和更新。
- 阿里云开源镜像站:<http://mirrors.aliyun.com/>
- 中科大开源软件镜像站:<https://mirrors.ustc.edu.cn/>
- 清华大学开源软件镜像站:<https://mirrors.tuna.tsinghua.edu.cn/>
### 一键脚本
LinuxMirrors 是一个由 SuperManito 维护的 Linux 镜像站点列表。该项目旨在为 Linux 用户提供可靠、高速的镜像站点列表,用户可以通过该列表轻松找到离自己最近的镜像站点,以加速软件包的下载和更新。
- LinuxMirrors <https://github.com/SuperManito/LinuxMirrors>
```shell
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)
```