Entwicklungsdateien lokal installieren, um auf einem System ohne Root-Zugriff aufzubauen?

9

Es gibt einen Server, auf dem ich arbeite und auf dem eine ältere Linux-Version ausgeführt wird. Ich habe keinen Root-Zugriff auf das System, daher wollte ich eine neuere Version eines Tools erstellen, das ich häufig verwende (Vim 7.3). Ich dachte, ich würde es einfach bauen und in ~ / bin installieren. Es erfordert jedoch ncurses-Entwicklungsdateien, die nicht systemweit installiert sind. Ich habe die ncurses-devel rpm gefunden und die Ordner 'lib' und 'include' extrahiert. Wo würde ich sie ablegen und wie würde ich das Skript ./configure anweisen, sie zu finden, damit ich das Paket lokal richtig konfigurieren und erstellen kann?

Bearbeiten: Am Ende habe ich das umgangen, indem ich das identische Betriebssystem in Virtualbox installiert, das Paket dort erstellt und über die Binärdateien kopiert habe.

Postfuturist
quelle
serverfault.com/questions/23734 ist möglicherweise ähnlich genug, um zu helfen. Die meisten Antworten beinhalten die Installation eines gesamten Systems in Ihrem Homedir. Dies kann jedoch in Gentoo Prefix und Rootless Gobo umgangen werden.
Ephemient

Antworten:

13

Ich habe dies in meinem letzten Job ziemlich häufig gemacht - die Lösung, die am besten zu funktionieren schien, bestand darin, ein ~ / usr-Verzeichnis zu erstellen und das Argument --prefix zu verwenden, um die ./configure-Skripte in die richtige Richtung zu weisen. Hier sind die Schritte:

  • Erstellen Sie das Verzeichnis ~ / usr und schließen Sie die Verzeichnisse lib und bin darunter ein.
  • Fügen Sie in Ihrem .profile-, .bashrc- oder anderen Shell-Init-Skript Folgendes hinzu (oder das Äquivalent im Dialekt Ihrer Shell):
    export PATH=$PATH:~/usr/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/usr/lib
    export C_INCLUDE_PATH=$C_INCLUDE_PATH:~/usr/include
    export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/usr/include
  • Verwenden Sie beim Erstellen von Paketen ./configure --prefix=/home/<username>/usr

Diese Anordnung funktionierte für mich in den meisten Situationen, in denen ich Dinge im Benutzerraum erstellen musste. Am schwierigsten ist es normalerweise, alle benötigten Abhängigkeiten zu finden und zu erstellen. Dies erfordert jedoch nur ein wenig googeln oder eine vernünftige Verwendung der Get Source-Funktionalität Ihres Paketmanagers.

Chaos95
quelle
Hat bei mir nicht ganz funktioniert. Das Konfigurationsskript scheint nichts in ~ / usr
postfuturist
Ich hatte das gleiche Problem @postfuturist. Am Ende habe ich das Problem behoben, indem ich ${HOME}anstelle ~aller meiner Exportaufrufe verwendet habe. Dann war pkg-config zufrieden und konnte die vom Benutzer installierten Bibliotheken und Pakete finden.
Phyatt
3

Normalerweise sollten Sie in der Lage sein, den Code neu zu konfigurieren und zu ändern, um einen neuen Speicherort in Ihrem Home-Verzeichnis oder einem anderen Pfad für alle Bibliotheken und Programme zu definieren ...

Aber meiner Meinung nach ist der einfachste Weg (wenn Sie viel Platz haben), chroot in einem Unterverzeichnis zu verwenden, in dem alle Linux-Distributionen installiert sind. Natürlich können Sie als normaler Benutzer nicht chroot verwenden , aber Sie können diese großartigen Werkzeuge verwenden: fakechroot und fakeroot

Um das Chroot-Dateisystem zu erstellen, möchte ich ein Verzeichnis mit Debian (oder einem beliebigen Debian-Derivat wie Ubuntu) mithilfe des Dienstprogramms debootstrap bereitstellen .

Das Verfahren ist also einfach (ich werde keine technischen Details eingeben, die Befehlshandbücher lesen):

  • Holen Sie sich und installieren Sie: fakeroot, fakechroot und debootstrap Tools
  • Erstellen Sie ein Unterverzeichnis mit debootstrap (ich konnte dies nur als root ausführen. Sie können dies auf einem anderen Computer tun und die Binärdateien bei Bedarf kopieren).
  • Ausführen: fakechroot fakeroot chroot mydebian-dir

Wenn Sie weitere Details benötigen, hatte ich wahrscheinlich irgendwo ein Skript, um all dies zu tun.

Keymon
quelle
1

Eine andere Lösung für dieses Problem ist die Verwendung des Gentoo-Präfix, wie es die MacOSX-Benutzer und andere Plattformen (Solaris, AIX) tun:

http://www.gentoo.org/proj/en/gentoo-alt/prefix/

Der Gentoo-Stack (mit Portage) wird an einem $ PREFIX-Speicherort kompiliert. Es werden die Gentoo-Pakete verwendet. Die meisten Pakete unterstützen die Verwendung dieser Einstellungen.

Portage verfolgt alle Abhängigkeiten, Sie haben die letzte Version der Software, sie wurde von der Community getestet ...

Keymon
quelle
1

Wenn prefix=/home/foo/usrdies nicht funktioniert, versuchen Sie:

CFLAGS=-I/home/foo/usr/include LDFLAGS=-L/home/foo/usr/lib ./configure
BobuSumisu
quelle