Wenn ich ein einfaches Programm installiere, wird häufig make && make install
ein Deinstallationsziel verwendet und häufig auch nicht .
Wenn ich ein Programm aktualisieren möchte, ist es ein Standardprotokoll, davon auszugehen, dass es nur nahtlos über das alte Programm geschrieben wird?
Wie verfolge ich diese Programme? Müssen die meisten Leute einfach "feuern und vergessen" und wenn kein Deinstallationsziel angegeben ist, muss ich dann alles manuell löschen?
Antworten:
Installieren Sie jedes Programm in einer dedizierten Verzeichnisstruktur und verwenden Sie Stow oder XStow , um alle Programme in einer gemeinsamen Hierarchie anzuzeigen . Stow erstellt symbolische Links vom programmspezifischen Verzeichnis zu einem gemeinsamen Baum.
Wählen Sie beispielsweise ein Verzeichnis der obersten Ebene aus
/usr/local/stow
. Installieren Sie jedes Programm unter/usr/local/stow/PROGRAM_NAME
. Sorgen Sie beispielsweise dafür, dass die ausführbaren Dateien in/usr/local/stow/PROGRAM_NAME/bin
, die Manpages in/usr/local/stow/man/man1
usw. installiert werden . Wenn das Programm autoconf verwendet, führen Sie es aus./configure --prefix /usr/local/stow/PROGRAM_NAME
. Nachdem Sie gelaufen sindmake install
, führen Sie ausstow
:Und jetzt haben Sie symbolische Links wie diese:
Sie können leicht verfolgen, welche Programme Sie installiert haben, indem Sie den Inhalt des
stow
Verzeichnisses auflisten , und Sie wissen immer, zu welchem Programm eine Datei gehört, da es eine symbolische Verknüpfung zu einem Speicherort unter dem Verzeichnis dieses Programms ist. Deinstallieren Sie ein Programm, indem Sie es ausführen undstow -D PROGRAM_NAME
anschließend das Programmverzeichnis löschen. Sie können ein Programm vorübergehend nicht verfügbar machen, indem Sie esstow -D PROGRAM_NAME
ausführen (ausführenstow PROGRAM_NAME
, um es wieder verfügbar zu machen).Wenn Sie in der Lage sein möchten, schnell zwischen verschiedenen Versionen desselben Programms zu wechseln, verwenden Sie
/usr/local/stow/PROGRAM_NAME-VERSION
als Programmverzeichnis. Um ein Upgrade von Version 3 auf Version 4 durchzuführen, installieren Sie Version 4 und führen Sie es ausstow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.Ältere Versionen von Stow gehen nicht weit über die in dieser Antwort beschriebenen Grundlagen hinaus. Neuere Versionen sowie XStow (das in letzter Zeit nicht mehr gepflegt wurde) verfügen über erweiterte Funktionen, z. B. die Möglichkeit, bestimmte Dateien zu ignorieren, vorhandene Symlinks außerhalb des Stow-Verzeichnisses (z. B.
man -> share/man
) besser zu verarbeiten und Konflikte automatisch zu behandeln (wenn zwei vorhanden sind) Programme liefern die gleiche Datei) usw.Wenn Sie keinen Root-Zugriff haben oder nicht verwenden möchten, können Sie ein Verzeichnis unter Ihrem Home-Verzeichnis auswählen, z
~/software/stow
. In diesem Fall ergänzen Sie~/software/bin
IhrePATH
. Wennman
Manpages nicht automatisch gefunden werden, fügen Sie sie~/software/man
zu Ihren hinzuMANPATH
. Fügen Sie~/software/info
zu IhremINFOPATH
,~/software/lib/python
zu IhremPYTHONPATH
usw. hinzu, sofern zutreffend.quelle
Sie können checkinstall verwenden , um ein Paket zu erstellen (RPM-, Deb- oder Slackware-kompatible Pakete). Auf diese Weise können Sie mit Ihrem Distributionspaket-Manager die Anwendung hinzufügen / entfernen (aber nicht aktualisieren).
Sie verwenden
checkinstall
anstelle desmake install
Befehls (mit dem -D-Parameter für Deb; -R ist RPM und -S ist Slackware):checkinstall erstellt und installiert das Paket standardmäßig, oder Sie können das Paket nur ohne Installation erstellen lassen.
checkinstall ist in den meisten Distributions-Repositories verfügbar.
quelle
checkinstall
Scheint leider nicht so aktiv gepflegt zu sein (?) :-(Zum größten Teil war dies der Grund für Pakete, Ports und andere Arten von Managern, um zu verhindern, dass so etwas passiert.
Ich würde sagen, dass manuelles Löschen die einzige Möglichkeit für eine manuelle Installation ist, es sei denn, jemand anderes hat eine bessere Antwort auf diesen Punkt, den ich möglicherweise nicht kenne.
quelle
Eine weitere Alternative sind die Linux From Scratch-Hinweise :
Mehr Kontrolle und Paketverwaltung mit Paketbenutzern
Nach diesem ersten groben Vorschlag fand ich eine weiterentwickelte Variante:
crablfs - Benutzerbasiertes Paketverwaltungssystem
Dies
crablfs
ist das neueste Exemplar der Paketverwaltung, das eindeutige UIDs und GIDs für die Paketverwaltung verwendet. Auf SourceForge wird es jedoch in ulfs erneut weiterentwickelt:uLFS: Ihr verwaltbares und wiederverwendbares Linux von Grund auf neu
Für kausale Benutzer installierter Pakete halte ich die LFS-Lösung "package users" für eine leichte, weniger invasive und elegante Lösung. Kurz gesagt, Sie installieren Pakete in
/usr/local
oder/home/user/local
und verfolgen Dateien unter Verwendung eindeutiger UIDs und GIDs für jedes Paket, speichern jedoch alle Dateien an den herkömmlichen Orten, in gemeinsamen Verzeichnissen/usr/local/bin
,/usr/local/lib
wie es in allen gängigen Linux-Distributionen der Fall ist ... Verschließen von Dateien und unerwünschtes Überschreiben oder Löschen von Dateien Dies wird durch einen von Matthias S. Benkmann in more_control_and_pkg_man.txt erläuterten, sauberen Linux-Trick vermieden, der nur eine normale Manipulation der Datei- und Verzeichnisberechtigungen erfordert, z. B. die Sticky-Bit-Berechtigung für Verzeichnisse, um unerwünschtes Überschreiben von Dateien zu vermeiden:Für mich sieht es nach einer einfachen und cleveren Lösung aus! Ich habe dieses Schema in meinem LFS-Build verwendet und es ist eine funktionierende Lösung ...
quelle
tar
Dateien aus der Installation hinterlassen, um/usr/src/non-rpms
sich daran zu erinnern (das mache ich normalerweise).quelle