miam installer dans la maison de l'utilisateur pour les non-administrateurs

51

Je suis un utilisateur non-administrateur sur un grand système informatique. J'ai besoin de paquets à jour qui ne sont pas installés sur le système. Je veux utiliser yum pour les installer. En tant qu'utilisateur sans accès sudo, admin ou root, puis-je utiliser la gestion des paquets pour installer des paquets dans mon répertoire personnel? Je peux toujours utiliser make à partir des sources, mais pouvoir utiliser yum facilitera la vie.

bande passante élevée
la source
1
pas sauf si le binaire yum est suid root (les chances sont minces).
h3rrmiller
1
@ h3rrmiller, mais existe-t-il un gestionnaire de paquets pouvant installer des programmes dans $ HOME, et ne nécessitant par conséquent pas un accès sudo? Je sais que MacPorts sur OSX peut le faire. Quelles sont ces options pour Linux?
highBandWidth

Réponses:

8

La plupart des fichiers binaires sont compilés pour être installés à certains emplacements sous /.

Il existe des gestionnaires de paquets non root comme Gentoo Prefix et Rootless GoboLinux et peut-être 0install .

Comme vous l'avez dit, vous compiler vous-même permettrait de résoudre ce problème ou d'utiliser un chroot. Cependant, votre plus gros obstacle avec le chrootage sera les conditions préalables et la liaison aux objets partagés du noyau.

h3rrmiller
la source
10
Chroot n'est pas une option ici. Vous devez être root pour chroot.
Marco
38

Plutôt que d’utiliser yum, trouvez les RPM que vous voulez et téléchargez-les. Vous ne pouvez toujours pas les installer directement sans être root, mais les packages RPM sont en fait des fichiers .cpio sophistiqués et vous pouvez en décompresser le contenu. Le moyen le plus simple de le faire consiste probablement à utiliser mcle navigateur de fichiers ("midnight commander") (l'un des plus grands logiciels à ce jour), qui vous permet de parcourir le contenu d'un .rpmfichier et de le copier directement.

Sans cela, vous pouvez utiliser rpm2cpiopour le convertir en .cpio, puis cpiopour extraire les fichiers et les placer aux bons endroits. Les deux seront déjà installés sur un système RedHat ou Fedora. Voici un exemple d'installation de "xsnow" (vous souhaiterez probablement le faire dans un répertoire vide):

»rpm2cpio xsnow-1.42-17.fc17.x86_64.rpm > xsnow.cpio

Notez que j'ai trouvé un fichier .rpm approprié à mon système, fc17 x86_64. Ceci est important car ce sont des binaires précompilés qui sont liés à d'autres composants. Maintenant, extrayez le .cpio:

»cpio -idv < xsnow.cpio 
./usr/bin/xsnow
./usr/share/doc/xsnow-1.42
./usr/share/doc/xsnow-1.42/README
./usr/share/man/man6/xsnow.6.gz
212 blocks
Press any key to continue...

Si je navigue dans cette arborescence de répertoires, tout ce dont j'ai besoin est là, à l'exception de certaines méta-informations qui pourraient m'aider à résoudre les dépendances. Ceci peut être trouvé en utilisant rpm -q -p [package] --[query]:

»rpm -q -p xsnow-1.42-17.fc17.x86_64.rpm --requires
warning: xsnow-1.42-17.fc17.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID d2382b83: NOKEY
libX11.so.6()(64bit)  
libXext.so.6()(64bit)  
libXpm.so.4()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1

Je suis sûr que j'ai déjà tout ça. Il ne me reste donc plus qu'à placer l'exécutable xsnow dans mon $ PATH, qui inclut déjà une corbeille dans mon répertoire personnel:

»cp ./usr/bin/xsnow ~/bin

Alto! Maintenant, je peux taper xsnowet regarder rien, car il s'avère que xsnow ne fonctionne pas bien avec KDE :( mais j'espère que le processus est clair. Je n'ai rien à faire en dehors de mon répertoire personnel.

Si vous devez installer des bibliothèques, vous devrez également créer un répertoire dans leur répertoire personnel et les ajouter à ~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib
boucle d'or
la source
@ Miamii Eh bien, avez-vous une meilleure réponse?
Marcin
5
Ok, que diriez-vous de créer un outil pour créer des fichiers cpio, puis de tout copier dans un dossier non racine, comme ./usr/bin dans $ PREFIX / usr / bin, etc., et également de vérifier et d’installer de manière récursive des dépendances.
highBandWidth
2
Deux ans et demi plus tard, merci pour cette réponse utile. Vous pouvez le faire en une ligne avec: mkdir xsnow; cd xsnow; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio - | cpio -idv
Larry Engholm
1
Je l'utilise depuis plus de 2 ans sur mon ordinateur de bureau et cela fonctionne comme un charme à chaque fois. Je veux vous exprimer ma sincère gratitude. Je souhaite que l'informatique de mon université soit aussi compétente.
De temps à autre, tout en faisant cela, je me heurte à un lien symbolique Impossible: "Autorisation refusée ou cpio: ....: Impossible d'ouvrir: autorisation refusée, existe-t-il un moyen de résoudre ce problème? Notez que je crée ces fichiers sans sudo, mais que, pour une raison quelconque, j’ai besoin d’utiliser sudo pour les désinstaller
Phylliida