• 如何从 apt-get 升级中排除特定软件包


    在处理某些项目时,有时您需要环境的稳定性。更新包可能会导致整个项目失败。有时,我们不小心升级了这些软件包,这会在服务器上造成严重问题。这就是为什么维护特定版本的软件包很重要的原因。

    本教程将向您展示如何从 Ubuntu 或 Debian 发行版的升级中排除特定软件包。

    1)用一些命令排除包

    在系统的全面升级过程中,存在一些排除或保留特定包的各种方法。可以将包裹标记为保留。在本文中,我们将使用 virtualbox 包作为示例。可以看到安装的版本

    # dpkg -l | grep virtualbox
    ii  virtualbox    5.0.18-dfsg-2build1   amd64   x86  virtualization solution - base binaries

    现在您可以看到我们有可用的更新版本

    # apt list --upgradable
    Listing... Done
    virtualbox/xenial-updates 5.0.40-dfsg-0ubuntu1.16.04.2 amd64 [upgradable from: 5.0.18-dfsg-2build1]

    您可以使用以下命令标记包

    apt-mark

    您可以使用apt-mark命令后跟hold选项。这将防止软件包被自动安装、升级或删除。语法如下

    apt-mark hold package

    您可以按如下方式实际使用它

    # apt-mark hold virtualbox 
    virtualbox set on hold.

    现在你可以检查如下

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

    可以看到无法升级包。

    要取消标记,请使用以下语法

    apt-mark unhold package

    实际上你有下面的命令

    # apt-mark unhold virtualbox
    Canceled hold on virtualbox.

    dpkg

    您也可以使用该dpkg --set-selection命令标记包。语法如下

    # echo " hold" | dpkg --set-selections

    实际上,您可以按以下方式进行

    # echo "virtualbox hold" | dpkg --set-selections

    您没有任何显示结果的回报。所以,直接检查升级

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

    你可以看到它有效。

    现在取消保留,命令不同并且尊重语法

    echo "package install" | sudo dpkg --set-selections

    所以,使用命令

    # echo "virtualbox install" | dpkg --set-selections

    你不会有回报。因为我们已经是 root 用户,所以我们不使用sudo

    Aptitude

    您也可以使用 aptitude 命令。默认情况下,您的系统上不存在此命令,因此您需要按以下方式安装它

    # apt install aptitude
    Reading package lists... Done
    Building dependency tree 
    Reading state information... Done
    The following additional packages will be installed:
     aptitude-common libcwidget3v5

    要使用命令标记包,请使用语法

    aptitude hold package

    当你用 aptitude 标记一个包裹时,你没有回报。

    # aptitude hold virtualbox
    No packages will be installed, upgraded, or removed.
    0 packages upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
    Need to get 0 B of archives. After unpacking 0 B will be used.

    如果您使用 来检查结果aptitude upgrade,您将不会提及已标记的包,但如果您尝试,您将拥有它apt upgrade

    您可以使用语法取消保留

    aptitude unhold package

    如下

    # aptitude unhold virtualbox
    No packages will be installed, upgraded, or removed.
    0 packages upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

    Dselect

    您可以使用 dselect dpkg 的前端命令,该命令用于管理 Debian 和基于 Debian 的 Linux 发行版中的软件包。默认情况下不存在,因此您需要安装它

    # apt install dselect

    启动命令

    现在仔细阅读帮助。

    现在您可以使用空格键盘退出帮助并找到要保存的包。你可以/用来做研究

    现在您可以使用H=

    现在你可以退出了Q。它将打开第一个菜单,选择退出。您可以通过升级检查

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

    你可以看到它有效。

    如果要取消标记包,则需要使用+而不是H=用于保持在结果上具有三颗星,如下所示

    2) 使用apt配置文件的block包

    标记包的一种方法是编辑 /etc/apt/preferences文件。要在升级整个系统的同时不升级软件包,我们必须设置一个小于零 (0) 的 apt pin 优先级。如果文件不存在,则必须创建它。您需要尊重以下语法

    Package: <package-name> ('*' for all packages)
    Pin: release * (o=Ubuntu for Ubuntu origin)
    Pin-Priority: <less than 0>

    在 Release Pin 行上,您可以添加包的发起者,对于 Pin-Priority 数字,数字越大意味着偏好越高, -1 等于忽略该包。还有一些其他选项可以使用。

    要阻止 virtualbox 包,请编辑文件如下

    Package: virtualbox
    Pin: release o=Ubuntu
    Pin-Priority: -1

    保存并退出。这就是您阻止包裹的全部内容。要取消保留包,您可以注释文件的行或简单地删除文件。

    您可以看到可以使用一些方法来阻止一个包。这对于维护项目的稳定版本很有用。您可以选择您喜欢的方法。您不需要为同一目标使用两种或多种方法。

  • 相关阅读:
    React造轮子项目工程搭建经历
    facade(门面模式或外观模式)
    编译安装、RPM和tar包等安装方式的对比
    红黑树介绍
    GFS分布式文件系统
    10.12021 CCPC 新疆省赛ABD
    微服务框架 SpringCloud微服务架构 6 Nacos 配置管理 6.1 Nacos 实现配置管理
    基于多策略的改进花授粉算法
    CSS Position定位(详解网页中的定位属性)
    zabbix自动发现
  • 原文地址:https://blog.csdn.net/taoxicun/article/details/126588554