web-dev-qa-db-fra.com

Gestionnaires de paquet non racine

De mes recherches, il semble que tous les gestionnaires de colis insistent sur l'utilisation d'un utilisateur privilégié et doivent être installés dans /.

Typiquement, ce que j'aime faire est de créer un compte jetable, compilez certains logiciels et installez-vous à $HOME pour ce compte. Je peux essayer une variété de configurations, puis quand j'aurai fini, détruisez simplement le compte.

Cependant, la compilation du logiciel devient fastidieuse.

Mon expérience est vraiment juste limitée à yum, mais je ne comprends pas pourquoi je ne serais pas en mesure de laisser tomber un fichier de repo en ~/etc/yum.repos.d et avoir miam installer tout dans un compte à la maison.

Y a-t-il une raison pour laquelle les gestionnaires de paquets doivent être utilisés comme utilisateur privilégié pour installer un logiciel?

52
elmt

Les packages binaires sont compilés avec l'hypothèse qu'ils seront installés sur des emplacements spécifiques de /. Cela n'est pas toujours facilement changé et il faudrait un effort d'assurance qualité supplémentaire (qui est assez difficile en premier lieu!) Pour déterminer si des binaires spécifiques sont ou ne sont pas relocalisables.

Dans une certaine mesure, vous pouvez utiliser des choses comme fakechroot pour créer un système entier dans un sous-répertoire en tant qu'utilisateur non root, mais c'est fastidieux et fragile.

Vous aurez plus de chance avec des packages source. Gentoo préfixe et Gobolinux sans racine Les deux gestionnaires de paquets pouvant être installés sur non -/ Emplacements et peut être utilisable par les utilisateurs non -root.

35
ephemient

Il y a un projet de gestionnaire de paquets -- NIX - Avec une idée fondamentale intéressante (A " fonctionnel" Manager PKG), qui prend également en charge une opération par utilisateur:

Support multi-utilisateur

À partir de la version 0.11, NIX a un support multi-utilisateur. Cela signifie que les utilisateurs non privilégiés peuvent installer en toute sécurité des logiciels. Chaque utilisateur peut avoir un profil différent, un ensemble de packages dans le magasin Nix qui apparaissent dans le chemin de l'utilisateur. Si un utilisateur installe un package qu'un autre utilisateur est déjà installé précédemment, le colis ne sera pas construit ou téléchargé une seconde fois. Dans le même temps, il n'est pas possible qu'un utilisateur soit injecté d'un cheval de Troie dans un package pouvant être utilisé par un autre utilisateur.

ne note que je veux ajouter:Nix devrait être utilisable dans un système de type UNIX de votre choix (par exemple, une distribution Linux).

Il y a aussi une grande collection de packages associée pouvant être installée avec le gestionnaire de packages Nix -- NIXPKGS - Construit pour un certain nombre de plates-formes :

  • GNU/Linux sur 32 bits et 64 bits X86 (I686-Linux et X86_64-Linux)
  • Mac OS X (I686-Darwin et X86_64-Darwin)
  • FreeBSD (i686-FreeBSD et X86_64-FreeBSD)
  • Openbsd (i686-openbsd)
  • Windows/Cygwin (I686-Cygwin),

et une distribution associée --Nixos:

Nixos est une distribution Linux basée sur Nix. Il utilise NIX non seulement pour la gestion des packages, mais également pour gérer la configuration système (par exemple, pour créer des fichiers de configuration dans/etc). Cela signifie, entre autres choses, qu'il est possible de rétablir facilement la configuration complète du système à un état précédent. En outre, les utilisateurs peuvent installer des logiciels sans privilèges root. En savoir plus ...

et un système de construction "continu" associé --HYDRA.

J'utilise Juj qui permet de disposer essentiellement d'avoir une distribution de Linux vraiment minime (contenant uniquement le gestionnaire de paquets) dans votre répertoire $ à la maison/.juju.

Il permet de disposer de votre système personnalisé à l'intérieur du répertoire de base accessible via Proot et, par conséquent, vous pouvez installer des packages sans privilèges root. Il fonctionnera correctement à toutes les distributions principales Linux, la seule limitation est que Juju peut fonctionner sur le noyau Linux avec une version 26.32 recueillie minimale.

7
user967489

Tout d'abord, cela est dû aux dépendances. Certains packages peuvent ne pas être installés par l'utilisateur - comme PolicyKit. Par conséquent, cela nécessiterait une charge supplémentaire sur le packager qui fait don de leur temps libre et d'installer habituellement le programme est aussi simple que la typage Sudo (poste à une seule utilisateur) ou administrateur de harcelage.

Il existe des options pour installer en $ home

  • Les "gestionnaires de packages" primitifs de langue le prennent généralement en charge hors de la boîte (comme Gem pour Ruby ou Cabale pour HASKELL) ou avec un petit peau de peau (j'ai oublié le nom de Python)
  • Bon vieux ./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install (ou varitations comme Jhbuild).
  • Là-bas était programme à installer à $ accueil il y a quelques années. Cependant, je ne peux pas le trouver - je suppose presque à personne ne l'utilisait que comme ils les ont installés eux-mêmes ou des administrateurs de NAG.
6
Maciej Piechotka

Un autre avec un modèle assez différent est Install . Il est basé sur l'idée que vous n'installez pas vraiment de packages, mais simplement les exécuter d'un espace de noms global qui télécharge, compile si nécessaire et met en cache le logiciel que vous souhaitez utiliser.

4
Michael Ekstrand

Si vous vous conviendrez bien de la compilation de la source et de la résolution des dépendances vous-même, vous souhaitez que le gestionnaire de package de gérer les opérations de déploiement/de non-déploiement/de mise à niveau, vous pourriez souhaiter jeter un coup d'œil à GNU Stow ou le quelque peu amélioré - xstow . Avec eux, vous mettez en scène l'installation dans un répertoire distinct (généralement sous $PREFIX/stow) Et puis rangez les liens des liens avec le logiciel de votre préfixe réel. Cela permet de supprimer complètement le logiciel. Je l'utilise avec succès pour gérer mon logiciel sur mesure à mon université.

4
Michael Ekstrand

Mon expérience est vraiment juste limitée à miam, mais je ne comprends pas pourquoi je ne serais pas en mesure de laisser tomber un fichier de repo en ~/etc/yum.repos.d et que Yum Installez tout dans un compte à domicile.

Les gestionnaires de paquets de Linux traditionnels considèrent le monde en tant que sysadmin ... où la machine est une entité unique. Cela vous permet d'obtenir des réponses à des questions telles que "Quels errata exceptionnels s'appliquent au système x" et "Comment le système X et le système y diffèrent-ils". Cela permet également à Yum d'avoir "une histoire" utilisable, dispose de versions RPMDB et de faire des choses comme "Mise à jour Yum -Security", etc.

Il existe des gestionnaires de paquets, comme zéro-installation, qui tentent de voir le monde en tant qu'utilisateur ... IE. Quelles sont applications DO I avoir accès à.

Vous pourriez penser que le plus tard est un meilleur modèle, mais imnsho il y a une raison pour laquelle vous n'avez pas entendu parler de zéro-installation mais que vous avez entendu parler de miam.

3
James Antill

Il y a un nouveau gamin sur le bloc: " Junest (nid d'utilisateur emprisonné) - la distribution basée sur la voûte de Linux qui fonctionne sur n'importe quelle distribution de Linux sans accès root sans accès root." @ - https://github.com/fsquillace/junest Avantage est qu'il n'entraîne pas de nouveau type de format de package, donc après une installation très facile (minimum: environ 320m), la complète Arch Linux Repository (plus de 13 000 packages ATM) est à portée de main.

2
eMPee584

Les outils utilisés par Slackware, spécifiquement installpkg, peuvent. De la page man:

--root /otherroot
       Install using a location other than / (the default) as the root of the 
       filesystem to install on. In the example given, use /otherroot instead.
       Setting the ROOT environment variable does the same thing.

Cependant, je ne connais aucune des meilleures fronçons qui sont capables de le faire (par ex. slapt-get, autant que je sache, ne peut pas faire cela). Théoriquement, vous devriez être capable d'alias installpkg à installpkg --root ~/Apps - Cependant, je pense que la plupart des frontes nécessitent une racine à courir, ce qui défait le point.

1
new123456

Je suggérerais http://linuxbrew.sh/

Il s'agit essentiellement d'une fourchette de maquette pour MacOS et a des binaires précompilés pour usage ...

Particulièrement génial pour la manipulation des versions de GCC plus anciennes.

Si vous souhaitez vraiment installer à la main, un guide utile est http://www.linuxfromscratch.org/

1
HaoZeke

et un nouveau est zpkg, c'est magique:

Avec ZPKG, vous pouvez installer des programmes d'autres distributions dans votre système.

zPKG installera des programmes dans votre répertoire personnel. Les installations globales sont également prises en charge (via-g).

ensuite, vous pouvez installer n'importe quel paquet de: Alpine, centos, debian, Fedora, gentoo, archlinux, ubuntu

https://zpkg.plash.io/

https://github.com/ihucos/zpkg

0
Badr Elmers

Miam a besoin d'écrire à la base de données, qui est propre par root. Pour cette raison, vous ne pouvez pas l'utiliser comme utilisateur normal.

Vous pouvez essayer de décompresser les fichiers RPM (package RPM2CPIO.RPM | CPIO -IDMV) dans un répertoire de votre choix.

Mais lorsque vous allez exécuter votre programme, vous devrez prendre soin de modifier ld_library_path afin de charger les bibliothèques dépendantes. En outre, cela ne prendra pas soin des dépendances.

Exemple:

# mkdir new_root
# cd new_root
# wget ftp://mirror.switch.ch/pool/4/mirror/centos/6.7/os/x86_64/Packages/vim-enhanced-7.4.629-5.el6.x86_64.rpm
# rpm2cpio vim-enhanced-7.4.629-5.el6.x86_64.rpm | cpio -idmv
# ./usr/bin/vim -version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jul 24 2015 02:23:23)

Ce qui précède n'a aucune bibliothèque dépendante, sinon vous devriez utiliser quelque chose comme:

export LD_LIBRARY_PATH=./usr/lib ./usr/bin/program
0
cristi