Команда Ubuntu APT - Как остановить / отключить автоматическое обновление пакета? - PullRequest
0 голосов
/ 27 июня 2019

Я установил Docker , Kubeadm , Kubelet и Kubectl для моего кластера Kubernetes на Ubuntu 18.04 LTS. Я не хочу, чтобы эти пакеты автоматически обновлялись. Потому что между ними возникнет некоторая проблема, когда обновление произойдет между ними. Я хочу обновить вышеуказанные пакеты вручную, когда они станут стабильными.

Какую команду я должен использовать, чтобы остановить их автоматическое обновление?

Команды, которые я использовал для их установки в Ubuntu 18.04

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update

sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

sudo apt-get update

sudo apt-get install -y kubelet=1.12.7-00 kubeadm=1.12.7-00 kubectl=1.12.7-00

Ответы [ 3 ]

1 голос
/ 27 июня 2019

Вы можете использовать статус 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. У меня может быть помощник сценария оболочки где-то, но мне, возможно, придется копать.

0 голосов
/ 27 июня 2019

Находка дня :). Ubuntu apt дает вам команду задержать автоматическое обновление пакета. Спасибо Дирк за подсказку.

sudo apt-mark hold docker-ce kubelet kubeadm kubectl
0 голосов
/ 27 июня 2019

apt не имеет yum, как флаги --enable-repo и --disablerepo при выполнении установки или обновления.Способ управления репозиториями показан здесь

Но для вашего случая то, как вы добавили репозитории, к которым они добавлены /etc/apt/sources.list, поэтому вы можете использовать sed, чтобы закомментироватьстроки репозитория, которые вы добавили для установки docker и kubernetes.Примечание: вы должны закомментировать строки после установки и перед выполнением sudo apt-get update

Пример:Чтобы отключить Docker репо:sed -i 's/^deb.*docker.*/# &/g' /etc/apt/sources.listВключите репозиторий Docker для обновления вручную:sed -i '/^# deb .*docker.*/s/^# //' /etc/apt/sources.list

...