web-dev-qa-db-fra.com

Comment installer le programme localement sans privilèges Sudo?

Supposons que j'ai un accès ssh à un serveur Ubuntu en tant qu'utilisateur et que j'ai besoin que certains outils système ne soient pas installés pour plus de commodité (mc, rtorrent, mcedit). Je ne veux pas déranger les administrateurs pour ces petits programmes.

Existe-t-il un moyen de les installer (les faire fonctionner) sans utiliser quelque chose comme Sudo apt-get install?

80
yura
  1. Compilez et installez dans ~/bin (et modifiez votre .bashrc pour définir PATH afin de l'inclure). les bibliothèques peuvent également être compilées et installées dans ~/lib (ensemble LD_LIBRARY_PATH pour le signaler), et des en-têtes de développement peuvent être installés, par ex. ~/includes.

  2. En fonction des détails spécifiques des programmes que vous souhaitez installer et des bibliothèques dont ils dépendent, vous pouvez télécharger les fichiers .deb et utiliser 'dpkg-deb -x 'pour les extraire sous votre répertoire personnel. Vous aurez alors beaucoup de "plaisir" à définir les paramètres PATH, LD_LIBRARY_PATH, et autres variables. Plus le programme ou l'application que vous installez est complexe, plus vous serez amusant :)

    Vous ne pourrez bien sûr pas installer les binaires setuid de cette façon - ils s'installeront mais (puisque vous n'avez pas la permission de les chown pour rooter ou de définir le bit setuid sur eux) ils seront juste des binaires normaux que vous possédez.

    De même, les démons et les services système qui s'attendent à être exécutés en tant que certains UID ou ont la possibilité de modifier l'uid, ou s'attendent à ce que les fichiers soient dans /etc plutôt ~/etc et ainsi de suite ne sont pas susceptibles de bien fonctionner, voire pas du tout.

  3. La plupart des administrateurs système considéreraient mc et mcedit comme des programmes inoffensifs pour la plupart "inoffensifs".

    Très peu, cependant, considéreraient l'installation d'un client torrent comme inoffensif, surtout s'ils doivent payer pour la bande passante ou finir par être légalement responsables. La plupart des administrateurs système ne seraient probablement pas entièrement satisfaits que les utilisateurs finaux installent de tels logiciels sans autorisation. Ils peuvent dire "bien sûr, allez-y, assommez-vous" ou ils ne le peuvent pas ... mais vous devriez poser des questions sur tout ce qui peut causer des problèmes aux propriétaires/administrateurs de la machine.

36
cas

Vous devez les compiler à partir de la source. Cela devrait juste être une question de

apt-get source PACKAGE
./configure --prefix=$HOME/myapps
make
make install

Le binaire serait alors situé dans ~/myapps/bin. Alors, ajoutez export PATH="$HOME/myapps/bin:$PATH" à ton .bashrc fichier et rechargez le .bashrc fichier avec source ~/.bashrc. Bien sûr, cela suppose que gcc est installé sur le système.

53
eof

Vous pouvez utiliser JuNest , qui crée un petit conteneur Linux dans le répertoire de l'utilisateur, où vous pouvez installer tous les packages.

5
niutech

J'ai le même problème que toi. Je ne l'ai pas encore essayé mais il semble que Linuxbrew peut être pratique sur ce problème.

1
JPCF

J'ai rencontré le même problème, voici comment je l'ai rapidement résolu, en supposant que vous disposiez d'un serveur Linux du même système d'exploitation et de la même architecture.

  1. Installez le logiciel sur le système que vous contrôlez

  2. Trouver l'exemple exécutable which python et copiez-le dans ~/

  3. Copiez les bibliothèques avec:

    ldd "$(which python)"  | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ~/
    

Transférez l'exécutable et les bibliothèques sur l'autre système où vous ne disposez que de privilèges locaux, puis exécutez ce qui suit:

mkdir ~/lib
export PATH="$PATH:~/lib"
export LD_LIBRARY_PATH=~/lib:/lib:/usr/lib

Cela va créer un dossier ~/lib pour stocker les bibliothèques, ajoutez-les à votre chemin d'accès et dites à LD de regarder les bibliothèques là-bas, alors ajoutez-y simplement vos exécutables et les bibliothèques, vous pouvez maintenant les exécuter comme vous le souhaitez ' d ailleurs

Cela peut être très hacky, mais il est très portable, rapide et je n'ai pas encore trouvé quelque chose que je ne peux pas exécuter de cette façon, bien sûr, le logiciel ne peut pas essayer de faire des choses qui nécessitent un accès root, comme la liaison à un port inférieur de 1024, etc.

0
Freedo