Beim Erstellen von Software muss ich manchmal Bibliotheken, Binärdateien usw. installieren, die nur zum Erstellen des Pakets erforderlich sind, aber dann vergesse ich, sie zu entfernen, sodass ich nicht mehr mehrere Pakete gleichzeitig bereinigen muss. sogar die, die ich nicht entfernen möchte.
Das Parsen der Protokolldateien, um die genauen Pakete zu finden, ist suboptimal und ein königlicher Schmerz, wenn die Pakete alt genug sind. Gibt es eine Möglichkeit, diese Aufgabe zu erleichtern?
debian
package-management
Braiam
quelle
quelle
apt-get build-dep ...
, oder? Ich denke, apt markiert diese nicht standardmäßig als automatisch installiert, obwohl eine Option dazu nützlich sein könnte, da sie nur für kurze Zeit benötigt werden. apt scheint die Option zu haben, zu sagen, dass "alle diese Pakete, die ich jetzt installiere, automatisch installiert werden", aber wenn dies der Fall ist, könnte dies hier nützlich sein.build-dep
(durch das Beispiel wurde hauptsächlich darauf fokussiert), weil ich mit einigen Projekten arbeite, die nicht in den Repositories enthalten sind.Antworten:
Ich würde vorschlagen, Benutzer-Tags zu verwenden, was ein Merkmal von aptitude ist (apt binary hat dies nicht), würde dabei helfen. Fügen Sie bei der Installation von Paketen die
--add-user-tag
Option hinzu, wenn Sie die Pakete installieren, zum Beispiel:und um sie zu entfernen, verwenden Sie einfach:
Sie können das Tag auch unterwegs mit entfernen
--remove-user-tag build-dep-package
.Dies ist jedoch ein Problem. Was ist, wenn dasselbe Paket beide Tags enthält? Nun, Sie verwenden nur die und / oder nicht die Bedingungen, um dies zu verhindern:
Um mehrere Pakete mit unterschiedlichen Tags zu bearbeiten, verwenden Sie oder:
Dies ist auf lange Sicht sehr nützlich. Ich habe keine Möglichkeit gefunden, alle derzeit aktiven Tags aufzulisten.
quelle
Ich habe einen Beitrag von David Kalnischkies im Blog-Beitrag UNDO APT-GET BUILD-DEP (BUILD DEPENDENCIES ENTFERNEN) gefunden.
Für diejenigen, die es nicht wissen, ist David der Hauptbetreuer, und das seit 2009 oder so ungefähr. Es ist also eine sichere Wette, dass er weiß, wovon er spricht.
Damit,
ist wahrscheinlich ein vernünftiger Weg. Ich hatte keine Ahnung, dass diese Option existiert. Bis jetzt konnte ich es nicht in einer passenden Dokumentation finden. Ich werde aktualisieren, wenn ich es tue.
Beachten Sie jedoch auch die Eignung für Debian-Fehlerberichte : APT :: Get :: Build-Dep-Automatic wird nicht berücksichtigt . Der Titel sagt alles.
UPDATE: Nachdem dies getestet wurde, scheint es nicht zu funktionieren. Ich tat
und dann
aber es gab nichts zurück. Vielleicht fehlt mir etwas. Ich werde diese Antwort für den Moment in Ruhe lassen.
UPDATE 2: Ich sehe darin,
/var/lib/apt/extended_states
dass die Pakete korrekt als gekennzeichnet sindAuto-Installed: 1
. Also muss ichautoremove
falsch verwenden.UPDATE 3: Versucht
und dieses Mal
dh-buildinfo gperf libacl1-dev libattr1-dev
korrekt deinstalliert .Warum hat der vorherige Versuch nicht funktioniert? Ich bin nicht sicher, aber Hypothese - die Pakete der obersten Ebene lieferten virtuelle Pakete, die für manuell installierte Pakete erforderlich waren. Damit
und
Hier gibt es also eine Überlappung - nämlich
java5-runtime-headless
. Fazit - dies könnte ein leider ausgewähltes Beispiel gewesen sein.quelle
Dies hilft nicht bei Ihren vorhandenen Entwicklungspaketen, aber für die zukünftige Verwendung sollten Sie
mk-build-deps
(imdevscripts
Paket) verwenden, um ein Metapaket für die Abhängigkeiten zu generieren.mk-build-deps
benötigt nur den Namen eines verfügbaren Pakets oder dessen Steuerdatei. Letzteres ist nützlich, wenn Ihr Paket (noch) nicht verfügbar ist oder wenn Sie neue Abhängigkeiten hinzufügen.Es kann das generierte Metapaket (plus Abhängigkeiten) für Sie installieren, wenn Sie möchten.
Wie üblich, alle Details auf der Handbuchseite, sobald Sie es installiert haben.
quelle