Pourquoi les gestionnaires de packages ne disposent-ils pas d'installations et de registres par utilisateur?

23

Apt et DNF / Yum, les deux schémas de gestion de packages les plus populaires pour les distributions Linux à ma connaissance, ne prennent en charge que l'installation des packages à l'échelle du système: fichiers appartenant à root, les binaires entrent (/usr)?/s?bin, les paramètres entrent /etc, etc.

Cependant, sur les systèmes dans lesquels il y a plusieurs utilisateurs individuels qui n'ont pas de privilèges root, il arrive très souvent - sinon toujours - qu'un utilisateur souhaite installer des applications ou des utilitaires disponibles pour cette distribution; et il / elle va bien avec une installation personnelle et pas commune à beaucoup / tous les utilisateurs.

Maintenant, il ne semble pas qu'une idée farfelue ou même incroyablement compliquée soit que les packages soient adaptables, au moment de l'installation, avec un répertoire racine ou un ensemble de répertoires racine différent, afin que les utilisateurs puissent le faire. Il n'est pas non plus très difficile de gérer un registre spécifique à l'utilisateur des packages installés (qu'un utilisateur individuel ait ou non sa propre base de données de packages).

Alors, quelle est la raison pour laquelle cette fonctionnalité n'a pas été ajoutée à ces systèmes / systèmes de gestion de packages courants?

Remarque: Il s'agit d'une question informative, c'est-à-dire que je demande ce que les gens savent du passé , pas ce que les gens pensent de cette fonctionnalité.

einpoklum - réintégrer Monica
la source
3
S'il avait été fourni, cela aurait permis d'économiser une grande partie de mon temps à compiler des logiciels depuis la source sur des ordinateurs auxquels je n'ai pas le privilège de superutilisateur. J'ai hâte de connaître la réponse.
Weijun Zhou
1
Certes, mes connaissances à ce sujet ne sont pas les meilleures, mais cela aurait pu être fait pour empêcher les utilisateurs de remplir les disques durs avec les dépendances du logiciel qu'ils ont personnellement installé. Si apt n'est pas exécuté en tant que root, il ne peut pas mettre à jour les bibliothèques système, donc l'utilisateur a maintenant une version plus récente que le système. Répéter pour chaque utilisateur et les disques durs plus anciens et plus petits se seraient remplis assez rapidement.
Thegs
1
@Thegs: Je doute que c'était la considération. Peu de projets logiciels évitent des fonctionnalités importantes en raison de considérations telles que "si les gens faisaient cela, ils rempliraient leur lecteur de disque". S'il s'agissait d'une sorte de risque pour la sécurité, peut-être. De plus, sur les systèmes multi-utilisateurs, il y aurait des quotas; et peu de gens l'utiliseraient de toute façon. De plus, ce ne sont que des spéculations ...
einpoklum - réintègre Monica
2
En bref: ce n'est pas le travail du gestionnaire de packages système de jouer avec les données utilisateur. ~ / bin, ~ / lib, etc. sont, à partir du POV du système, des "données utilisateur".
cas
1
J'ai vu quelques packages distribués via pip, npmet gopkg- en partie parce qu'ils sont indépendants de la distribution et en partie parce qu'ils permettent généralement une installation spécifique à l'utilisateur.
Bob

Réponses:

15

Bien que les gestionnaires de packages courants ne traitent pas ce cas d'utilisation, plusieurs projets le font:

Ma meilleure estimation de la raison pour laquelle les gestionnaires de packages traditionnels ne traitent pas ce cas d'utilisation est que cela complique considérablement le processus de construction et d'installation des packages, car les responsables des packages devront être très prudents pour s'assurer que leurs packages prennent correctement en charge un répertoire d'installation dynamique. En fait, de nombreux formats de packages courants tels que RPM prennent en charge un répertoire d'installation dynamique, mais pratiquement aucun responsable ne profite de cette fonctionnalité lors de la création de packages en raison de la surcharge supplémentaire élevée.

jayhendren
la source
Donc, RPM le supporte mais, disons, dpkg ne le fait pas?
einpoklum - réintègre Monica
1
Pour être honnête, je ne connais pas dpkg, car je n'ai jamais construit de paquets .deb. Je suppose que dpkg prend en charge les répertoires d'installation dynamiques, mais je doute que de nombreux responsables de packages .deb le fassent.
jayhendren
Une autre chose ... est-ce que ceux-ci construisent généralement à partir de zéro, bootstrap, ou continuent de s'appuyer sur tout ce qui est installé au niveau du système?
einpoklum - réintègre Monica
1
La gestion des packages à l'échelle du système suppose que rien n'est disponible s'il ne l'avait pas installé, donc la recherche de dépendances en termes de fichiers équivaut à la recherche de dépendances en termes de packages installés contenant ces fichiers. Mais avec un gestionnaire de packages secondaire, il y a les packages / fichiers à l'échelle du système et les packages / fichiers spécifiques à l'utilisateur. Les gestionnaires de packages s'appuient-ils généralement uniquement sur ce qu'ils ont téléchargé et / ou construit?
einpoklum - réintègre Monica
2
Dépend. Ceux qui compilent à partir de sources comme Homebrew et Emerge essaient généralement de construire le package sans beaucoup de suivi des dépendances. D'autres regroupent les dépendances avec les packages (c'est ainsi que fonctionnent la plupart des outils de style App Store, ainsi que Flatpak et Snaps). D'autres, comme Zero Install, installent toutes les dépendances en tant que packages de niveau utilisateur individuel.
jayhendren
6

Alors, quelle est la raison pour laquelle cette fonctionnalité n'a pas été ajoutée à ces systèmes / systèmes de gestion de packages courants?

Parce que cela augmente la complexité de la gestion des systèmes au-delà de ce qui est nécessaire.

Elshar
la source