0
votes

Comment arrêter / désactiver les mises à jour automatiques des packages sous Linux?

J'ai installé des packages ( Docker, Kubeadm, Kubelet, Kubectl ) pour mon cluster Kubernetes sur Ubuntu 18.04 LTS.

Je ne souhaite pas que ces packages soient mis à jour automatiquement car il y aura un problème entre eux lorsque la mise à jour se produira entre eux. Je veux juste mettre à jour manuellement quand ils sont stables.

Quelle est la commande correcte pour arrêter la mise à jour automatique des packages?

Commandes que j'ai utilisées pour les installer sur 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


4 Réponses :


0
votes

apt n'a pas yum comme les indicateurs --enable-repo et --disablerepo lors de l'exécution installer ou mettre à jour. Un moyen de gérer les dépôts est présenté ici

Mais pour votre cas, la façon dont vous avez ajouté les référentiels, ils ont été ajoutés à /etc/apt/sources.list donc vous pouvez utiliser sed pour commenter le les lignes de référentiel que vous avez ajoutées pour installer docker et kubernetes .
Remarque: vous devez commenter les lignes après l'installation et avant d'effectuer sudo apt-get update

Exemple:

Pour désactiver le repo docker:
sed -i 's / ^ deb. * docker. * / # & / g' /etc/apt/sources.list

Activez le référentiel docker pour la mise à jour manuelle:
sed -i '/ ^ # deb. * docker. * / s / ^ # //' /etc/apt/sources.list


2 commentaires

Vous ne voulez pas de ce dépôt à l'échelle du dépôt, en particulier car dpkg peut parfaitement le faire au niveau par paquet en le définissant sur hold.


@DirkEddelbuettel pouvez-vous poster un exemple? tbh ces dépôts n'ont qu'un seul but pour installer docker et kuberneters et l'auteur ne veut pas que ceux-ci soient mis à jour, alors quel est le mal à commenter l'ensemble du dépôt?



2
votes

Vous pouvez utiliser le statut hold pour un package (ou un ensemble de packages) pour ne pas impliquer sa mise à niveau. Cela vous donne la possibilité plus fine de décider par paquet de ce qui devrait ou ne devrait pas être mis à niveau. Très utile lors des digressions connues, des bugs et des changements subtils de comportement.

De la page de manuel de dpkg et édité / indenté:

   --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.

Le format est sans doute un peu bizarre - mais c'est très puissant et utile. J'y ai compté plusieurs fois au cours de mes vingt-cinq ans (!!) avec Debian / Ubuntu. J'ai peut-être un assistant de script shell quelque part, mais je devrai peut-être creuser.


0 commentaires

-1
votes

La trouvaille du jour :). Ubuntu apt vous donne la commande pour maintenir la mise à jour automatique du paquet. Merci à Dirk de m'avoir donné l'indice.

sudo apt-mark hold docker-ce kubelet kubeadm kubectl


0 commentaires

0
votes

Motivation : vous ne voulez prendre aucun risque sur les packages sensibles sur votre machine Linux (cela se produit lorsque votre application est en production et que les clients l'utilisent, ou une tâche importante exécutée à l'intérieur, plus récente version peut interrompre les modifications et provoquer accidentellement un temps d'arrêt). Dans cette situation, vous souhaitez épingler des versions spécifiques à vos packages et vous assurer qu'aucune mise à niveau ne se produit sans action et approbation explicites de votre part.

Solution : vous devez désactiver les mises à niveau sans assistance et épingle votre package dans la version actuelle que vous utilisez (en d'autres termes - conservez cette version).

étape 1 : désactiver mise à jour automatique (alias mises à niveau sans assistance)

sudo apt-mark hold <package-name>

étape 2 : maintenez et geler le package spécifique que vous souhaitez empêcher de procéder à une mise à jour automatique:

$ 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";


0 commentaires