Ubuntu APT命令-如何停止/禁用软件包的自动更新?

时间:2019-06-27 13:05:16

标签: ubuntu ubuntu-18.04 apt

我已在Ubuntu 18.04 LTS上为Kubernetes集群安装了 Docker Kubeadm Kubelet Kubectl 。 。我不希望这些软件包自动更新。因为当彼此之间进行更新时,它们之间会出现一些问题。我想在稳定时手动更新上述软件包。

我要用来阻止它们自动更新的命令是什么?

我曾经在Ubuntu 18.04上安装它们的命令

PushNotifications.sendPushNotification(to: customerFcmToken, title: String(format: NSLocalizedString( "ORDER_DELETED_PUSH_TITLE", comment: ""), orderId), subtitle: String(format: NSLocalizedString( "ORDER_DELETED_PUSH_SUBTITLE", comment: ""), UserDetails.fullName!), body: String(format: NSLocalizedString("ORDER_DELETED_PUSH_BODY", comment: "") , customerName))

4 个答案:

答案 0 :(得分:1)

您可以使用一个软件包(或一组软件包)的hold状态来不进行升级。这样,您就可以根据每个软件包确定应该升级或不应该升级什么的更精细的功能。在已知的题外话,错误和行为的细微变化期间非常有帮助。

dpkg的手册页开始,并对其进行了编辑/缩进:

   --get-selections [package-name-pattern...]
          Get list of package selections, and write it to stdout. Without a pattern,
          non-installed packages (i.e. those which have been previously purged) will
          not be shown.

   --set-selections
          Set package selections using file read from stdin. This file should be in
          the format “package state”, where state is one of install, hold, deinstall 
          or purge. Blank lines and comment lines beginning with ‘#’ are also 
          permitted.

          The available file needs to be up-to-date for this command to be useful, 
          otherwise unknown packages will be ignored with a warning. See the 
          --update-avail and  --merge-avail  commands  for more information.

格式可以说有点怪异-但这非常强大并且很有帮助。在Debian / Ubuntu的二十五年(!!)中,我几次依靠它。我可能在某个地方有一个shell脚本助手,但是我可能需要挖掘。

答案 1 :(得分:1)

动机:您不想为 linux 机器上的敏感包承担任何风险(当您的应用程序在生产中并且客户使用它时,或者在内部运行的一些重要任务,更新时,就会发生这种情况版本可能会破坏更改并意外导致停机)。在这种情况下 - 您希望将特定版本固定到您的软件包中,并确保在没有您的明确操作和批准的情况下不会进行升级。

解决方案:您应该禁用 unattended-upgrades 功能并将您的软件包pin 转换为您使用的当前版本(换句话说 - 保留此版本)。

第 1 步:禁用自动升级(也称为无人值守升级)

$ sudo vim /etc/apt/apt.conf.d/20auto-upgrades

#edit these lines - which disabling the upgrade feature.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "0";

第 2 步:保留并冻结您要防止自行升级的特定软件包:

sudo apt-mark hold <package-name>

答案 2 :(得分:0)

apt在执行安装或更新时没有yum之类的标志--enable-repo--disablerepohere

显示了一种管理仓库的方法

但是对于您的情况,您将存储库添加到/etc/apt/sources.list的方式,因此您可以使用sed注释掉为安装docker添加的存储库行和kubernetes
注意:您应在安装后和执行sudo apt-get update

之前注释掉行

示例:

要禁用docker repo:
sed -i 's/^deb.*docker.*/# &/g' /etc/apt/sources.list

启用docker repo进行手动更新:
sed -i '/^# deb .*docker.*/s/^# //' /etc/apt/sources.list

答案 3 :(得分:0)

当天查找:)。 Ubuntu apt 向您提供命令来保存软件包的自动更新。感谢Dirk给我的提示。

sudo apt-mark hold docker-ce kubelet kubeadm kubectl