Comment puis-je installer un paquet sans accès root?

126

Je n'ai pas d'accès root sur cette machine.

J'aimerais savoir s'il est possible de télécharger des paquets Ubuntu et de les installer en tant que root.

Probablement dans mon ~/binou ~/usr/shareou quelque chose comme ça? Cela fonctionnerait-il?

Weboide
la source
1
Espérons qu'ils le soutiendront bientôt.
Domi
4
Vous pouvez utiliser des applications portables pour Linux: aucune installation, aucune racine nécessaire. Trouvez-le sur appimage.org . Même Linus Torvalds aime ça. C'est étrange, car Linus n'aime jamais rien.
luth ipse
Je suggère d'essayer fakechroot .
Robert Pollak
Une combinaison de dpk -xet mvtravaillé pour moi. Ou, si pair dpkn'est pas disponible, aret que la tuyauterie / combinaison avec a tartravaillé pour moi sur des systèmes très restreints, voir ici
iolsmit
Connexes sous Unix et Linux : Gestionnaires de paquets non-root
Eliah Kagan

Réponses:

107

Apt ne le prend pas en charge directement, mais il existe des moyens de le faire.

L'une consiste à utiliser schrootpour créer un chroot non root. Il s’agit d’un processus assez complexe , mais vous devriez pouvoir trouver une aide communautaire pour le plus grand nombre de développeurs configurant des environnements chroot pour la compilation de code.

La deuxième façon que je connaisse consiste à installer à partir d'un paquet .deb. Vous pourrez peut-être le télécharger depuis un site Web ou s'il se trouve dans les référentiels Ubuntu avec lesquels vous pouvez télécharger.

apt-get download package

Remplacez packagepar le nom du paquet

Une fois que vous avez votre fichier deb appeler dpkgdirectement depuis la ligne de commande. L'exemple suivant installera package.deb dans votre répertoire personnel.

dpkg -i package.deb --force-not-root --root=$HOME 

L’inconvénient d’utiliser dpkg comme ceci est que les messages d’erreur sont susceptibles d’être cryptés; dpkg ne résout pas automatiquement les dépendances et ne crée pas la structure de répertoires attendue.

Enfin, vous pouvez utiliser la apt-get sourcecommande pour extraire la source du package et la configurer pour une installation locale. Habituellement, cela ressemble à quelque chose comme:

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

L'inconvénient de cette approche est que vous avez besoin de l'environnement de développement disponible pour que cette approche fonctionne, et que vous pourriez vous retrouver à compiler des dizaines de packages afin de résoudre toutes les dépendances.

MODIFIER:

Comme dpkg -icela ne fonctionne pas (voir les commentaires), je suggère cette alternative:

dpkg -x package.deb dir

Cela va extraire le paquet .deb dans dir. Ensuite, vous pouvez exporter le PATH où se trouve le binaire. Tant que toutes les dépendances du binaire sont installées, il devrait fonctionner normalement.

cravate
la source
1
Si vous avez un accès root mais que vous ne voulez simplement pas installer un paquet en particulier, vous pouvez utiliser sudo apt-get build-dep packagetout ce qui est nécessaire pour construire un paquet (après avoir obtenu son source apt-get source).
Vladimir Panteleev
19
Cette réponse a été écrite en 2010. Y a-t-il eu des changements dans la façon dont cela a été fait depuis?
Becko
36
Même avec --force-non-root, j'obtiens "dpkg: error: l'opération demandée nécessite le privilège de superutilisateur"
Clément
10
Les gens --force-not-root --root=$HOMEou leurs variantes ne fonctionneront pas. Les paquets binaires Debian ne sont pas conçus pour être installés dans le répertoire de base, point à la ligne. Ou, pour le dire autrement. "L'exemple suivant installera package.deb dans votre répertoire personnel.". Non, ça ne va pas.
Faheem Mitha
1
Malheureusement, cela ne fonctionnera pas. J'ai essayé--force-not-root --root=/your/custom/path
Viet
16

Je suppose que vous voulez installer jedit . Vous devez d'abord trouver le package et le télécharger. Je prends juste le fichier deb d'un miroir et ouvre une console / un terminal:

  1. mkdir /tmp/jedit && cd /tmp/jedit- Crée un nouveau répertoire tmpet le modifie.
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb - Télécharger le package
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.debou, facile à taper, ar x *.deb- cela extrait le contenu du fichier
  4. tar xvzf data.tar.gz- le fichier data.tar.gzcontient tout ce dont vous avez besoin pour exécuter le logiciel
  5. usr/bin/jedit ouvre l'éditeur
  6. terminé :-)

Vous pouvez déplacer les fichiers à un moment donné de votre répertoire personnel et les exécuter à partir de là.

qbi
la source
11
Notez que les scripts de pré et post-installation ne sont pas exécutés; Vous devrez également résoudre vous-même les dépendances et les chemins. Mais sur une installation par défaut, cela suffit pour de nombreuses applications de bureau.
jbowtie
vous pouvez aussi télécharger le paquet sans chercher, faites juste apt-get download (voir autre réponse)
lib
Je crois que votre lien est cassé.
Winnemucca
9

J’ai écrit un programme appelé JuJu qui permet d’avoir une très petite distribution Linux (ne contenant que le gestionnaire de paquets) dans votre répertoire $ HOME / .juju.

Il vous permet d’avoir votre système personnalisé dans le répertoire personnel accessible via proot et, par conséquent, vous pouvez installer n’importe quel paquet sans privilèges root. Il fonctionnera correctement sur toutes les principales distributions Linux. La seule limitation est que JuJu peut être exécuté sur un noyau Linux avec la version minimum recommandée 2.6.32.

Par exemple, après avoir installé JuJu pour installer jedit:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit
utilisateur967489
la source
Cela fonctionnera parfaitement sur Ubuntu, n'est-ce pas?
Seth
Oui, si la version du noyau Linux d'ubuntu est supérieure ou égale à 2.6.32, cela fonctionnera.
user967489
2
Au début , je pensais que vous parliez de ce . La seconde en majuscule j fait la différence.
Kon Psych
1
La question était de savoir si nous pourrions installer le paquet Ubuntu. Avec junest, nous ne pourrons installer que le paquet ArchLinux et PAS un paquet Ubuntu. Par exemple, si le même package n'est pas disponible pour ArchLinux, cela ne vous aidera pas. Cela dit, merci pour Junest.
Kiran