Paketverwaltungsstrategie mit Pacman

7

Seit ich meine Lieblingsdistribution auf Gentoo umgestellt habe, bin ich mit dem folgenden Muster zum Installieren und Entfernen von Paketen sehr vertraut:

  1. Installieren Sie eine Reihe von Anwendungen, die fast dasselbe tun, um sie auszuprobieren : emerge <package>. Dieser Befehl installiert das Paket und markiert das Paket als explizit installiert.
  2. Probieren Sie sie aus und entfernen Sie diejenigen, die ich nicht mag (und behalten Sie hoffentlich ein oder zwei, die meinen Bedürfnissen entsprechen) : emerge --deselect <package>. Dieser Befehl entfernt das Paket aus der Liste der explizit installierten Anwendungen, deinstalliert das Paket jedoch nicht.
  3. Entfernen Sie zum Schluss alles, was auf meinem System nicht benötigt wird : emerge --depclean. Dieser Befehl entfernt alle Pakete, die (1) kein Systempaket, (2) nicht explizit installiert und (3) keine Abhängigkeit dieser beiden sind.
  4. Überprüfen Sie optional, ob alle Paketabhängigkeiten in Ordnung sind : revdep-rebuild. Dieser Befehl überprüft alle Abhängigkeiten und installiert fehlerhafte Pakete neu.

Hin und wieder sah ich mir die Einträge in /var/lib/portage/world(die Liste der explizit installierten Pakete) an, um die von mir verwendeten Anwendungen der obersten Ebene zu überprüfen und diejenigen, die ich nicht mehr verwende, mit den Befehlen in Schritt 2, 3 und 4 zu entfernen .

Jetzt, wo ich versuche, Arch zu lernen, frage ich mich, ob ich mit Pacman dieselbe Strategie anwenden könnte. Oder eine andere Strategie , die mein System halten sauber von nicht verwendeten Pakete?

Hinweis: Der Pacman Rosetta hilft sehr dabei, Dinge schnell zu verstehen, aber ich konnte Archs Äquivalent zur /var/lib/portage/worldDatei nicht herausfinden . pacman -Qesoll es tun, aber es enthält Dinge, von denen ich schwöre, dass ich sie nicht explizit installiert habe ... Bitte beantworten Sie diese Frage in Bezug auf die Strategie (natürlich mit Befehlsbeispielen :)

Phunehehe
quelle
Da arch keine Quelldistribution ist, werden Sie kein Äquivalent zu revdep-restore finden. Ich finde selten kaputte ... aber es passiert ... und dann erstelle ich es neu und installiere es mit pkgbuild neu und lasse arch devs wissen, ob das funktioniert hat . ist vor ein paar Monaten mit smplayer passiert.
Xenoterracide
@ Xenoterracide Danke für die Info, aber in dieser Frage könnte mich Revdep-Rebuild nicht weniger interessieren :)
Phunehehe

Antworten:

4

Der wahrscheinlichste Grund, warum Sie Pakete sehen pacman -Qe, an deren Installation Sie sich nicht erinnern, ist, dass sie Teil einer von base-develIhnen installierten "Gruppe" (wie usw.) waren.

Randnotiz: Ich persönlich habe auch eine Weile gesucht, um ein Paket von "explizit" auf "implizit" (und sogar umgekehrt) umzustellen, ohne es neu zu installieren. Es wurde sogar ein Paket benötigt, das ich explizit installiert habe, damit ein anderes Paket funktioniert und sich dreht es in eine Abhängigkeit dieses Pakets (wieder ohne Neuinstallation).

DarwinÜberlebender
quelle
Der Punkt pacman -Qeist interessant, ich bin nicht mit der "Gruppe" Sache vertraut. In Bezug auf die Randnotiz, nicht --asdepsund --asexplicitsoll genau das tun?
Phunehehe
@phunehehe Nein, pacman -Qe ist eine Abfrage (die alle explizit installierten Pakete anzeigt) --asdeps und --asexplicit sind Synchronisierungsoptionen. --asdeps INSTALLIERT eine Anwendung als eine Abhängigkeit. Da es von nichts benötigt wird, wird es in einem "pacman -Qdt" angezeigt, in dem alle installierten Pakete als Abhängigkeiten aufgelistet sind, die von nichts mehr benötigt werden (normalerweise können diese Pakete ohne Konsequenz entfernt werden). Das verwirrendste, was ich an Pacman fand, als ich anfing (aus Ubuntus apt-get / apt-cache), war, dass 1 Dienstprogramm für alles verwendet wurde (Verhaltensänderungen mit -S / -Q)
DarwinSurvivor
2

Dank der Antwort von DarwinSurvivor konnte ich besser verstehen, wie die Paketverwaltung in Arch funktioniert. Jetzt kann ich dieselbe Strategie anwenden, die ich mit Gentoo verwende (mit kleinen Änderungen). Die "Äquivalente" der Befehle in der Frage sind jeweils:

  1. pacman -S <package>
  2. pacman -D --asdeps <package>
  3. pacman -Rs $(pacman -Qqtd)
  4. Nicht verfügbar / nicht benötigt

Das, was /var/lib/portage/worldin Gentoo am nächsten kommt, ist das Ergebnis des Befehls pacman -Qe. Unterschiede:

  1. Arch hat Paketgruppen , bei denen es sich im Grunde um mehrere Pakete handelt, die unter einem Namen "gruppiert" sind. Wenn eine Gruppe installiert ist, wird alles in der Gruppe als explizit installiert betrachtet.
  2. Arch hat keine "Systempakete", daher kann das Reduzieren von Elementen aus dem Ergebnis von pacman -Qetatsächlich dazu führen, dass wichtige Pakete entfernt werden.
Phunehehe
quelle
1

Wenn ich mich richtig erinnere,

pacman -S package

installiert ein Paket

pacman -Rs package

Entfernt ein Paket und alle seine Abhängigkeiten - aber nur diejenigen, die andere Pakete nicht beschädigen würden, und nur diejenigen, die Sie nicht explizit installiert haben.

Überprüfen Sie die Pacman-Manpage.

Ich weiß leider nicht, wie ich nach kaputten Paketen suchen soll.


quelle
0

Anstatt sich auf den Paketmanager zu verlassen, um die explizit installierten Pakete zu verfolgen, können Sie ein Konfigurationsverwaltungstool wie Ansible auf Ihrem System verwenden. Ich benutze das für meine eigenen wenigen Maschinen und kann mit nur zwei Befehlen immer eine Maschine wie meine Hauptmaschine einrichten.

Martin Ueding
quelle