Gibt es eine Möglichkeit, Pakete aus einem von Ihnen hinzugefügten ppa-Repository auszuwählen? Das heißt, einige von der Aktualisierung ausschließen, während andere einbezogen werden?
Zum Beispiel möchte ich nur das Chrom-Browser-Paket aus diesem Repository, aber nicht die anderen. Daher möchte ich nicht sudo apt-get upgrade
, dass die anderen Pakete von ppa (außer Chrom-Browser) über meinen vorhandenen Paketen installiert werden, nur dieses.
Mir ist klar, dass dies eine Lizenz ist, sich selbst in den Fuß zu schießen, wenn ich Abhängigkeiten falsch interpretiere und diejenigen ausschließe, die für die von mir eingeschlossenen benötigt werden, aber ich weiß in diesem Fall, dass die anderen Pakete keine Abhängigkeiten für diese sind.
Ist das überhaupt möglich? Vielleicht gibt es eine Whitelist / Blacklist-Datei oder so?
Antworten:
Einen Weg gefunden, es zu tun.
Der Trick besteht darin, zwei Pinning-Klauseln zu verwenden. Der erste, der ALLE Pakete von der PPA verbietet, und der zweite, der die gewünschten Pakete auswählt.
Für das obige Beispiel füge ich also zunächst das ppa wie gewohnt hinzu:
Wenn ich nun eine apt-cache-Richtlinie ausführe, wird mir angezeigt, dass eine neuere Version des Chrom-Browsers verfügbar ist und dass diese mit einem Upgrade installiert wird, da sie dieselbe Priorität (500) hat wie mein aktueller Chrom-Browser.
Das ist großartig in Bezug auf dieses Paket, aber ich möchte nicht, dass die anderen in diesem Paket (das ebenfalls eine Priorität von 500 hat) installiert werden. Im Moment, wenn ich ein Upgrade versuche, bekomme ich mehr als nur die gewünschten Chrompakete aus diesem Repository:
Also kann ich apt sagen, dass ich möchte, dass alle Pakete in diesem ppa, in diesem Fall webapps-preview, eine niedrigere Priorität haben , mit Ausnahme derjenigen, deren Name "chrom" enthält. Der Mechanismus dafür ist das Fixieren eines Pakets
Ich erstelle eine Datei in /etc/apt/preferences.d/ mit zwei Klauseln. Der erste Satz besagt, dass alle Pakete in der webapps-preview ppa eine niedrigere Priorität haben als die regulären (so dass sie nicht bevorzugt werden, selbst wenn sie eine höhere Versionsnummer haben. Der zweite Satz setzt den ersten Satz teilweise außer Kraft, indem er besagt, dass die Pakete in dass ppa mit "chromium" in ihrem namen die gleiche priorität wie andere pakete hat, damit es installiert wird (indem es eine höhere versionsnummer hat).
Um die richtige Zeichenfolge für die Option "Pin: release" zu ermitteln, können wir die apt-cache-Richtlinie erneut verwenden.
Für apt-Versionen <0.8.14 müssen angeheftete Pakete explizit angegeben werden, da Platzhalter nicht funktionieren:
Und jetzt, wenn ich versuche zu aktualisieren, bekomme ich nur die Pakete, die ich von diesem ppa haben möchte und nicht die anderen. Alles schön Kirsche für mich gepflückt:
quelle
Sie können das Release, aus dem Sie installieren möchten, auch mit dem
?origin
Selektor auswählen :In Ihrem speziellen Fall können Sie also Folgendes verwenden:
Oder Sie können die Version angeben mit
<packagename>=<version>
:quelle
Sie können bestimmte Pakete über Synaptic "auswählen" und es ist sehr einfach. Das funktioniert so:
Wenn Sie dies nur für bestimmte PPAs tun möchten, wählen Sie "Ursprung" (untere linke Ecke) im Synaptic-Fenster und wählen Sie dann die PPA, die Sie ändern möchten
Wählen Sie alle Pakete aus, die Sie nicht mehr automatisch aktualisieren möchten.
Wählen Sie das Menü "Package / Lock Version". Alle Pakete, die Sie ausgewählt haben, werden nicht mehr automatisch aktualisiert, bis Sie sie wieder entsperren.
quelle