仓库管理
约 852 字大约 3 分钟
2025-06-11
📦 包管理系统简介
发行版家族 | 包管理工具 | 配置文件位置 |
---|---|---|
Debian/Ubuntu | APT (apt) | /etc/apt/sources.list , /etc/apt/sources.list.d/*.list |
Red Hat/CentOS | YUM/DNF | /etc/yum.repos.d/*.repo |
Arch/Manjaro | Pacman | /etc/pacman.conf , /etc/pacman.d/mirrorlist |
openSUSE | Zypper | /etc/zypp/repos.d/*.repo |
Gentoo | Portage | /etc/portage/repos.conf , /etc/portage/make.conf |
🔍 查看仓库信息
APT (Debian/Ubuntu)
apt policy # 显示软件包来源
apt-cache policy <package> # 查看特定包的仓库信息
grep -r --include '*.list' '^deb ' /etc/apt # 列出所有启用仓库
DNF/YUM (RHEL/CentOS/Fedora)
dnf repolist all # 列出所有仓库(启用/禁用)
dnf repository-packages <repo> info # 查看指定仓库中的包
yum repoinfo <repo-name> # 显示仓库详细信息
Pacman (Arch/Manjaro)
pacman -Syy # 强制刷新仓库索引
pacman -Sl # 列出所有仓库中的包
grep -E '^\s*\[.+]' /etc/pacman.conf # 查看启用仓库
⚙️ 管理仓库配置文件
Debian/Ubuntu (APT)
sudo nano /etc/apt/sources.list # 编辑主仓库配置
sudo nano /etc/apt/sources.list.d/my-repo.list # 添加新仓库
示例仓库条目:
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
RHEL/CentOS (YUM/DNF)
sudo nano /etc/yum.repos.d/epel.repo # 编辑仓库配置
示例仓库配置:
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
🔄 添加新仓库
APT (Debian/Ubuntu)
sudo add-apt-repository ppa:user/ppa-name # 添加PPA仓库
sudo add-apt-repository "deb [arch=amd64] https://download.example.com/ubuntu focal main"
sudo apt update
DNF (Fedora/CentOS)
sudo dnf config-manager --add-repo https://download.example.com/repo/repo.repo
sudo dnf config-manager --enable <repo-name>
sudo dnf update
Pacman (Arch)
sudo nano /etc/pacman.conf # 添加仓库到配置文件
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
🛑 禁用/启用仓库
APT (Debian/Ubuntu)
sudo add-apt-repository --remove ppa:user/ppa-name # 禁用PPA
sudo nano /etc/apt/sources.list # 注释掉仓库行
sudo apt update
DNF (Fedora/RHEL)
sudo dnf config-manager --set-disabled <repo-name> # 禁用仓库
sudo dnf config-manager --set-enabled <repo-name> # 启用仓库
sudo dnf repolist # 验证状态
Pacman (Arch)
在/etc/pacman.conf
中注释掉仓库部分:
#[archlinuxcn]
#Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
🔐 管理仓库密钥
APT (Debian/Ubuntu)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <KEYID> # 添加密钥
sudo apt-key list # 列出所有密钥
sudo apt-key del <keyID> # 删除密钥
RPM (DNF/YUM)
sudo rpm --import https://example.com/key.asc # 导入密钥
sudo rpm -qa gpg-pubkey* # 列出已安装密钥
sudo rpm -e gpg-pubkey-<id> # 删除密钥
Pacman (Arch)
sudo pacman-key --recv-keys <KEYID> # 添加密钥
sudo pacman-key --lsign-key <KEYID> # 本地签名密钥
sudo pacman -S archlinuxcn-keyring # 安装信任密钥环
🧩 常用仓库管理命令
更新仓库元数据
apt update # Debian/Ubuntu
dnf check-update # Fedora/RHEL
yum check-update # CentOS
pacman -Sy # Arch
zypper refresh # openSUSE
清理仓库缓存
apt clean # 清除所有本地缓存
apt autoclean # 清除过期缓存
dnf clean all # DNF清除缓存
yum clean all # YUM清除缓存
pacman -Scc # Pacman清除缓存
列出仓库软件包
apt list --all-versions # Debian/Ubuntu
dnf repository-packages <repo> list # Fedora/RHEL
pacman -Sl <repo> # Arch
zypper packages -r <repo> # openSUSE
🧠 最佳实践建议
- 优先使用官方仓库 - 确保系统稳定性和安全性
- 定期更新仓库索引 -
apt update
/dnf check-update
保持最新信息 - 密钥安全验证 - 始终验证仓库密钥真实性
- 仓库优先级管理 - 使用
/etc/apt/preferences
(APT)或priority=
(DNF)解决冲突 - 企业环境使用镜像 - 配置本地镜像加速下载并减少外部依赖
- 审计第三方仓库 - 定期检查添加的第三方仓库是否仍在维护
💡 通过有效管理软件仓库,您可以确保系统安全、稳定地获取和维护软件包,同时优化更新流程。