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

embedded/2024/11/26 10:01:03/

注:本文为 “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/$releaseverkeepcache=0debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1installonly_limit=3exclude=kernel* php*

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

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

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

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

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

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

    # yum versionlock listLoaded plugins: changelog, package_upload, product-id, search-disabled-repos, subscription-manager, verify, versionlock0: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 nanonano set on hold.

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

    $ sudo apt-mark showholdnano

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

    $ sudo apt updateReading package lists… DoneBuilding dependency treeReading state information… DoneCalculating upgrade… DoneThe following packages have been kept back:nano0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

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

    $ sudo apt-mark unhold nanoCanceled 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 updateReading package lists… DoneBuilding dependency treeReading state information… DoneCalculating upgrade… DoneThe following packages have been kept back:apache20 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 showholdpython3

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

    $ sudo apt updateReading package lists… DoneBuilding dependency treeReading state information… DoneCalculating upgrade… DoneThe following packages have been kept back:python30 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.ppmy.cn/embedded/140589.html

相关文章

Linux系统编程之进程基础知识

概述 在Linux系统中,进程是指一个正在运行的程序实例。每个进程都有一个唯一的进程标识符,即PID,操作系统通过这个PID来唯一识别和管理各个进程。进程不仅仅是程序代码的运行实例,它还包含了程序运行时所需的各种资源,…

【JavaEE初阶】枫叶经霜艳,梅花透雪香-计算机是如何运行的?

本篇博客给大家带来的是与计算机相关的知识点, 包括:计算机的组成, 指令, 进程(重点). 文章专栏: JavaEE初阶 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 1. 计算机的组成 1.1 计算机的发展史 计算…

基于SSM的校园订餐管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

【Qt流式布局改造支持任意位置插入和删除】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、源代码二、删除代码三、扩展总结 前言 最近在做一个需求需要流式布局,虽然官方example里有一个流式布局范例,但是不能满足我的需求…

蒙特卡洛方法(Monte Carlo,MC)

目录 1 序言 2 Monte Carlo法计算积分 3 最优化计算Monte Carlo法 1 序言 蒙特卡罗方法(Monte Carlo)是由冯诺依曼和乌拉姆等人发明的,“蒙特卡罗”这个名字是出自摩纳哥的蒙特卡罗赌场,这个方法是一类基于概率的方法的统称。是一种应用随机数来进行…

PMP–一、二、三模、冲刺–分类–5.范围管理–技巧–引导

文章目录 技巧一模5.范围管理--3.定义范围--工具与技术--引导--在研讨会和座谈会中使用引导技能来协调具有不同期望或不同专业知识的关键干系人,使他们就项目可交付成果以及项目和产品边界达成跨职能的共识。引导:题干关键词 “需求不同、需求差异、需求…

【jvm】new对象的过程

目录 1. 说明2. 类加载3. 对象创建4. 返回对象引用 1. 说明 1.在Java中,使用new关键字创建对象的过程是一个复杂而精细的过程,它涉及多个步骤,包括类加载、内存分配、初始化等。 2. 类加载 1.加载:Java虚拟机(JVM&a…

AI服务器核心部件产业链升级分析

AI服务器核心部件产业链剖析(2024) "本文探讨了AI服务器的产业链,涵盖了芯片CPU、GPU,内存DRAM和HBM,本地存储SSD,NIC、PCIe插槽、散热等关键元素。同时,对服务器CPU架构进行了深度剖析,包括X86、ARM、MIPS和RISC…