大多数现代类 Unix 操作系统都提供了一个集中的软件包管理机制,以帮助用户搜索、安装和管理软件。而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用、管理、升级被称为包管理。而 Linux 包的基本组成部分通常有:共享库、应用程序、服务和文档。

软件包管理系统

大多数包管理系统是建立在包文件上的集合,包文件通常包含编译好的二进制文件和其它资源组成的:软件、安装脚本、元数据及其所需的依赖列表。

常用 Linux 发行版的包管理工具:

系统 格式 工具
Debian .deb apt,apt-cache,apt-get,dpkg
Ubuntu .deb apt,apt-cache,apt-get,dpkg
CentOS .rpm yum
Fedora .rpm dnf
  • 对于 Debian 及其衍生产品:Ubuntu、Linux Mint 的包格式为 .deb 文件,APT 为最常见包的操作命令,直接安装 .deb 包时需要使用 dpkg 命令
  • CentOS、Fedora、Red Hat 系列 Linux 使用 RPM 包文件,并使用 yum 命令管理包文件与软件库交互,在最新的 Fedora 版本中,yum 已经被 dnf 取代

更换远程仓库源

CentOS

1、CentOS 常用软件源:

2、备份配置文件:

  1. $ sudo cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

3、两种配置方案:

方案一:下载新的 CentOS-Base.repo 文件到 /etc/yum.repos.d/ 目录下:根据系统版本修改链接中的数字

方案二:修改CentOS-Base.repo文件,取消 baseurl 开头的行的注释,并增加 mirrorlist 开头的行的注释。将文件中的 http://mirror.centos.org 替换成 https://repo.huaweicloud.com ,可以参考如下命令:

  1. sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/CentOS-Base.repo
  2. sed -i "s/mirrorlist=http/#mirrorlist=http/g" /etc/yum.repos.d/CentOS-Base.repo
  3. sed -i "s@http://mirror.centos.org@https://repo.huaweicloud.com@g" /etc/yum.repos.d/CentOS-Base.repo

4、清楚原有 yum 缓存:yum clean all
5、刷新缓存:yum makecache 或 yum repolist all(查看所有配置可以使用的文件,会自动刷新缓存)

Ubuntu

1、Ubuntu 常用软件源:

2、备份配置文件:

  1. $ sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak

3、两种配置方案:

方案一:下载配置文件进行替换:根据系统版本进行切换

  1. $ wget -O /etc/apt/sources.list wget -O /etc/apt/sources.list http://mirrors.cloud.tencent.com/repo/ubuntu14_sources.list

方案二:修改 sources.list 文件,将 http://archive.ubuntu.comhttp://security.ubuntu.com 替换成 http://repo.huaweicloud.com ,可以参考如下命令:

  1. $ sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
  2. $ sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list

4、更新索引:apt-get update

更新本地包数据库列表

系统 命令
Debian、Ubuntu sudo apt-get update
CentOS yum check-update
Fedora dnf check-update

升级已经安装的包

系统 命令 备注
Debian、Ubuntu sudo apt-get upgrade 仅升级已安装的软件包
sudo apt-get disk-upgrade 可添加或删除程序包,以满足新的依赖
CentOS sudo yum update 仅升级已安装的软件包(建议使用)
sudo yum upgrade 升级软件包并删除旧的依赖
Fedora sudo dnf upgrade

查找、搜索软件包

系统 命令 备注
Debian / Ubuntu apt-cache search 搜索内容
CentOS yum search 搜索内容
yum search all 搜索内容 搜索所有内容,包括包描述。
Fedora dnf search 搜索内容
dnf search all 搜索内容 搜索所有内容,包括包描述。

查看软件包信息

系统 命令 备注
Debian / Ubuntu apt-cache show 包名 显示有关软件包的本地缓存信息
dpkg -s 包名 显示包的当前安装状态
CentOS yum info 包名
yum deplist 包名 列出包的以来
Fedora dnf info 包名
dnf repoquery –requires 包名 列出包的以来

从软件仓库安装包

系统 命令 备注
Debian / Ubuntu sudo apt-get install 包名
sudo apt-get install 包1 包2 … 安装所有列出的包
sudo apt-get install -y 包名 无需提示直接安装
CentOS sudo yum install 包名
sudo yum install 包1 包2 … 安装所有列出的包
sudo yum install -y 包名 无需提示直接安装
Fedora sudo dnf install 包名
sudo dnf install 包1 包2 … 安装所有列出的包
sudo dnf install -y 包名 无需提示直接安装

从本地文件系统直接安装包

| 系统 | 命令 | 备注 | | Debian / Ubuntu | sudo dpkg -i 包名.deb | | | —- | —- | —- | | | sudo apt-get install -y gdebi && sudo gdebi 包名.deb | 使用gdebi检索缺少的依赖关系 | | CentOS | sudo yum install 包名.rpm | | | Fedora | sudo dnf install 包名.rpm | |

移除已安装的包

由于包管理器知道哪些文件是由哪个包提供的,所以在卸载不需要的软件包之后通常可以获得一个干净的系统。

系统 命令 备注
Debian / Ubuntu sudo apt-get remove 包名
sudo apt-get autoremove 自动移除已知不需要的包
CentOS sudo yum remove 包名
Fedora sudo dnf erase 包名