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.

Ross Rogers
la source
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) .

harrymc
la source
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
Yordan Georgiev
la source
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.

John T
la source
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 .

Jonathan Komar
la source