Wie schließe ich bestimmte Pakete mit apt-get von der Installation aus?

11

Ich möchte bestimmte Pakete von der Installation ausschließen apt-get, dh ein Metapaket ohne die Liste bestimmter Pakete installieren, vorzugsweise mit einem Aufruf von apt-get.

In der LTS-Befehlszeile von Ubuntu 14.04 installiere ich beispielsweise die MATE-Desktopumgebung. In 14.04 ist LTS MATE kein offizielles Aroma, daher füge ich ein PPA hinzu:

sudo apt-get install software-properties-common # need them for 'apt-add-repository'
sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
sudo apt-get update

dann installieren:

sudo apt-get install xorg mate-core --no-install-recommends

Auch ohne die empfohlenen Extras, mate-coreinstalliert 3 Terminal - Emulatoren: xterm, uxtermund mate-terminal , letztere richtige Schriftarten fehlen , während in dieser Minimalkonfiguration installiert.

Angenommen, ich entscheide, dass 3 Terminalprogramme zu viele sind und ich möchte xorgund mate-core ohne xterm und installieren mate-terminal. ich könnte

sudo apt-get install xorg mate-core --no-install-recommends
sudo apt-get purge xterm mate-terminal

Aber ist es möglich, dies auf einmal zu tun? Gibt es eine Syntax wie

sudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov
quelle
Sind Sie sicher, dass Sie xtermund entfernen können mate-terminal? In 15.04 mate-terminalist eine harte Abhängigkeit von mate-desktop-environment-core, was eine harte Abhängigkeit von ist mate-core, und ich nehme an , dass die PPA mate-terminalnicht bereitstellt x-terminal-emulator(was das Paket in 15.04 tut).
Muru
Vielleicht haben Sie Recht , es sei denn, ein Sternchen neben den Paketnamen bedeutet hier etwas Besonderes. Außerdem wird überraschend wenig Platz frei. Wie auch immer, meine Frage ist über das Entfernen von allem, was entfernt werden kann, sagen wir, XTermund vielleicht UXTerm(ich bin nicht sicher, welcher Paketname für letzteres ist)
Nickolai Leschov
1
Suchst du danach? askubuntu.com/questions/75895/…
Seth
@ Seth Nicht ganz: Ich würde gerne eine Syntax wiesudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov
Wenn Sie aptitude(oder einen grafischen Paketmanager) verwenden, können Sie (de) auswählen, welche Pakete installiert werden sollen, und wenn eines zu einer unterbrochenen Abhängigkeit führt, wird (normalerweise) eine Erklärung gegeben.
Saiarcot895

Antworten:

6

So paaren-Kern hängt auf mate-desktop-environment-coredem wiederum hängt auf mate-terminal. Eine Abhängigkeit kann nicht leicht gebrochen werden. Weder unterstützt apt-getnoch aptitudeeine --withoutoder --excludeOption und das "Halten" der Pakete hilft nicht:

$ echo "mate-terminal hold" | sudo dpkg --set-selections
$ sudo apt-get install mate-core
[...]
Einige Pakete konnten nicht installiert werden ...
Die folgenden Pakete haben nicht erfüllte Abhängigkeiten:

Sicher, man kann dpkg --force-dependsdamit ein Paket installieren, aber das ist vielleicht nicht das, was Sie wollen.

Eine Möglichkeit wäre, die Depends:Flagge mit einem Dummy-Paket zu füllen :

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi Mate-Terminal
Abschnitt: Sonstiges
Priorität: optional
Standards-Version: 3.9.2
Paket: Mate-Terminal
Version: 1.8.0
Beschreibung: Dummy-Paket für Mate-Terminal
: x

$ equivs-build mate-terminal
$ sudo dpkg -i mate-terminal_1.8.0_all.deb

Jetzt mate-coresollte in der Lage sein, ohne zu installieren mate-terminal. Wiederholen Sie diesen Vorgang, damit andere Pakete ausgeschlossen werden.

Zugegeben, das ist eine ziemliche Anstrengung und eine --withoutOption wäre schön. Vielleicht kann ein Wunschliste-Fehler geöffnet werden, um solche Funktionen in Zukunft bereitzustellen, aber ich bezweifle irgendwie, dass dies implementiert wird.

Eine realistischere Option wäre jedoch, beim PPA-Eigentümer eine Petition einzureichen , um ein weiteres Metapaket für MATE mit weniger DependsPaketen bereitzustellen .

ckujau
quelle
3

Wenn Sie aptitudeeinen grafischen Paketmanager (Synaptic usw.) verwenden, können Sie die Auswahl der zu installierenden Pakete aufheben, solange dies kein Abhängigkeitsproblem verursacht.

Im Fall von aptitudevor der Installation eines Pakets (in der grafischen Ansicht) wird angezeigt, warum ein abhängiges Paket installiert wird. In meinem Fall verwende ich KDE und habe daher keine MATE-Pakete. Wenn ich sage, dass es installiert werden soll mate-core, erhalte ich Folgendes:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass dies mate-coreals manuell installiert markiert ist und viele andere Pakete installiert werden. Für das mate-terminalPaket unten steht " mate-desktop-environment-core[Universum] hängt ab von mate-terminal(> = 1.0.0)". Gehen Sie zum Eintrag für mate-desktop-environment-core,

Geben Sie hier die Bildbeschreibung ein

" mate-core[Universum] hängt ab von mate-desktop-environment-core(> = 1.8.0 + 9)". Aus diesem Grund mate-terminalwird installiert.

Wenn stattdessen ein empfohlenes Paket installiert wird (und nicht etwas, das von einem anderen Paket abhängig ist), aptitudewerden Sie darauf hingewiesen, und Sie können festlegen, dass dieses Paket nicht ohne fehlerhafte Abhängigkeiten installiert werden soll. Beispielsweise:

Geben Sie hier die Bildbeschreibung ein

saiarcot895
quelle
2

Eine andere Methode

Laden Sie das Hauptpaket herunter, das vom anderen abhängt. Extrahieren Sie das Paket, entfernen Sie die unerwünschten Abhängigkeiten und packen Sie es neu. Öffnen Sie nun das neue Paket mit dem gdebi-Paketinstallationsprogramm . Es werden neue Abhängigkeiten für Sie installiert.

  • Eine Liste der Abhängigkeiten finden Sie unter DEBIAN / control -> abhängig
  • Hilfe zum Ersetzen von Deb finden Sie in meiner Antwort zum Erstellen eines PPA
totti
quelle
0

Es gibt eine spezielle aptSyntax für Szenarien wie folgt aus : einen Bindestrich (Minuszeichen) zu einem Paket angehängt wird entfernen / es nicht installieren, so dass die am nächsten zu Ihrem sudo apt-get install xorg mate-core --without xterm mate-terminal heißt sudo apt-get install xorg mate-core xterm- mate-terminal- (spotted auf /ubuntu//a/1011439/182923 )

In diesem Fall hilft es nicht, da Sie darauf stoßen werden

The following packages have unmet dependencies:
 mate-desktop-environment-core : Depends: mate-terminal (>= 1.20) but it is not going to be installed                                                                        
E: Unable to correct problems, you have held broken packages.

aber es scheint die Antwort auf Ihre spezifische Frage zu sein. Also als Referenz dieser Cross-Post.

eMPee584
quelle