Die kurze Antwort:
Über die APT-Voreinstellungsdatei / etc / apt / preferences kann gesteuert werden, welche Versionen von Paketen für die Installation ausgewählt werden .
Hier ist die Datei /etc/apt/preferences
, die apt-get
verwendet wird, um zu entscheiden, welche Version ausgewählt werden muss, wenn es viele Versionen eines einzelnen Pakets gibt. Damit hat jedes Paket, das aus dem lokalen Repository stammt, Vorrang vor den anderen Paketen.
Paket: *
Pin: Ursprung ""
Pin-Priorität: 1001
Dies steuert nicht die Version, sondern die Quelleneinstellung, wenn beide Pakete dieselbe Version haben. Wenn Sie höchste Priorität für das gleiche Paket zuweisen Version in Ihrem lokalen Repo, schreiben Sie sie an der Spitze der /etc/apt/sources.list
Datei>
Antwort auf die ursprüngliche Frage:
Wie ordne ich dem lokalen Repository die höchste Priorität zu, ohne die Datei sources.list zu verwenden?
Es gibt keine Möglichkeit, dem lokalen Repository die höchste Priorität zuzuweisen, ohne die sources.list
Datei zu verwenden. Sie müssen sie oben in "sources.list" setzen, wenn Sie Ihrem lokalen Repo die höchste Priorität zuweisen möchten.
Zusammenfassende Antwort auf diese Frage:
Wie kann ich dafür sorgen, dass apt-get lokale Repository-Pakete bevorzugt, anstatt dieselbe Paketversion erneut von offiziellen Repositorys herunterzuladen? Das lokale Repository ist signiert und vertrauenswürdig. Wir haben bereits versucht, Prioritäten für apt-Einstellungen festzulegen.
Unter Verwendung der /etc/apt/sources.list
Datei müssen Sie Ihre lokale Repository-Zeile am Anfang dieser Datei platzieren. wie die unten.
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)] / präzise main eingeschränkt
deb Datei: / media / Main / Precise-Debs-New /
deb Datei: / media / Main / Linux-Software / Ubuntu / Precise /
deb http://archive.ubuntu.com/ubuntu Genaues, auf das Hauptuniversum beschränktes Multiversum
deb-src http://archive.ubuntu.com/ubuntu präzises Universum Hauptmultiversum eingeschränkt #Added by software-properties
# deb cdrom: [Xubuntu 12.04 LTS_Precise Pangolin_ - Release i386 (20120423.1)] / präzises eingeschränktes Universum für mehrere Universen
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)] / präzise main eingeschränkt
# deb http://archive.canonical.com/ubuntu genauer Partner
# deb-src http://archive.canonical.com/ubuntu präziser Partner
# deb http://extras.ubuntu.com/ubuntu genaue Haupt
# deb-src http://extras.ubuntu.com/ubuntu genaue Haupt
Und ja, "apt_preference" hat nichts mit der Auswahl von Instanzen der Pakete mit derselben Version zu tun . Der Punkt hier ist, dass Sie keine /etc/apt/preference
Datei verwenden können, um die Auswahl / Verwendung einer .deb
Datei aus Ihrem lokalen Repository zu erzwingen, indem Sie Ihrem lokalen Repository die höchste Priorität zuweisen. Diese Datei (Voreinstellung) wird verwendet, um eine bestimmte Version auszuwählen, nicht eine bestimmte Instanz (.deb-Datei) derselben Version. Im letzteren Fall müssen Sie die /etc/apt/sources.list
Datei mit der oben genannten Methode verwenden.
Erläuterung:
Scheint, dass wir alle den apt_preference
Zweck missverstanden haben , das apt_preference-Handbuch beschreibt dies in den ersten 3 Absätzen !!
Über die APT-Voreinstellungsdatei / etc / apt / preferences kann gesteuert werden, welche Versionen von Paketen für die Installation ausgewählt werden .
Für die Installation stehen möglicherweise mehrere Versionen eines Pakets zur Verfügung, wenn die Datei sources.list (5) Verweise auf mehrere Distributionen enthält (z. B. stable und testing). APT weist jeder verfügbaren Version eine Priorität zu. Abhängig von Abhängigkeiten wählt apt-get (8) die Version mit der höchsten Priorität für die Installation aus. Die APT-Voreinstellungsdatei überschreibt die Prioritäten, die APT standardmäßig Paketversionen zuweist, und gibt dem Benutzer die Kontrolle darüber, welche Version für die Installation ausgewählt wird.
Und das sehr wichtige steht im dritten Absatz
Möglicherweise sind mehrere Instanzen derselben Version eines Pakets verfügbar, wenn die Datei sources.list (5) Verweise auf mehr als eine Quelle enthält. In diesem Fall lädt apt-get (8) die Instanz herunter, die am frühesten in der Datei sources.list (5) aufgeführt ist. Die APT-Voreinstellungsdatei wirkt sich nicht auf die Wahl der Instanz aus, sondern nur auf die Wahl der Version .
Diese Kursivschrift stammt von mir
Schauen wir uns das an einem Beispiel an:
Ich habe die genaue Version von compiz-fusion-plugins-extra
, aber ich habe sie zu Demonstrationszwecken deaktiviert
Hier ist die Datei /etc/apt/preferences
, die apt-get
verwendet wird, um zu entscheiden, welche Version ausgewählt werden muss, wenn es viele Versionen eines einzelnen Pakets gibt. (In diesem Beispiel compiz-fusion-plugins-extra
hat mehrere Versionen.
Paket: *
Pin: Ursprung ""
Pin-Priorität: 1001
Diese Datei fordert apt-get
zur Installation vom lokalen Repository für alle Pakete auf, die mehrere Versionen in verschiedenen Repositorys haben.
Mit anderen Worten, wenn ich ein Paket xapps
mit einer Version 1.0
in meinem lokalen Repository habe und dasselbe Paket xapps
in Precises Repository mit einer höheren Version vorhanden ist 2.0
, apt-get
wird beispielsweise die Version aus dem lokalen Repository, dh Version, vorgezogen 1.0
.
Hier ist meine /etc/apt/sources.list
Akte
deb http://archive.ubuntu.com/ubuntu Genaues, auf das Hauptuniversum beschränktes Multiversum
deb-src http://archive.ubuntu.com/ubuntu präzises Universum Hauptmultiversum eingeschränkt #Added by software-properties
deb http://security.ubuntu.com/ubuntu/ präzise-Sicherheitsuniversum Hauptmultiversum eingeschränkt
deb http://archive.ubuntu.com/ubuntu präzise-Updates Universum Haupt-Multiversum eingeschränkt
deb http://archive.ubuntu.com/ubuntu Precise-Backports-Universum Haupt-Multiversum eingeschränkt
# deb http://archive.canonical.com/ubuntu genauer Partner
# deb-src http://archive.canonical.com/ubuntu präziser Partner
# deb http://extras.ubuntu.com/ubuntu genaue Haupt
# deb-src http://extras.ubuntu.com/ubuntu genaue Haupt
deb Datei: / media / Main / Linux-Software / Ubuntu / Oneiric / #dies ist ein Oneiric-Repository.
deb Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty /
deb Datei: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu /
deb Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty_new /
Obwohl ich das Repository des genauen in der Datei bereits aufgeführt habe, wird dadurch kein apt-get
Paket aus diesem Repository ausgewählt. Wie im Handbuch beschrieben
Die APT-Voreinstellungsdatei wirkt sich nicht auf die Wahl der Instanz aus, sondern nur auf die Wahl der Version.
Die Ausgabe des Befehls apt-cache policy compiz-fusion-plugins-extra
war also erwartungsgemäß wie folgt
anwar @ edubuntu-lenovo: / etc / apt $ apt-cache-Richtlinie compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Installiert: (keine)
Kandidat: 0.9.5.94-0ubuntu1 / ** niedrigere Versionen für Priorität auswählen ** /
Versionstabelle:
0.9.7.0 ~ bzr9-0ubuntu6 0
500 http://archive.ubuntu.com/ubuntu/ exact / universe i386-Pakete
0.9.5.94-0ubuntu1 0
1001 Datei: / media / Main / Linux-Software / Ubuntu / Oneiric / Packages
0.9.4-0ubuntu3 0
1001 Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
Hier steht die Kandidatenversion 0.9.5.94-0ubuntu1
(die sich im lokalen Repository befindet) nicht 0.9.7.0~bzr9-0ubuntu6 0
im genauen Repository. obwohl die genaue 'wurde zuerst in der sources.list
Datei aufgeführt.
Ein Beispiel für apt-get
einen Installationsversuch compiz-fusion-plugins-extra
nach dem Festlegen der höchsten Priorität für das lokale Repository.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get installiere compiz-fusion-plugins-extra
Paketlisten lesen ... Fertig
Abhängigkeitsbaum erstellen
Statusinformationen werden gelesen ... Fertig
Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
x11-apps x11-xfs-utils xinit x11-Sitzungs-utils libfs6
Verwenden Sie "apt-get autoremove", um sie zu entfernen.
Die folgenden zusätzlichen Pakete werden installiert:
compiz-core compiz-plugins-default compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Vorgeschlagene Pakete:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Die folgenden Pakete werden ENTFERNT:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 Ubuntu-Desktop-Einheit xorg xserver-xorg
xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse
xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ati
xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode
xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic
xserver-xorg-video-nouveau xserver-xorg-video-openchrome
xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon
xserver-xorg-video-s3 xserver-xorg-video-savage
xserver-xorg-video-siliconmotion xserver-xorg-video-sis
xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-dreizack
xserver-xorg-video-vesa
Die folgenden NEUEN Pakete werden installiert:
compiz-fusion-plugins-extra compiz-plugins-extra
Die folgenden Pakete werden DOWNGRADED:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 aktualisiert, 2 neu installiert, 6 herabgestuft, 37 zu entfernen und 698 nicht aktualisiert.
Benötigt 0 B / 5.772 kB an Archiven.
Nach diesem Vorgang werden 8.294 KB Speicherplatz freigegeben.
Möchten Sie fortfahren [J / N]?
Seltsam !!!, Es wird versucht, die bereits installierten Compiz-Pakete von Precise zu downgraden, um Abhängigkeiten (die mit denen von Oneiric übereinstimmen) mit neu ausgewählten zu lösen compiz-fusion-plugins-extra
!!!.
Was gefährlicher ist, ist, dass versucht wird, Grafiktreiberpakete (xserver-xorg -....) zu entfernen, um Konflikte mit neuen Compizes zu vermeiden.
(Wahrscheinlich, wenn ich sie auch in meinem lokalen Repository hatte, können sie wollen sicher zu degradieren. Aber da diese Pakete in der Regel installiert sind, habe ich sie nicht herunterladen, ist so nicht in lokalen Repo, daher ist dieses Ergebnis) .
Fazit : Die Verwendung von /etc/apt/preferences
wird daher nur empfohlen, wenn Sie über ein vollständiges Repository im lokalen System verfügen.
Was ist, wenn mehrere Instanzen (.deb-Datei) derselben Version in vielen Repositorys vorhanden sind?
Welches wird durch das apt_preference
Handbuch beschrieben
Möglicherweise sind mehrere Instanzen derselben Version eines Pakets verfügbar, wenn die Datei sources.list (5) Verweise auf mehr als eine Quelle enthält. In diesem Fall lädt apt-get (8) die Instanz herunter, die am frühesten in der Datei sources.list (5) aufgeführt ist.
Ein Beispiel für Anwendungsfälle für die /etc/apt/preferences
Datei:
Ein Beispiel für das Erzwingen apt-get
der Auswahl einer in einem benutzerdefinierten Repository verfügbaren Version anstelle von Ubuntus Standard ist möglicherweise die "Linux Mint" -Distribution. Sie verwenden diese benutzerdefinierte preference
Datei.
Paket: *
Pin: o = linuxmint loslassen
PIN-Priorität: 700
Paket: *
PIN: origin packages.linuxmint.com
PIN-Priorität: 700
Paket: *
Pin: o = Ubuntu loslassen
Pin-Priorität: 500
Dies bewirkt effektiv, dass sie Pakete bereitstellen, wenn sie diese in ihren Repositories haben. Wenn sie diese jedoch nicht haben, verwenden sie Ubuntus Standard-Repository.
Ein Beispiel, das ausgeführt wird, apt-get
nachdem die höchste Priorität für das lokale Repository festgelegt wurde
Ich wollte nur ein kubuntu-desktop
Paket über Ubuntu installieren , um KDE zu testen. (Ich habe das vergessen, ich habe eine Voreinstellung mit /etc/apt/preference
Datei festgelegt) . Ich hatte eine ISO des Kubuntu-12.04-Alternate-Installers, also dachte ich, ich kann das benutzen.
(Nachdem ich die ISO als Repository-Quelle richtig eingestellt hatte) , lief ich
sudo apt-get install kubuntu-desktop
und war überrascht, als ich die Ausgabe unten sah.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get installiere kubuntu-desktop
Paketlisten lesen ... Fertig
Abhängigkeitsbaum erstellen
Statusinformationen werden gelesen ... Fertig
Einige Pakete konnten nicht installiert werden. Dies kann bedeuten, dass Sie haben
angefordert eine unmögliche Situation oder wenn Sie die instabile verwenden
Verteilung, dass einige erforderliche Pakete noch nicht erstellt wurden
oder wurde aus dem Incoming verschoben.
Die folgenden Informationen können zur Behebung der Situation beitragen:
Die folgenden Pakete haben nicht erfüllte Abhängigkeiten:
kubuntu-desktop: Hängt ab von: language-selector-kde, wird aber nicht installiert
Empfiehlt: amarok wird aber nicht installiert
Empfiehlt: apturl-kde wird aber nicht installiert
Empfiehlt: gdebi-kde wird aber nicht installiert
Empfiehlt: gpgsm wird aber nicht installiert
Empfiehlt: ibus-qt4 wird aber nicht installiert
Empfiehlt: jockey-kde wird aber nicht installiert
Empfiehlt: kdegraphics-strigi-plugins, wird aber nicht installiert
Empfiehlt: kdepim-wizards, wird aber nicht installiert
Empfiehlt: kpackagekit wird aber nicht installiert
Empfiehlt: libreoffice-kde wird aber nicht installiert
Empfiehlt: libreoffice-style-oxygen, wird aber nicht installiert
Empfiehlt: network-manager-pptp-kde, wird aber nicht installiert
Empfiehlt: plasma-widget-facebook wird aber nicht installiert
Empfiehlt: plasma-widget-kimpanel wird aber nicht installiert
Empfiehlt: usb-creator-kde, wird aber nicht installiert
E: Sie können Probleme nicht beheben, da Sie defekte Pakete haben.
Das Ergebnis hat mich überrascht. Ich erinnere mich plötzlich, dass ich eine Voreinstellung ( zum Schreiben dieser Antwort ) festgelegt habe /etc/apt/preference
, um die höchste Priorität für mein lokales Repository festzulegen.
Also habe ich folgendes ausgeführt: apt-cache policy kubuntu-desktop
Die Ausgabe war wie folgt:
anwar @ edubuntu-lenovo: ~ $ apt-cache policy kubuntu-desktop
kubuntu-desktop:
Installiert: (keine)
Kandidat: 1,222,1 kDe47 ~ ppa2
Versionstabelle:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precision / Haupt-i386-Pakete
500 http://archive.ubuntu.com/ubuntu/ exact / main i386-Pakete
1,222,1 kde47 ~ ppa2 0
1001 Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222,1 0
1001 Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222 0
1001 Datei: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
In dieser Ausgabe sehen wir, dass sowohl "cdrom" als auch "exact main repository" die Versionsnummer 1.254 haben , während das lokale Repository die Version 1.222.1kde47 ~ ppa2 hat , die eine niedrigere Version ist. Obwohl sie in der Datei sources.list vor den lokalen platziert sind, haben lokale Pakete Vorrang.
Um explizit zu sehen, dass apt-get
tatsächlich versucht wird, von einem lokalen zu installieren, lief ich synaptic
und bekam dieses, was zeigt, dass das Apt-System 1.222.1kde47 ~ ppa2 als zu installierende Kandidatenversion betrachtet.
Auch apt-cache policy kubuntu-desktop
zeigen die gleichen Dinge
anwar @ edubuntu-lenovo: ~ $ apt-cache policy kubuntu-desktop
kubuntu-desktop:
Installiert: (keine)
Kandidat: 1,222,1 kDe47 ~ ppa2
Versionstabelle:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precision / Haupt-i386-Pakete
500 http://archive.ubuntu.com/ubuntu/ exact / main i386-Pakete
1,222,1 kde47 ~ ppa2 0
1001 Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222,1 0
1001 Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222 0
1001 Datei: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
Um dies zu lösen, entfernte ich die /etc/apt/preference
Datei von sudo rm /etc/apt/preference
.
Dann lief das nochmal wieder apt-cache policy kubuntu-desktop
. nur diese erwartete Ausgabe zu sehen.
anwar @ edubuntu-lenovo: ~ $ sudo rm / etc / apt / preferences
anwar @ edubuntu-lenovo: ~ $ sudo apt-cache policy kubuntu-desktop
kubuntu-desktop:
Installiert: (keine)
Kandidat: 1,254
Versionstabelle:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424) / precision / Haupt-i386-Pakete
500 http://archive.ubuntu.com/ubuntu/ exact / main i386-Pakete
1,222,1 kde47 ~ ppa2 0
500 Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222,1 0
500 Datei: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222 0
500 Datei: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
Auch das lief wieder. sudo apt-get install kubuntu-desktop
um die Ausgabe unten zu sehen:
......... unnötige Angaben gelöscht .........
0 aktualisiert, 213 neu installiert, 0 zu entfernen und 150 nicht aktualisiert.
Benötigt 0 B / 89,6 MB an Archiven.
Nach diesem Vorgang werden 269 MB zusätzlicher Speicherplatz verwendet.
Möchten Sie fortfahren [J / N]?
Das vollständige Ergebnis können Sie hier einsehen
Dann bin ich mir ziemlich sicher über den Erklärungsteil.
Referenz 1: Das Handbuch zu apt_preference
Referenz 2: So behalten Sie eine bestimmte Version der installierten Pakete bei