Ich möchte Softwarepakete installieren, ähnlich wie apt-get install <foo>
:
- Ohne
sudo
und - In ein lokales Verzeichnis
Der Zweck dieser Übung besteht darin, unabhängige Builds in meinem Continuous Integration Server zu isolieren .
Es macht mir nichts aus, aus dem Quellcode zu kompilieren, wenn es das ist, aber ich würde natürlich den einfachsten möglichen Ansatz bevorzugen. Ich habe versucht, apt-get source --compile <foo>
wie hier erwähnt , aber ich kann es nicht für Pakete wie autoconf zum Laufen bringen. Ich erhalte folgenden Fehler:
dpkg-checkbuilddeps: Unmet build dependencies: help2man
Ich habe help2man in einem lokalen Verzeichnis kompiliert, weiß aber nicht, wie ich apt-get darüber informieren soll. Irgendwelche Ideen?
UPDATE : Ich habe eine Antwort gefunden, die fast unter https://askubuntu.com/a/350/23678 funktioniert . Das Problem dabei chroot
ist, dass es sudo benötigt. Das Problem dabei apt-get source
ist, dass ich nicht weiß, wie ich Abhängigkeiten auflösen soll. Ich muss sagen, chroot
sieht sehr ansprechend aus. Gibt es einen äquivalenten Befehl, der kein sudo benötigt?
sudo
und in ein Nicht-Systemverzeichnis zu installieren .Antworten:
Dies ist im Allgemeinen nicht möglich, da Sie sich mit dem apt dependencies-System herumschlagen würden.
Es gibt zwei Lösungen:
Installieren Sie das Quellpaket, wechseln Sie in das Quellverzeichnis, konfigurieren und installieren Sie das Paket unabhängig von den Paketsystemen manuell in einem Verzeichnis Ihrer Wahl.
Dies benötigt kein Root, lädt die Paketquelle herunter und entpackt sie in ein Verzeichnis innerhalb des aktuellen Verzeichnisses. Sie können dann in dieses Verzeichnis wechseln, Änderungen an der Quelle vornehmen, die Installation auf einem anderen Ziel konfigurieren usw.
Die Konfiguration des Installationsverzeichnisses für die Programme hängt jedoch vom jeweiligen Programm ab. Viele Programme verwenden die
./configure --prefix localdir
, um die Installation auf localdir auszurichten. Dies ist jedoch bei weitem nicht immer der Fall.Erstellen Sie eine Chroot-Umgebung, in der Sie die Pakete installieren:
Jetzt haben Sie eine Dummy-Installation im Verzeichnis myfancyinstall / erstellt
Sie können apt-get install im chroot-Käfig verwenden, um alles zu installieren, was Sie möchten.
quelle
apt-get source
without--compile
scheint die Warnung vor nicht erfüllten Abhängigkeiten zu unterdrücken (sodass ich sie selbst lösen kann)ar vx mypackage.deb
. Analysieren Sie anschließend den Inhalt des Pakets und finden Sie heraus, wie Sie es manuell installieren können.Wenn Sie eine Bash-Shell verwenden und die Datei "package.deb" abrufen (vorausgesetzt, der Name des Pakets lautet "package"), können Sie den folgenden Befehl ausführen, um das gewünschte Ergebnis zu erzielen: Installieren Sie das Paket, damit Ihr Ausgangsverzeichnis auf die gleiche Weise behandelt wird. "würde in einer normalen Installation behandelt.
Dies ist der Befehl:
Möglicherweise treten Fehler auf, z. B. dass $ HOME / var / lib / dpkg / lock fehlt. Erstellen Sie einfach alle fehlenden Dateien, die Sie aufgrund der Fehler erhalten, und die Installation sollte ohne sudo funktionieren.
Beachten Sie, dass wenn "apt-get download" nicht funktioniert, Sie "apt download" oder "apitutde download package" ausprobieren können.
Wenn keine der beiden Methoden funktioniert, können Sie das Paket einfach manuell von http://packages.ubuntu.com/ herunterladen.
Eine andere Methode wäre, den Befehl chroot mit dem Parameter $ HOME auszuführen und dann auf die gleiche Weise wie oben zu installieren, nur ohne --root = $ HOME. Dieser Befehl würde Sie in eine Shell bringen, in der "/" Ihr aktuelles $ HOME ist. um in den normalen Modus zurückzukehren, vergiss nicht "zu beenden"
Viel Glück.
quelle
Wenn Sie sich auf einem gemeinsam genutzten Webhoster mit
ssh
Zugriff, aber ohneapt-get
Root usw. oder einem ähnlich eingeschränkten System befinden, funktioniert möglicherweise Folgendes für Sie. Es funktionierte für mich auf einem System, auf dem souname -a
etwas zurückgegeben wurdeSMP Debian 4.9.65-3+deb9u2~bpo8+1 (2017-01-05) x86_64 GNU/Linux
quelle