Installer les fichiers de développement localement pour construire sur le système sans accès root?

10

Il y a un serveur sur lequel je travaille, exécutant une ancienne version de Linux. Je n'ai pas d'accès root au système, donc je voulais construire une version plus récente d'un outil que j'utilise beaucoup (Vim 7.3). J'ai pensé que je le construirais et l'installerais dans ~ / bin. Cependant, il nécessite des fichiers de développement ncurses qui ne sont pas installés à l'échelle du système. J'ai trouvé le rpm ncurses-devel et extrait les dossiers 'lib' et 'include', où les placer et comment dire au script ./configure de les trouver afin de pouvoir configurer et construire correctement le paquet localement?

Edit: J'ai fini par contourner cela en installant le même système d'exploitation dans Virtualbox, en y construisant le package et en copiant les binaires.

postfuturiste
la source
serverfault.com/questions/23734 peut être assez similaire pour vous aider. La plupart des réponses impliquent d'installer ce qui est effectivement un système entier dans votre homedir, mais cela peut être contourné dans Gentoo Prefix et Rootless Gobo.
éphémère

Réponses:

13

J'ai fait cela assez fréquemment dans mon dernier travail - la solution qui semblait fonctionner le mieux était de créer un répertoire ~ / usr et d'utiliser l'argument --prefix pour pointer les scripts ./configure dans la bonne direction. Voici les étapes:

  • Créez le répertoire ~ / usr et incluez les répertoires lib et bin en dessous.
  • Dans votre .profile, .bashrc ou autre script d'initialisation du shell, ajoutez ce qui suit (ou l'équivalent dans le dialecte de votre 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
  • Lors de la création de packages, utilisez ./configure --prefix=/home/<username>/usr

Cet arrangement a fonctionné pour moi dans la plupart des situations où j'avais besoin de construire des choses dans l'espace utilisateur. La partie la plus difficile est généralement de trouver et de construire toutes les dépendances dont vous avez besoin, mais cela nécessite simplement une recherche sur Google ou une utilisation judicieuse de la fonctionnalité «obtenir la source» de votre gestionnaire de paquets.

chaos95
la source
Ça n'a pas vraiment marché pour moi. Le script de configuration ne semble rien trouver dans ~ / usr
postfuturist
J'ai eu le même problème @postfuturist. J'ai fini par le réparer en utilisant ${HOME}au lieu de ~dans tous mes appels d'exportation, puis pkg-config était heureux et a pu trouver mes bibliothèques et packages installés par l'utilisateur.
phyatt
3

Normalement, vous devriez pouvoir reconfigurer et modifier le code pour définir un nouvel emplacement dans votre répertoire personnel ou un autre chemin pour toutes les bibliothèques et programmes ...

Mais, à mon humble avis, la façon la plus simple (si vous avez beaucoup d'espace) est d'utiliser chroot dans un sous-répertoire avec toutes les distributions Linux installées. Bien sûr, en tant qu'utilisateur normal, vous ne pouvez pas utiliser chroot , mais vous pouvez utiliser ces excellents outils: fakechroot et fakeroot

Pour créer le système de fichiers chroot, j'aime déployer un répertoire avec Debian (ou tout dérivé Debian comme ubuntu) en utilisant l' utilitaire debootstrap .

La procédure est donc simple (je n'entrerai pas dans les détails techniques, lisez les manuels de commande):

  • Obtenir et installer: outils fakeroot, fakechroot et debootstrap
  • créer un sous-répertoire en utilisant debootstrap (je n'ai pu l'exécuter qu'en tant que root. Vous pouvez le faire sur un autre ordinateur et copier les binaires si nécessaire)
  • Exécuter: fakechroot fakeroot chroot mydebian-dir

Si vous avez besoin de plus de détails, je pense que j'avais un script quelque part pour faire tout cela.

Keymon
la source
1

Une autre solution à ce problème consiste à utiliser le préfixe Gentoo, comme le font les utilisateurs de MacOSX et d'autres plates-formes (solaris, AIX):

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

Il compilera la pile Gentoo (avec portage) dans un emplacement $ PREFIX. Il utilise les packages Gentoo, la plupart des packages prennent en charge l'utilisation de ces paramètres.

Portage gardera une trace de toutes les dépendances, vous aurez la dernière version du logiciel, il a été testé par la communauté ...

Keymon
la source
1

Si prefix=/home/foo/usrcela ne fonctionne pas, essayez:

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