
Hallo und ein frohes neues Jahr euch allen.
Ich habe vor Kurzem das Nginx-DEB-Paket v1.4.4 aus der Debian-Backport-Quelle erstellt, das ich natürlich zur Apt-Quellenliste hinzugefügt habe, und alles lief großartig.
Meine Frage:Aktualisiert Debian Pakete, die ich persönlich aus den offiziellen Quellen erstellt habe, automatisch? Damit meine ich die Sicherheitspakete.
AKTUALISIEREN:
apt-get update
Ich habe sie heute ausgeführt apt-get -V upgrade
, um zu prüfen, wie sich Debian 7 Apt verhält … und das ist das Ergebnis:
root@debian-lab:~/nginx-1.4.4-packages# apt-get -V upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
nginx-full (1.4.4-1~bpo70+1 => 1.4.4-1~bpo70+1)
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/464 kB of archives.
After this operation, 9,027 kB disk space will be freed.
Do you want to continue [Y/n]?
Wie Sie sehen können, versucht apt ein Upgrade von(1.4.4-1~bpo70+1 => 1.4.4-1~bpo70+1), das sind im Grunde zwei identische Versionen, aber mein installiertes Deb-Paket hat benutzerdefinierte Nginx-Module, die zum Standard-Nginx-Full hinzugefügt wurden, und nach dem Update sind meine benutzerdefinierten Module alle weg und durch das standardmäßige Debian-Wheezy-Backport-Deb ersetzt. Ich habe mein Nginx-Backport-Deb-Paket aus der Debian-Backport-Quelle erstellt und Build-Deb ebenfalls über den Backport installiert, aber einige Abhängigkeiten wurden automatisch aus der stabilen Version installiert, das habe ich aus der ausführlichen Ausgabe gesehen.
Können Sie mir bitte anhand eines Beispiels helfen, dies zu verhindern?
AKTUALISIEREN
Ich habe versucht, das Paket mit Apt Pin zu versehen, aber es hat nicht funktioniert. Hier ist die Ausgabe, die ich erhalten habe:
apt-cache policy nginx-full
nginx-full:
Installed: 1.4.4-1~bpo70+1
Candidate: 1.4.4-1~bpo70+1
Version table:
1.4.4-1~bpo70+1 0
100 http://ftp.uk.debian.org/debian/ wheezy-backports/main amd64 Packages
*** 1.4.4-1~bpo70+1 0
100 /var/lib/dpkg/status
1.2.1-2.2+wheezy2 0
500 http://ftp.uk.debian.org/debian/ wheezy/main amd64 Packages
500 http://security.debian.org/ wheezy/updates/main amd64 Packages
Und das Folgende ist die Apt-Cache-Richtlinie von Nginx:
/etc/apt/preferences.d# apt-cache policy nginx
nginx:
Installed: 1.4.4-1~bpo70+1
Candidate: 1.4.4-1~bpo70+1
Package pin: 1.4.4-1~bpo70+1
Version table:
*** 1.4.4-1~bpo70+1 1001
100 http://ftp.uk.debian.org/debian/ wheezy-backports/main amd64 Packages
100 /var/lib/dpkg/status
1.2.1-2.2+wheezy2 1001
500 http://ftp.uk.debian.org/debian/ wheezy/main amd64 Packages
500 http://security.debian.org/ wheezy/updates/main amd64 Packages
Aber Apt versucht immer noch, es zu aktualisieren und zu ersetzen!!
Inhalt der Quellenliste:
deb http://ftp.uk.debian.org/debian/ wheezy main
deb-src http://ftp.uk.debian.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
# wheezy-updates, previously known as 'volatile'
deb http://ftp.uk.debian.org/debian/ wheezy-updates main
deb-src http://ftp.uk.debian.org/debian/ wheezy-updates main
# Wheezy Backports repository
deb http://ftp.uk.debian.org/debian wheezy-backports main
deb-src http://ftp.uk.debian.org/debian wheezy-backports main
Ich habe versucht, einmal den Paketnamen „nginx“ und ein anderes Mal mit nginx-full mit apt pin zu versehen.
Aber beide schaffen es nicht, das Paket zu halten!!!
Antwort1
Ich würde Ihnen empfehlen, die Version des Pakets zu erhöhen. APT weiß, dass die beiden Pakete nicht gleich sind, und versucht, das Paket aus vertrauenswürdigen Quellen zu installieren. Das dch -i
ist alles, was Sie brauchen. Fügen Sie einfach eine kurze Beschreibung hinzu und erstellen Sie das Paket neu.
Du kannst das Paket auch anders pinnen:
Package: nginx-full
Pin: origin ""
Pin-Priority: 999
Dadurch wird dem lokal installierten Paket eine höhere Priorität eingeräumt.
Wenn die Versionsnummer des Repositorys die aktuell installierte Version ersetzt und Sie keine Pinnung habenUndWenn eine Version veröffentlicht wird, ja, apt installiert das Paket aus den Repositories (hoffentlich mit dem bereits angewendeten Patch), wenn Sie über die richtigen Quellen verfügen.
Antwort2
Wenn Sie das Paket anheften, versucht apt-get nicht, es zu aktualisieren.
Um das Paket zu fixieren, erstellen Sie eine Datei in /etc/apt/preferences.d, z. B. /etc/apt/preferences.d/nginx
Fügen Sie Folgendes in die Datei ein:
Package: nginx
Pin: version 1.4.4-1~bpo70+1
Pin-Priority: 1001