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


49

Comment puis-je installer un RPM sur une machine sur laquelle je n'ai pas les permissions root? Je souhaite installer un package pour mon utilisation uniquement dans un répertoire de travail personnel. J'exécute SuSe SLES10.

S'il vous plait, ne m'embrassez pas avec "Cette idée est tellement stupide, vous ne devriez pas le faire, car toutes les demandes doivent passer par le dieu racine de l'entreprise, qu'il vive éternellement."

Je sais que je peux demander cela au dieu racine, mais je serai abattu (pour des raisons impeccables et impeccables, j'en suis sûr ...). En outre, il ne se chargera jamais de l'installer même s'il dit qu'il le fera.


6
Ce n'est pas un duplicata du tout. Le remplacement du chemin ne permet pas toujours à un utilisateur non privilégié d'utiliser rpm.
John T

Merci HarryMC. Je vais vérifier ça. En outre, l'ajout d'un lien à l'autre billet dont les gens pensaient que le mien était un doublon. Peut-être que la chapelure aidera quelqu'un d'autre: superuser.com/questions/160530/override-rpm-install-path
Ross Rogers

Pour un avenir meilleur, consultez appimage.org .
Ross Rogers

Réponses:


56
cd my-dir;
rpm2cpio to-install.rpm | cpio -idv

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


2
Je l'ai fait et cpio ne semble rien faire à part imprimer '1 block'. Est-ce que j'ai fait quelque chose de mal?
Nate Parsons

Merci. Il s'avère que j'ai pu installer à partir des sources, je n'ai donc pas besoin de m'inquiéter des RPM
Nate Parsons

10
Cela décompresse simplement le contenu du RPM et le vide où vous êtes. Cela ne signifie pas que le résultat fonctionne (sa configuration n'est pas celle qui devrait l'être, ...)
vonbrand

Si seulement je pouvais juste te donner une récompense de réputation de charité. Merci!
Macetw

3

Comment extraire le contenu des paquets rpm

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

Comment extraire une tar.gzarchive

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

Comment extraire les tar.gzpaquets dans le répertoire en cours

export file=foo-bar.tar.gz
# Note that `xovf` switch order *matters*
gzip -dc $file | tar -xovf -

Comment construire des binaires en tant que non-root

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

1

Une autre option consiste à installer à partir de la source, où vous pouvez généralement modifier le répertoire d'installation à l'aide du --prefixcommutateur.


1
C’est ce que je fais normalement, mais j’espérais un peu plus d’automatisation.
Ross Rogers

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

0

Je pense que la "vraie" réponse à "installer" un RPM sans privilège root est, vous ne pouvez pas . MAIS en supposant que vous puissiez réellement démarrer le processus d’installation ...

Les RPM s'installent à l'aide d'une liste d'instructions fournie 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 de système d'exploitation et non des chemins d'utilisateur. Donc, à moins que votre nom d'utilisateur ait accès à tous les chemins d'installation d'un RPM, il échouera certainement. Si vous créez un RPM qui préfixe tous ses chemins /home/me(ou un autre chemin que vous possédez), cela fonctionnera. Cela nécessiterait d’acquérir un fichier src.rpm et de l’extraire comme expliqué dans d’autres réponses, puis de le reconstruire. Au moment où vous le faites, vous pouvez simplement envisager d’obtenir un accès root ou de créer le logiciel à partir de rien (généralement ce que vous faites si vous ne prévoyez pas de distribuer le logiciel sur de nombreuses machines).

Il existe des astuces astucieuses 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 .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.