Könnte Apt Pakete löschen, die von Software benötigt werden, die Benutzer aus dem Quellcode installiert haben?

14

Apt verarbeitet Abhängigkeiten zwischen Paketen, die aus seinen Repositorys oder *.debDateien installiert wurden . Was ist jedoch mit Software, die Benutzer aus dem Quellcode kompiliert und installiert haben, ./configure && make && make installohne zuvor eine .debDatei zu erstellen ? Ist es möglich, dass Apt Pakete entfernt, die von solchen Softwareprogrammen benötigt werden? Würde die Installation von Software von der Quelle in /optoder /usr/localeinen Unterschied machen?

Elena
quelle
1
Sie können ein equivs-Paket als Ersatz für ein aus dem Quellcode installiertes Paket installieren, um zu erzwingen, dass Ihre Abhängigkeiten installiert bleiben.
Faheem Mitha

Antworten:

13

APT weiß nichts über Software, die manuell installiert wurde. Es weiß nicht, welche Bibliotheken die Software benötigt oder was auch immer.

Wenn APT ein Paket nur installiert, um die Abhängigkeiten eines anderen Pakets zu erfüllen, wird dieses Paket als automatisch installiert markiert. Wenn Sie alle Pakete entfernen, die von einem automatisch installierten Paket abhängen, wird dieses Paket bei der Ausführung entfernt apt-get autoremove. Übergeordnete Frontends zu APT bieten in der Regel an, dies nach einer anderen Wartung zu tun. Um zu vermeiden, dass Pakete entfernt werden, die von lokal installierter Software benötigt werden, markieren Sie diese Pakete als manuell installiert: oder geben Sie aptitude ein.apt-mark manual PACKAGE-NAMEm

Führen Sie Folgendes aus, um herauszufinden, welche Bibliothekspakete eine ausführbare Binärdatei benötigt ldd /path/to/executable. Führen Sie für jede Zeile, die enthält , den Namen des Pakets aus, das diese Bibliothek enthält. Zeigt bei Skripten den vom Skript verwendeten Interpreter an. Stellen Sie sicher, dass dieser Interpreter installiert bleibt. Es kann schwierig sein, herauszufinden, welche Bibliotheken von einem Skript verwendet werden. Es gibt keine universelle Möglichkeit, dies zu tun./usr/lib/SOMETHINGdpkg -S /usr/lib/SOMETHINGhead -n 1 /path/to/script

Wenn Sie eine neuere Version eines Pakets, das in Ihrer Distribution vorhanden ist, manuell installiert haben, überprüfen Sie die Abhängigkeiten des Distributionspakets und markieren Sie sie als manuell installiert.

Gilles 'SO - hör auf böse zu sein'
quelle
apt-getin Debian hat Jessie nicht die manualOption. Für diese manuellen oder automatischen (automatischen) Installationshinweise verwende ich apt-markstattdessen. ( apt-mark manual pkg, apt-mark showmanual pkg, apt-mark auto pkg, Etc.)
Lekensteyn
@Lekensteyn Ich meinte apt-mark, danke.
Gilles 'SO- hör auf böse zu sein'
14

aptund dpkgkann auf jeden Fall Software entfernen, die von lokal installierter anderer Software benötigt wird, die außerhalb des Geltungsbereichs des Paketverwaltungssystems liegt. Es gibt einfach keine Möglichkeit , aptund dpkgzu wissen , dass eine solche Software existieren könnte.

Der Ort, an dem diese Software installiert wird, spielt keine Rolle: Es kann sich um /optoder /usr/localin den Home-Verzeichnissen der Benutzer handeln (in diesem Fall ist sich sogar der Systemadministrator seiner Anwesenheit möglicherweise nicht bewusst), oder tatsächlich um irgendwo.

Technisch aptoder dpkgkönnte sogar Software entfernen, die von anderer Software benötigt wird, die Teil des Paketverwaltungssystems ist, wenn die letztere Software nicht deklariert, dass sie von der ersteren Software abhängt. Der Prozess zum Erstellen von Deb-Paketen umfasst jedoch eine Automatisierung, um zu verhindern, dass Paketbetreuer vergessen, eine solche Abhängigkeit zu deklarieren.

Celada
quelle