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.
Antworten:
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:
./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.
quelle
${HOME}
anstelle~
aller meiner Exportaufrufe verwendet habe. Dann war pkg-config zufrieden und konnte die vom Benutzer installierten Bibliotheken und Pakete finden.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):
Wenn Sie weitere Details benötigen, hatte ich wahrscheinlich irgendwo ein Skript, um all dies zu tun.
quelle
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 ...
quelle
Wenn
prefix=/home/foo/usr
dies nicht funktioniert, versuchen Sie:quelle