Wie aktualisiere ich ein Programm, das manuell aus der Quelle kompiliert wurde?

543
fivetech

Wie installiere ich ein Update, das ich manuell von der Quelle zu einem Programm kompiliert habe, das ich zuvor manuell aus der Quelle kompiliert habe?

Soll ich sudo make uninstallzuerst ausführen und dann ausführen sudo make install, oder reicht es aus, nur auszuführen sudo make install?

Einige Makefiles bieten kein Deinstallationsziel und wenn ich versuche, eine Deinstallation vorzunehmen, erhalte ich den folgenden Fehler:

make: *** Keine Regel zum Deinstallieren des Ziels. Halt.

1
Ersetzen Sie einfach die binären ausführbaren Dateien und alle aktualisierten Abhängigkeiten Ramhound vor 7 Jahren 0
Wäre es nicht zeitaufwändig, wenn das Programm viele Abhängigkeiten hätte? fivetech vor 7 Jahren 0
Ja es würde. Aus diesem Grund sind Paketverwalter ein Glücksfall: Die Verpacker haben die harte Arbeit für Sie erledigt. reinierpost vor 7 Jahren 0
@reinierpost Ja, ich benutze sie jeden Tag. Ich muss jedoch einige Programme wie OpenCV, dlib usw. kompilieren, um die neuesten Funktionen zu erhalten und sie zu konfigurieren. fivetech vor 7 Jahren 0
Wenn Sie mit `stow` in` / usr / local` installieren, wie hier beschrieben (http://unix.stackexchange.com/questions/325923/for-convention-in-which-folder-should-i- (keine installierbaren Anwendungen), können Sie einfach deinstallieren, indem Sie die Symlinks mit `stow -D` löschen. Dies funktioniert auch, wenn Ihre Quelle die Deinstallation über das Makefile (wie in Ihrem Fall) nicht unterstützt oder die Deinstallation nicht abgeschlossen ist (häufig genug geschieht). Installieren Sie sich also niemals direkt in der normalen Hierarchie als root, überlassen Sie dies den Paketmanagern. dirkt vor 7 Jahren 0
Dies ist, was ich mache (außer ich verwende mein eigenes Skript anstelle von "stow", weil ich nicht wusste, wie "stow" es geschrieben hat). Ich installiere Software in einem versionsspezifischen Verzeichnis und verwende dann mein Skript, um sie mit gängigen Pfaden zu verknüpfen. Auf diese Weise kann ich mehrere Versionen installieren, eine Version auswählen und den Rest deinstallieren. Es wird haariger, wenn Abhängigkeiten involviert sind, da Abhängigkeiten nicht auf diese Weise verfolgt werden. Dies sollte eine Antwort sein ... reinierpost vor 7 Jahren 0
Nun, Sie sagten beim manuellen Kompilieren, dass das als Build-System gilt Ramhound vor 7 Jahren 0
"Manuell kompilieren" mit `stow` ist normalerweise etwas wie` wget https://www.example.com/path/to/foo-1.2.3.tar.gz && tar xvf foo-1.2.3.tar.gz && cd foo-1.2.3 && ./configure --with-path = / usr / local / stow / foo-1.2.3 && make && sudo -u localowner make install & & sudo -u localowner stow foo-1.2.3 && cd .. && rm -rf foo-1.2.3. * `(im absolut idealen Fall). reinierpost vor 7 Jahren 0

0 Antworten auf die Frage