Почему у менеджеров пакетов нет пользовательских установок и реестров?

23

Насколько мне известно, и Apt, и DNF / Yum, две наиболее популярные схемы управления пакетами для дистрибутивов Linux, поддерживают только общесистемную установку пакетов: файлы, принадлежащие root, бинарные файлы включаются (/usr)?/s?bin, настройки включаются /etcи так далее.

Однако в системах, в которых есть несколько отдельных пользователей, не имеющих привилегий root, очень часто - если не всегда - случается, что пользователь хочет установить некоторые приложения или утилиты, которые доступны для этого распространения; и он / она в порядке с установкой, которая является личной и не является общей для многих / всех пользователей.

Теперь не кажется надуманной или даже невероятно сложной идеей, что пакеты могут быть адаптированы во время установки с другим корневым каталогом или набором корневых каталогов, чтобы пользователи могли это делать. Также не является большой проблемой управление пользовательским реестром установленных пакетов (независимо от того, имеет ли отдельный пользователь свою собственную БД пакетов).

Так в чем же причина того, что эта функциональность не была добавлена ​​к этим распространенным системам / схемам управления пакетами?

Примечание. Это информативный вопрос, т.е. я спрашиваю о том, что люди знают о прошлом , а не о том , что люди думают об этой функции.

einpoklum - восстановить Монику
источник
3
Если бы он был предоставлен, это сэкономило бы большую часть моего времени на компиляцию программного обеспечения из исходных текстов на компьютерах, на которые у меня нет привилегий суперпользователя. Я жажду узнать ответ.
Вейцзюнь Чжоу
1
По общему признанию мои знания об этом не являются самыми большими, но это могло быть сделано, чтобы препятствовать тому, чтобы пользователи заполняли жесткие диски зависимостями программного обеспечения, которое они лично установили. Если apt не запускается от имени пользователя root, он не может обновлять системные библиотеки, поэтому у пользователя теперь более новая версия, чем у системы. Повторите для каждого пользователя и старше, небольшие жесткие диски были бы заполнены довольно быстро.
Thegs
1
@Thegs: Я сомневаюсь, что это было рассмотрение. Немногие программные проекты избегают значительных функций из-за таких соображений, как «если бы люди делали это, они бы заполнили свой диск». Если бы это был какой-то риск для безопасности, может быть. Кроме того, в многопользовательских системах существуют квоты; и мало кто когда-либо будет этим пользоваться. Плюс это все домыслы ...
einpoklum - восстановить Монику
2
Короче говоря, это не работа системного менеджера пакетов - связываться с пользовательскими данными. ~ / bin, ~ / lib и т. д. из POV системы представляют собой «пользовательские данные».
Cas
1
Я видел несколько пакетов, распространяемых через pip, npmи gopkg- частично потому, что они независимы от дистрибутивов, а частично потому, что они обычно допускают установку для конкретного пользователя.
Боб

Ответы:

15

Хотя обычные менеджеры пакетов не рассматривают этот вариант использования, есть несколько проектов, которые делают:

Мое лучшее предположение о том, почему традиционные менеджеры пакетов не рассматривают этот вариант использования, заключается в том, что это значительно усложняет процесс сборки и установки пакетов, поскольку сопровождающие пакетов должны быть очень осторожны, чтобы гарантировать, что их пакеты правильно поддерживают каталог динамической установки. На самом деле, многие распространенные форматы пакетов, такие как RPM, поддерживают каталог динамической установки, но вряд ли кто-либо из сопровождающих использует эту функцию при сборке пакетов из-за высоких дополнительных издержек.

jayhendren
источник
Итак, RPM поддерживает это, но, скажем, dpkg нет?
einpoklum - восстановить Монику
1
Честно говоря, я не знаю о dpkg, так как никогда не собирал пакеты .deb. Я предполагаю, что dpkg поддерживает каталоги динамической установки, но я сомневаюсь, что многие сопровождающие пакеты .deb поддерживают.
Джейхендрен
Другое дело ... они обычно создаются с нуля, загружаются или продолжают полагаться на то, что установлено на общесистемном уровне?
einpoklum - восстановить Монику
1
Общесистемное управление пакетами предполагает, что ничего не доступно, если оно не установлено, поэтому поиск зависимостей в терминах файлов эквивалентен поиску зависимостей в терминах установленных пакетов, содержащих эти файлы. Но со вторым менеджером пакетов есть общесистемные пакеты / файлы и пользовательские пакеты / файлы. Менеджеры пакетов обычно полагаются только на то, что они загрузили и / или собрали?
einpoklum - восстановить Монику
2
Зависит. Те, которые компилируются из исходного кода, такие как Homebrew и Emerge, обычно просто пытаются собрать пакет без большого отслеживания зависимостей. Другие связывают зависимости с пакетами (именно так работают большинство инструментов стиля App Store, а также Flatpak и Snaps). Другие, такие как Zero Install, устанавливают все зависимости как отдельные пакеты уровня пользователя.
Джейхендрен
6

Так в чем же причина того, что эта функциональность не была добавлена ​​к этим распространенным системам / схемам управления пакетами?

Потому что это увеличивает сложность управления системами сверх того, что необходимо.

Elshar
источник