75 votes

Comment puis-je installer un RPM sans être root ?

Comment puis-je installer un RPM sur une machine où je n'ai pas les autorisations root? Je veux installer un paquet pour mon usage uniquement dans un répertoire de travail personnel. Je suis sous SuSe SLES10.

S'il vous plaît, ne me critiquez pas avec "Cette idée est si stupide, vous ne devriez pas le faire car toutes les demandes doivent passer par le dieu racine de l'entreprise, puisse-t-il vivre éternellement."

Je sais que je peux demander cela au dieu racine, mais je serai rejeté (pour des raisons immaculées, impeccables, j'en suis sûr...). De plus, il ne prendra jamais le temps de l'installer même s'il dit qu'il le fera.

8 votes

Il ne s'agit pas du tout d'un doublon. Remplacer le chemin ne permet pas toujours à un utilisateur non privilégié d'utiliser rpm.

0 votes

Merci HarryMC. Je vais vérifier cela. De plus, j'ajoute un lien vers l'autre ticket que les gens pensaient être un doublon du mien. Peut-être que les miettes de pain aideront quelqu'un d'autre : superuser.com/questions/160530/override-rpm-install-path

0 votes

Pour un avenir meilleur, regardez appimage.org .

84voto

harrymc Points 394411
cd my-dir;
rpm2cpio to-install.rpm | cpio -idv

Voir Comment extraire un package RPM sans l'installer (commande d'extraction rpm).

2 votes

J'ai fait cela et cpio ne semble rien faire sauf imprimer '1 bloc'. Ai-je fait quelque chose de mal?

0 votes

Merci. Il s'avère que j'ai pu installer à partir de la source, donc je n'ai pas besoin de m'embêter avec les RPMs.

18 votes

Cela décompresse simplement le contenu du RPM et le dépose où vous vous trouvez. Cela ne signifie pas que le résultat fonctionne (sa configuration n'est pas à l'endroit où elle devrait être, ...)

7voto

Yordan Georgiev Points 153

Comment extraire le contenu des paquets rpm

export ins=foo-bar.rpm
rpm2cpio $ins | cpio -idv

Comment extraire l'archive tar.gz

gzip -dc foo-bar.tar.gz | tar xvf –
cd foo-bar-dir

Comment extraire les paquets tar.gz dans le répertoire actuel

export file=foo-bar.tar.gz
# Notez que l'ordre des commutateurs `xovf` *est important*
gzip -dc $file | tar -xovf -

Comment construire des binaires en tant que non-root

./configure --prefix=$HOME && make && make install

3voto

Christopher Altman Points 2371

Je pense que la réponse "réelle" à l'installation d'un rpm sans privilège root est que, vous ne pouvez pas. MAIS en supposant que vous pourriez réellement démarrer le processus d'installation...

Les RPM s'installent en utilisant une liste d'instructions fournies dans un fichier de spécification (.spec) qui suit généralement la Hiérarchie du Système de Fichiers. La plupart des chemins de cette hiérarchie sont presque toujours des chemins du système d'exploitation et non des chemins utilisateur. Donc, à moins que votre nom d'utilisateur n'ait accès à tous les chemins où un RPM s'installe, alors il échouerait certainement. Si vous créez un RPM qui préfixe tous ses chemins avec /home/me (ou un autre chemin que vous possédez), alors il fonctionnerait. Cela nécessiterait d'acquérir un src.rpm et de l'extraire comme expliqué dans d'autres réponses, puis de le reconstruire. Au moment où vous faites cela, vous pourriez juste envisager d'obtenir un accès root ou de construire le logiciel à partir de zéro (généralement ce que vous faites si vous ne prévoyez pas de distribuer le logiciel sur plusieurs machines).

Il existe des astuces intelligentes pour vous aider dans le processus de construction manuelle. Par exemple, vous pouvez utiliser les dépendances déjà répertoriées dans un RPM pour obtenir toutes vos dépendances: https://stackoverflow.com/a/13877738/1236128.

2voto

Dalroth Points 2468

Une autre option est d'installer à partir de la source, où vous pouvez généralement changer le répertoire d'installation en utilisant l'interrupteur --prefix.

1 votes

C'est ce que je fais normalement, mais j'espérais une automatisation supplémentaire.

2 votes

Pour moi, cela ne fonctionne pas car il essaie d'obtenir un verrou de fichier sur quelque chose dans /var (et la permission est refusée).

1voto

tanuk Points 11

Vous pouvez essayer les options --prefix et --dbpath. Tous les RPM ne prendront pas en charge --prefix, mais si vous créez vos propres RPM, cela ne sera pas un problème, il vous suffira de les rendre déplaçables.

J'ai réussi à copier la base de données rpm du système /tmp/lib/rpm vers mon propre répertoire et à la spécifier via --dbpath. Ensuite, je peux exécuter rpm -i sans être root. Bien sûr, vous avez maintenant une copie privée de la base de données et elle deviendra obsolète au fur et à mesure que votre service informatique installera de nouveaux packages - et les autres utilisateurs ne sauront pas que vous avez installé des packages de manière privée. Mais bon, c'est probablement normal compte tenu de la question que vous avez posée.

Malheureusement, distribuer vos RPM nécessitera toujours que les autres utilisateurs passent par le service informatique ou créent leur propre base de données également, par exemple :

rpm -ivh --dpath ~/rpmdb --prefix ~/ mypkg-1.0-1.el8.x86_64.rpm

Vous pouvez également demander à votre service informatique de rendre la base de données RPM du système inscriptible.

Aussi répondu ici Comment installer des packages sur Linux sans accès root ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X