it-swarm.com.de

Pakete von Updates ohne APT Pin zurückhalten?

Ich weiß, wie man Pakete mit Apt pinnt. Das ist nicht was ich machen will. Andere Fragen wurden entweder mit Stecknadeln oder vorübergehend mit Stecknadeln beantwortet. Ich will das nicht machen.

Was ich tun möchte, ist, Pakete auf dieselbe Weise zurückzuhalten, wie es der Kernel getan hat:

# apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages have been kept back:
  linux-generic-pae linux-headers-generic-pae linux-image-generic-pae
The following packages will be upgraded:

Ich möchte dieser Liste Tomcat-* und mysql-* und Sun-* hinzufügen. In der Vergangenheit gab es dafür einen Konfigurationsparameter. Ich habe immer gedacht, es wäre so etwas wie Apt::Get::HoldPkgs oder Apt::HoldPkgs, aber ich kann es nicht finden.

Ich möchte, dass diese Pakete von Updates zurückgehalten werden, bis ich sie speziell mit einem apt-get install anfordere.

Ich habe die apt-get Konfiguration Apt::NeverAutoRemove gefunden. Wird das tun, was ich will?

Hinzugefügte Frage: Ich stelle fest, dass Apt::NeverAutoRemove und Apt::Never-MarkAuto-Sections (unter anderem) nicht dokumentiert sind, soweit ich sehen kann. Sie befinden sich nicht in den Manpages. Weder ist aptitude::Keep-Unused-Pattern noch aptitude::Get-Root-Command.

Gibt es eine umfassende und vollständige Dokumentation für apt.conf?

14
Mei

Die Antwort ist, dpkg --set-selections zu verwenden. Wenn Sie den Befehl dpkg --get-selections ausführen, können Sie sehen, was bereits eingestellt ist:

$ dpkg --get-selections | head
acct                                            install
adduser                                         install
apparmor                                        install
apparmor-utils                                  install
apt                                             install
apt-transport-https                             install
apt-utils                                       install
aptitude                                        install
at                                              install
auditd                                          install

Betrachten Sie in diesem Fall das Paket dnsutils:

$ Sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
  bind9-Host dnsutils libbind9-60 libdns64 libisc60 libisccc60 libisccfg60 liblwres60
8 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,257kB of archives.
After this operation, 0B of additional disk space will be used.
Do you want to continue [Y/n]? n
Abort.

Jetzt ändern wir es - versetzen das Paket in die Warteschleife:

$ echo dnsutils hold | Sudo dpkg --set-selections

Überprüfen Sie die Ergebnisse:

$ dpkg --get-selections | grep dnsutils
dnsutils                                        hold

Versuchen Sie das Update erneut:

$ Sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  bind9-Host dnsutils libbind9-60 libdns64 libisc60 libisccfg60 liblwres60
The following packages will be upgraded:
  libisccc60
1 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
Need to get 29.9kB of archives.
After this operation, 0B of additional disk space will be used.
Do you want to continue [Y/n]? n
Abort.

Jetzt werden dnsutils - und die dazugehörigen Pakete - zurückgehalten, so wie wir es uns gewünscht haben.

15
Mei