当前位置: 首页 > article >正文

Linux 从 apt / yum 更新、升级中排除 / 保留 / 阻止特定软件包

注:本文为 “Linux 从 apt / yum 更新、升级中排除 / 保留 / 阻止特定软件包” 的两篇相关文章合辑。


从 Yum 更新中排除特定 / 某些包的三种方法

作者: Magesh Maruthamuthu 译者: LCTT geekpi

2019-09-07 14:58

作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。

如果是,如何排除?可以采取多少种方式?有三种方式可以做到,我们会在本篇中教你这三种方法。

包管理器是一组工具,它允许用户在 Linux 系统中轻松管理包。它能让用户在 Linux 系统中安装、更新/升级、删除、查询、重新安装和搜索软件包。

对于基于 Red Hat 的系统,我们使用 yum 包管理器 和 rpm 包管理器 进行包管理。

什么是 yum?

yum 代表 “Yellowdog Updater, Modified”。Yum 是用于 rpm 系统的自动更新程序和包安装/卸载器。

它在安装包时自动解决依赖关系。

什么是 rpm?

rpm 代表 “Red Hat Package Manager”,它是一款用于 Red Hat 系统的功能强大的包管理工具。

RPM 指的是 .rpm 文件格式,它包含已编译的软件和必要的库。

你可能有兴趣阅读以下与本主题相关的文章。如果是的话,请进入相应的链接。

  • 如何检查 Red Hat(RHEL)和 CentOS 系统上的可用安全更新
    https://www.2daygeek.com/check-list-view-find-available-security-updates-on-redhat-rhel-centos-system/

  • 在 Red Hat(RHEL)和 CentOS 系统上安装安全更新的四种方法
    https://www.2daygeek.com/install-security-updates-on-redhat-rhel-centos-system/

  • 在 Redhat(RHEL)和 CentOS 系统上检查或列出已安装的安全更新的两种方法
    https://www.2daygeek.com/check-installed-security-updates-on-redhat-rhel-and-centos-system/

方法 1:手动或临时用 yum 命令排除包

我们可以在 yum 中使用 --exclude-x 开关来阻止 yum 命令获取特定包的更新。

我可以说,这是一种临时方法或按需方法。如果你只想将特定包排除一次,那么我们可以使用此方法。

以下命令将更新除 kernel 之外的所有软件包。

要排除单个包:

    # yum update --exclude=kernel
    或者
    # yum update -x 'kernel'

要排除多个包。以下命令将更新除 kernel 和 php 之外的所有软件包。

    # yum update --exclude=kernel* --exclude=php*
    或者
    # yum update --exclude httpd,php

方法 2:在 yum 命令中永久排除软件包

这是永久性方法,如果你经常执行修补程序更新,那么可以使用此方法。

为此,请在 /etc/yum.conf 中添加相应的软件包以永久禁用软件包更新。

添加后,每次运行 yum update 命令时都不需要指定这些包。此外,这可以防止任何意外更新这些包。

    # vi /etc/yum.conf
    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=0
    debuglevel=2
    logfile=/var/log/yum.log
    exactarch=1
    obsoletes=1
    gpgcheck=1
    plugins=1
    installonly_limit=3
    exclude=kernel* php*

方法 3:使用 Yum versionlock 插件排除包

这也是与上面类似的永久方法。Yum versionlock 插件允许用户通过 yum 命令锁定指定包的更新。

为此,请运行以下命令。以下命令将从 yum update 中排除 freetype 包。

或者,你可以直接在 /etc/yum/pluginconf.d/versionlock.list 中添加条目。

    # yum versionlock add freetype
    Loaded plugins: changelog, package_upload, product-id, search-disabled-repos, subscription-manager, verify, versionlock
    Adding versionlock on: 0:freetype-2.8-12.el7
    versionlock added: 1

运行以下命令来检查被 versionlock 插件锁定的软件包列表。

    # yum versionlock list
    Loaded plugins: changelog, package_upload, product-id, search-disabled-repos, subscription-manager, verify, versionlock
    0:freetype-2.8-12.el7.*
    versionlock list done

运行以下命令清空该列表。

# yum versionlock clear

via: https://www.2daygeek.com/redhat-centos-yum-update-exclude-specific-packages/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出


从 apt 升级中排除 / 保留 / 阻止特定软件包的三种方法

作者: Magesh Maruthamuthu 译者: LCTT geekpi

| 2020-03-13 10:40

有时,由于某些应用依赖性,你可能会意外更新不想更新的软件包。这在全系统更新或自动包升级时经常会发生。如果发生这种情况,可能会破坏应用的功能。这会造成严重的问题,你需要花费大量时间来解决问题。

如何避免这种情况?如何从 apt-get 更新中排除软件包?

可以在 Debian 和 Ubuntu 系统上使用以下三种方法来完成。

  • apt-mark 命令
  • dpkg 命令
  • aptitude 命令

我们将分别详细展示。

方法 1:如何使用 apt-mark 命令排除 Debian/Ubuntu 系统上的软件包更新

apt-mark 用于将软件包标记/取消标记为自动安装。

hold 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。

unhold 选项用于取消先前面的设置,以允许重复执行所有操作。

运行以下命令以使用 apt-mark 命令保留指定的软件包。

    $ sudo apt-mark hold nano
    nano set on hold.

保留软件包后,请运行以下 apt-mark 命令查看它们。

    $ sudo apt-mark showhold
    nano

这表明在执行完整的系统更新时,不会升级 nano 包。

    $ sudo apt update
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Calculating upgrade… Done
    The following packages have been kept back:
      nano
    0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

运行以下命令,使用 apt-mark 命令取消保留 nano 包。

    $ sudo apt-mark unhold nano
    Canceled hold on nano.

方法 2:如何使用 dpkg 命令在 Debian/Ubuntu 系统上排除软件包更新

dpkg 命令是一个 CLI 工具,用于安装、构建、删除和管理 Debian 软件包。dpkg 的主要且更用户友好的前端是 aptitude

运行以下命令使用 dpkg 命令阻止给定的软件包。

语法:

    $ echo "package_name hold" | sudo dpkg --set-selections

运行以下 dpkg 命令以保留 apache2 包。

$ echo "apache2 hold" | sudo dpkg --set-selections

保留软件包后,请运行以下命令查看它们。

    $ sudo dpkg --get-selections | grep "hold"
    apache2                        hold

它会显示在执行完整的系统更新时,不会升级 apache2包。

    $ sudo apt update
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Calculating upgrade… Done
    The following packages have been kept back:
      apache2
    0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

运行以下命令,使用 dpkg 命令取消对指定软件包的保留。

语法:

$ echo "package_name install" | sudo dpkg --set-selections

运行以下命令,使用 dpkg 命令取消保留 apache2 包。

$ echo "apache2 install" | sudo dpkg --set-selections

方法 3:如何使用 aptitude 命令排除 Debian/Ubuntu 系统上的软件包更新

aptitude 命令是 Debian 及其衍生版本的基于文本的软件包管理界面。

它允许用户查看软件包列表并执行软件包管理任务,例如安装、升级和删除软件包。它可以从可视界面或命令行执行操作。

运行以下命令,使用 aptitude 命令保留指定的软件包。

$ sudo aptitude hold python3

保留某些软件包后,请运行以下命令查看它们。

    $ sudo dpkg --get-selections | grep "hold"
    或者
    $ sudo apt-mark showhold
    python3

这表明在执行完整的系统更新时,不会升级 python3 软件包。

    $ sudo apt update
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Calculating upgrade… Done
    The following packages have been kept back:
      python3
    0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

使用 aptitude 命令运行以下命令以解除对 python3 软件包的保留。

$ sudo aptitude unhold python3

via: https://www.2daygeek.com/debian-ubuntu-exclude-hold-prevent-packages-from-apt-get-upgrade/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出


http://www.kler.cn/a/410612.html

相关文章:

  • docker镜像、容器、仓库介绍
  • FFmpegFrameRecorder 切分视频文件时结束条件设置不当导致切分后的文件过短问题
  • elasticsearch7.10.2集群部署带认证
  • Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化
  • UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取
  • 探索 Vue的nextTick :原理剖析、使用场景及代码实践详解
  • 算法日记 33 day 动态规划(打家劫舍,股票买卖)
  • LeetCode—704. 二分查找(简单)
  • 用el-scrollbar实现滚动条,拖动滚动条可以滚动,但是通过鼠标滑轮却无效
  • Python绘制太极八卦
  • 无人机+无人车+机器狗+自组网:城市一空地体化指挥系统技术详解
  • element-ui 中el-calendar 日历插件获取显示的第一天和最后一天【原创】
  • 摄像机常见的问题及解决方法
  • HTML5 视频 Vedio 标签详解
  • 实现 UniApp 右上角按钮“扫一扫”功能实战教学
  • Java面试之多线程并发篇
  • django authentication 登录注册
  • Stable Diffusion入门教程
  • 从多个角度探索TOX革新Web3时代价值创造与重新分配
  • MySQL与Informix数据库中的同义表创建:深入解析与比较
  • Web3 游戏周报(11.17 - 11.23)
  • 远程控制软件:探究云计算和人工智能的融合
  • JavaWeb——Mybatis
  • 什么是回退机制
  • 视频推拉流EasyDSS互联网直播点播平台技术特点及应用场景剖析
  • ubuntu 安装proxychains