Angenommen, ich habe ssh-Zugriff auf einen Ubuntu-Server als Benutzer und ich benötige einige nicht zu installierende Systemtools (mc, rtorrent, mcedit). Ich möchte Administratoren für diese kleinen Programme nicht stören.
Gibt es eine Möglichkeit, sie zu installieren (zum Laufen zu bringen), ohne so etwas zu verwenden sudo apt-get install
?
Antworten:
Kompilieren Sie und installieren Sie in
~/bin
(und bearbeiten Sie Ihr,.bashrc
um festzulegenPATH
, dass es enthalten sein soll). Ebenso können Bibliotheken kompiliert und installiert werden~/lib
(so eingestelltLD_LIBRARY_PATH
, dass sie darauf verweisen), und Entwicklungsheader können in z~/includes
.Abhängig von den spezifischen Details der Programme, die Sie installieren möchten, und den Bibliotheken, von denen sie abhängen, können Sie die .deb-Dateien herunterladen und mit '
dpkg-deb -x
' unter Ihrem Home-Verzeichnis extrahieren. Sie werden dann eine Menge „Spaß“ haben die EinstellungPATH
,LD_LIBRARY_PATH
und anderevariables
. Je komplexer das Programm oder die App, die Sie installieren, desto mehr Spaß werden Sie haben :)Natürlich können Sie
setuid
Binärdateien nicht auf diese Weise installieren - sie werden installiert, aber (da Sie nicht die Berechtigung haben, sie als Root zu speichern oder dassetuid
Bit darauf zu setzen) sind sie nur normale Binärdateien, die Ihnen gehören .Ebenso funktionieren Daemons und Systemdienste, die eine bestimmte
UID
Ausführung erwarten oder die Möglichkeit haben, die UID zu ändern, oder erwarten, dass sich Dateien/etc
eher in~/etc
usw. befinden, wahrscheinlich nicht richtig , wenn überhaupt.Die meisten sysadmins halten
mc
undmcedit
„meist harmlos“, unschädliche Programme.Sehr wenige würden jedoch die Installation eines Torrent-Clients als harmlos betrachten, insbesondere wenn sie für Bandbreite zahlen müssen oder rechtlich haftbar sind. Die meisten Sysadmins wären wahrscheinlich nicht ganz glücklich, wenn Endbenutzer solche Software ohne Erlaubnis installieren würden. Sie können sagen "sicher, mach weiter, schlag dich raus" oder sie können nicht ... aber du solltest nach irgendetwas fragen, das den Besitzern / Administratoren der Maschine Probleme bereiten kann.
quelle
LD_LIBRARY_PATH
ein böser Hack ist . Gilt das auch hier oder habe ich das falsch verstanden?dpkg-deb -x
zu einem lokalen Verzeichnis). Lief wie am Schnürchen. Ich musste keineLD_LIBRARY_PATH
Hacks machen. Selbst wenn ich muss, würde ich es in der gleichen Befehlszeile tun, um die globalen Einstellungen nicht zu beeinflussen (zum Beispiel$ LD_LIBRARY_PATH=/home/usr1/zoom/opt/zoom:/home/usr1/zoom/opt/zoom/zoom ZoomLauncher
).Sie müssen diese aus dem Quellcode kompilieren. Es sollte nur eine Frage von sein
Die Binärdatei würde sich dann in befinden
~/myapps/bin
. Fügen Sie alsoexport PATH="$HOME/myapps/bin:$PATH"
Ihrer.bashrc
Datei hinzu und laden Sie die.bashrc
Datei erneut mitsource ~/.bashrc
. Dies setzt natürlich voraus, dass gcc auf dem System installiert ist.quelle
Sie können JuNest verwenden , das einen kleinen Linux-Container im Benutzerverzeichnis erstellt, in dem Sie beliebige Pakete installieren können.
quelle
Ich war mit demselben Problem konfrontiert. Hier ist, wie ich es schnell behoben habe, unter der Annahme, dass Sie einen Linux-Server mit demselben Betriebssystem und derselben Architektur haben.
Installieren Sie die Software auf dem System, das Sie steuern
Suchen Sie das ausführbare Beispiel
which python
und kopieren Sie es nach~/
Kopieren Sie die Bibliotheken mit:
Übertragen Sie die ausführbare Datei und die Bibliotheken auf das andere System, auf dem Sie nur über lokale Berechtigungen verfügen, und führen Sie dann Folgendes aus:
Dadurch wird ein Ordner erstellt,
~/lib
in dem die Bibliotheken gespeichert, Ihrem Pfad hinzugefügt und LD angewiesen werden, sich die Bibliotheken dort anzuschauen. Fügen Sie also einfach Ihre ausführbaren Dateien und die Bibliotheken dort hinzu, und Sie können sie jetzt wie an einem anderen Ort ausführenDas mag sehr hacky sein, ist aber sehr portabel, schnell und ich habe noch nichts gefunden, was ich nicht auf diese Weise ausführen kann. Natürlich kann die Software nicht versuchen, Dinge zu tun, die root-Zugriff erfordern, wie das Binden an einen niedrigeren Port als 1024 usw.
quelle
Ich habe das gleiche Problem wie du. Ich habe es noch nicht ausprobiert, aber es scheint, dass Linuxbrew in dieser Angelegenheit nützlich sein kann.
quelle