Linux软件包管理

1. Redhat系列软件包管理:

1.1 rpm包管理:

rpm 是 Red Hat Linux 及其衍生发行版中用于管理软件包的工具。下面是对 rpm 命令的详细介绍:

rpm 命令用法:

  • 安装软件包:
    rpm -i package_file.rpm:安装一个以 .rpm 结尾的软件包文件。
  • 查询软件包信息:
    rpm -q package_name:查询已安装的软件包信息。
    rpm -qa:列出系统中所有已安装的软件包。
    rpm -qi package_name:显示软件包的详细信息。
    rpm -ql package_name:列出软件包已安装的文件列表。
  • 升级软件包:
    rpm -U package_file.rpm:升级一个已安装的软件包。
    rpm -F package_file.rpm:升级系统中已安装的软件包,不安装新软件包。
  • 卸载软件包:
    rpm -e package_name:卸载已安装的软件包。
  • 查询软件包提供的文件:
    rpm -ql package_name:列出软件包已安装的文件列表。
  • 查询软件包所属:
    rpm -qf /path/to/file:查找给定文件属于哪个软件包。
  • 其他常用选项:
    -Uvh:显示安装过程中的详细信息。
    -e --nodeps:强制卸载软件包,不检查依赖关系。

注意事项: rpm 只能处理 .rpm 格式的软件包,不会自动处理依赖关系。安装软件包时,可能会出现依赖项未满足的情况,需要手动解决依赖关系。

rpm 是一个强大的工具,适合在 Red Hat 系发行版中管理软件包。但与高级包管理工具相比,需要更多手动操作和对依赖关系的管理。

1.2 yum包管理

yum(Yellowdog Updater, Modified)是一个在 Red Hat Linux 及其衍生发行版中用于管理软件包的高级包管理工具。它能够自动解决软件包之间的依赖关系,简化软件包的安装、升级和卸载过程。以下是对 yum 命令的详细介绍:

yum 命令用法:

  • 更新软件包列表:
    yum check-update:检查可用的软件包更新。
    yum update:更新系统中的所有软件包。
    yum update package_name:更新特定软件包。

  • 安装软件包:
    yum install package_name:安装一个软件包及其依赖项。
    yum localinstall package_file.rpm:安装本地 .rpm 格式的软件包文件。
    image

  • 升级软件包:
    yum upgrade:升级系统中所有可升级的软件包。
    yum upgrade package_name:升级特定软件包。

  • 卸载软件包:
    yum remove package_name:卸载一个软件包,保留配置文件。

  • 查询软件包信息:
    yum info package_name:显示软件包的详细信息。

  • 搜索软件包:
    yum search keyword:搜索包含关键字的软件包。

  • 清理系统:
    yum clean packages:清理缓存中下载的软件包。
    yum clean all:清理所有缓存。

  • 其他常用选项:
    yum history:查看系统中执行的 yum 命令历史记录。
    yum list installed:列出所有已安装的软件包。

注意事项:

  • yum 是 Red Hat 系发行版中的默认软件包管理工具,提供了自动解决依赖关系的功能。
  • 在新版本的 Red Hat 系发行版中,yum 已经被 dnf 替代,dnf 是 yum 的升级版本,提供了更多功能和性能改进。
  • yum 可以通过配置文件进行定制,以满足特定需求。

2. Debian/Ubuntu系列软件包管理

2.1 Debian系列包管理工具介绍

2.1.1 dpkg
dpkg常用命令:
  • 安装软件包:
    dpkg -i package_file.deb:安装软件包,如果软件包已经安装并且当前包的版本较高,则会覆盖安装,相当于升级。
  • 卸载软件包:
    dpkg -r package_name:卸载已安装的软件包,保留配置文件。
    dpkg -P package_name:卸载软件包及其配置文件。
  • 查询软件包状态:
    dpkg -l package_name:显示已安装软件包的详细信息。
    dpkg -s package_name:显示已安装软件包的摘要信息。
    dpkg -C:检查损坏的软件包。
  • 查询软件包文件:
    dpkg -L package_name:列出软件包已安装的文件列表。
  • 查询软件包来源:
    dpkg -S /path/to/file:查找给定文件属于哪个软件包。
  • 重新配置软件包:
    dpkg-reconfigure package_name:重新配置软件包。
  • 提取软件包内容:
    dpkg-deb -x package_file.deb /target_directory:从 .deb 文件中提取软件包内容。
  • 其他常用选项:
    -I:显示软件包的信息。
    -c:显示软件包的内容。
    -X:提取软件包内容。

注意事项

  • dpkg 只能处理 .deb 格式的软件包,不会自动处理依赖关系。
  • 安装软件包时,可能会出现依赖项未满足的情况,需要手动解决依赖关系。
  • 谨慎使用 dpkg -P 命令,因为它会删除软件包的配置文件,可能导致数据丢失或系统不稳定。

dpkg 是一个强大而灵活的工具,适合进一步定制和管理软件包,但相对于高级包管理工具如 apt 和 apt-get,需要更多手动干预。

2.1.2 apt-get
  • 更新软件包列表:
    apt-get update: 更新本地软件包列表,它会检查软件源中的软件包是否有更新,并将最新的软件包列表信息下载到本地。
  • 安装软件包:
    apt-get install package_name: 从软件源安装指定的软件包。
    apt-get install package1 package2: 一次安装多个软件包。
  • 卸载软件包:
    apt-get remove package_name: 从系统中卸载指定的软件包,但保留其配置文件。
    apt-get purge package_name: 从系统中彻底移除指定的软件包,包括其配置文件。
  • 升级软件包:
    apt-get upgrade: 升级系统中已安装软件包的版本。
    apt-get dist-upgrade: 执行更大规模的升级,包括处理依赖关系变化。
  • 搜索软件包:
    apt-get search keyword: 在软件源中搜索包含关键字的软件包。
  • 显示软件包信息:
    apt-cache show package_name: 显示特定软件包的详细信息。
    apt-cache policy package_name: 显示软件包的安装候选版本信息。
  • 清理系统:
    apt-get autoclean: 移除已下载的软件包文件,但保留配置文件。
    apt-get clean: 移除所有已下载的软件包文件。
  • 其他操作:
    apt-get autoremove: 自动移除不再需要的软件包。
    apt-get check: 检查依赖关系问题。
2.1.3 apt

简介:2014年推出第一个apt-get的稳定版本,用于debian发行版.deb软件包安装。在debian8中成为标准
apt 命令是在 Debian 及其衍生发行版上用来管理软件包的高级工具,它是 apt-get 命令的一个更易用的替代工具。apt 命令提供了更简洁和人性化的界面,同时保留了 apt-get 命令的所有功能。以下是一些常用的 apt 命令及其作用:

  • 更新软件包列表:
    apt update:更新本地软件包列表,类似于 apt-get update。
  • 安装软件包:
    apt install package_name:安装指定的软件包,类似于 apt-get install package_name。
    apt install package1 package2:一次安装多个软件包。
  • 卸载软件包:
    apt remove package_name:从系统中卸载指定的软件包,但保留其配置文件,类似于 apt-get remove package_name。
    apt purge package_name:从系统中彻底移除指定的软件包,包括其配置文件,类似于 apt-get purge package_name。
  • 升级软件包:
    apt upgrade:升级系统中已安装软件包的版本,类似于 apt-get upgrade。
    apt full-upgrade:执行更大规模的升级,包括处理依赖关系变化,类似于 apt-get dist-upgrade。
  • 搜索软件包:
    apt search keyword:在软件源中搜索包含关键字的软件包。
  • 显示软件包信息:
    apt show package_name:显示特定软件包的详细信息,类似于 apt-cache show package_name。
    apt policy package_name:显示软件包的安装候选版本信息,类似于 apt-cache policy package_name。
  • 清理系统:
    apt autoclean:移除已下载的软件包文件,但保留配置文件,类似于 apt-get autoclean。
    apt clean:移除所有已下载的软件包文件,类似于 apt-get clean。
  • 其他操作:
    apt autoremove:自动移除不再需要的软件包,类似于 apt-get autoremove。
    apt check:检查依赖关系问题

apt命令和apt-get命令的区别:

功能 apt-get apt
更新软件包列表 apt-get update apt update
安装软件包 apt-get install <package_name> apt install <package_name>
卸载软件包 apt-get remove <package_name> apt remove <package_name>
升级软件包 apt-get upgrade <package_name> apt upgrade <package_name>
搜索软件包 apt-cache search <keyword> apt search <keyword>
显示软件包信息 apt-cache show <package_name> apt show <package_name>
清理系统 apt-get autoclean apt autoclean
自动移除软件包 apt-get autoremove apt autoremove

2.2 配置apt源(以Ubuntu为例)

Ubuntu24.04版本以后,apt源配置文件发生改变,不再使用以前的/ect/apt/sources.list文件,而改为/etc/apt/sources.list.d/ubuntu.sources,原来的sources.list配置文件中内容变成了如下一条注释:

# Ubuntu sources have moved to /etc/apt/sources.list.d/ubuntu.sources

ubuntu24.04以前apt源配置文件格式:

2.2.1 APT源配置(Ubuntu24.04之前)

格式:

deb [arch=amd64] <源地址> <发行版代号> <组件>

本地apt源配置示例

假设将iso挂载至/mnt目录,打开/etc/apt/sources.list文件,在里边添加如下一条语句:

deb file:///mnt focal main restricted

三方apt源配置示例

deb http://example.com/ubuntu focal main
  • file:///mnt:表示本地iso挂载目录
  • focal:ubuntu的发行代号,可以通过lsb_release -c命令查询得到
  • main/restricted: 表示所使用的该软件包源中的软件包类型,在Ubuntu中,软件包被分为几个类别,主要包括:main(包含由Ubuntu官方团队支持的自由软件)、restricted(包含由Ubuntu官方团队支持的但并非完全自由的软件例如,可能包含专有驱动程序)

修改完配置文件后,更新本地apt软件包列表:

apt update

注意:apt update 不会下载新的软件包文件,它的主要作用是更新本地系统中所有软件源的软件包列表信息,以获取最新的软件包版本、依赖关系等信息。在运行apt update后,在运行apt install或其他软件包管理命令时,系统将能够基于最新的软件包列表信息来执行相应的操作

2.2.2 APT源配置(Ubuntu24.04之后)

Enabled: no
Types: deb
URIs: http://archive.ubuntu.com/ubuntu
Suites: noble noble-updates
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

配置项解释:

  • Enabled: 表示该apt源是否启用
  • Types:指定该apt源中软件包类型,即是deb包还是rpm包
  • URIS: 指定该apt源的地址
  • Suites:指定该apt源所包含的套件
  • Components:指定使用该源中在 Ubuntu 中,软件包通常被分为 main、restricted、universe 和 multiverse 四个组件,每个组件代表不同的软件包类别。
  • Signed-By:指定了用于验证该存储库中软件包的签名密钥。这里指定了使用 /usr/share/keyrings/ubuntu-archive-keyring.gpg 来验证软件包的签名。

Comonents介绍

在 Ubuntu 系统中,软件包的来源和许可权归属通过组织在四个不同的软件包类型中来管理。这些软件包类型通常被称为“组件”(components),其含义如下:

  • main
    main 包含 Ubuntu 官方支持、自由软件的软件包。这些软件包由 Canonical 提供并接受官方的安全更新。大多数 Ubuntu 用户都会从 main 中安装软件。(推荐)
  • restricted
    restricted 包含由 Canonical 或 Ubuntu 社区提供的但不是自由软件的软件包。这些软件包的使用受到版权、法律或其他限制。通常包含一些硬件驱动程序和受限制的专有软件。
  • universe
    universe 包含由社区维护的自由软件软件包。这些软件包不受 Canonical 官方支持,但接受社区维护。universe 中的软件通常是开源的,但 Canonical 不承担对其支持的责任。
  • multiverse
    multiverse 包含非自由软件的软件包,也不受 Canonical 官方支持。这些软件包可能包含专有的插件、编解码器和其他受限制的软件。

3. zypper软件包管理(suse系统专用)

zypper是SUSE Linux发行版(比如openSUSE、SUSE Linux Enterprise)的软件包管理工具。

3.1 zypper常用命令介绍

zypperyum命令对比:

功能 zypper yum
更新软件包数据库 sudo zypper refresh sudo yum makecache
搜索软件包 zypper search <package_name> yum search <package_name>
安装软件包 sudo zypper install <package_name> sudo yum install <package_name>
更新软件包 sudo zypper update sudo yum update
删除软件包 sudo zypper remove <package_name> sudo yum remove <package_name>
列出已安装软件包 zypper list-updates yum list installed
添加软件源 sudo zypper addrepo <repository_url> 手动编辑 .repo 文件
列出所有软件源 zypper repos yum repolist
清理缓存 sudo zypper clean sudo yum clean all
安装建议和推荐的软件包 zypper install-recommends <package_name> yum install <package_name>

3.2 zypper本地源配置

在SUSE系统中配置本地源,需要编辑/etc/zypp/repos.d目录下的YaST2源配置文件。以下是一个基本的本地源配置示例:

  1. 创建一个新的源配置文件,例如local.repo:
vim /etc/zypp/repos.d/local.repo
  1. /etc/zypp/repos.d/local.repo文件中增加如下配置,假设本地源路径为file:///mnt, 保存退出
[local_repo]
name=Local Repository
enabled=1
autorefresh=1
type=yast2
baseurl=file:///mnt
gpgcheck=0
  1. 清除缓存并尝试从本地源进行更新
sudo zypper ar -f /path/to/your/local/repo local_repo
sudo zypper refresh
sudo zypper update
posted @   berlin-fly  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示