Из моих исследований я, похоже, заметил, что все менеджеры пакетов настаивают на том, чтобы их использовали в качестве привилегированного пользователя, и их необходимо установить в /
.
Как правило, мне нравится создавать одноразовую учетную запись, компилировать некоторое программное обеспечение и устанавливать $HOME
для этой учетной записи. Я могу попробовать различные настройки, а затем, когда я закончу, просто уничтожить аккаунт.
Однако компиляция программного обеспечения становится утомительной.
Мой опыт на самом деле просто ограничен yum
, но я не понимаю, почему я не смогу перетащить файл репо ~/etc/yum.repos.d
и заставить yum установить все в домашнюю учетную запись.
Есть ли какая-либо причина, по которой менеджеры пакетов должны использоваться в качестве привилегированного пользователя для установки программного обеспечения?
/bin
), или он может предполагать, что он установлен в месте, указанном --prefix. В то время как последний может обходиться этими проектами, первый требует патчей для исходного кода./
Это звучит как требование, которое могло быть оправдано, может быть, 30 лет назад, но не сейчас. Например, развеenv
программа не предназначена для решения подобных проблем? Если нет, то легко предложить схему для настройки любого двоичного файла для поиска других двоичных файлов в определенных местах./etc
или (насколько мне известно)/usr/lib/<packagename>/
или/usr/libexec/<packagename>/
./usr/share
могут быть изменены переменными XDG, которые были выпущены где-то в этом столетии и не обязательно приняты для более старых программ.Есть проект менеджера пакетов - Nix - с интересной фундаментальной идеей (« функциональный » менеджер pkg), который также поддерживает операции для каждого пользователя:
ПРИМЕЧАНИЕ, которое я хочу добавить:
Nix
должно использоваться в Unix-подобной системе по вашему выбору (например, в дистрибутиве Linux).Существует также связанная большая коллекция пакетов, которые можно установить с помощью диспетчера пакетов Nix - Nixpkgs --built для ряда платформ :
и связанный дистрибутив-- NixOS :
и связанная с ним "непрерывная" система сборки - Hydra .
источник
nix
иguix
. Поскольку сейчас я действительно используюnix
для своей работы, я хочу знать, могу ли я рассматривать вguix
качестве еще одной реализации нужного мне инструмента. Можно ли где-нибудь прочитать сводку различий? Возможно, вы могли бы даже написать ответ с таким резюме здесь, объявив еще одно альтернативное решение?Прежде всего это связано с зависимостями. Некоторые пакеты могут быть не установлены пользователем, например, PolicyKit. Поэтому это потребует дополнительной нагрузки на упаковщика, который жертвует свое свободное время, и обычно установка программы так же проста, как набор текста
sudo
(однопользовательская станция) или надоедливый администратор.В $ HOME есть варианты установки
./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install
(или вариации вроде jhbuild).источник
Я использую JuJu, который в основном позволяет иметь очень маленький дистрибутив linux (содержащий только менеджер пакетов) внутри вашего каталога $ HOME / .juju.
Это позволяет иметь собственную систему внутри домашнего каталога, доступную через proot, и, следовательно, вы можете устанавливать любые пакеты без прав root. Он будет работать правильно для всех основных дистрибутивов Linux, единственное ограничение - JuJu может работать на ядре Linux с минимальной рекомендованной версией 2.6.32.
источник
Другой с довольно другой моделью - 0install . Он основан на идее, что вы на самом деле не устанавливаете пакеты, а просто запускаете их из глобального пространства имен, которое загружает, компилирует при необходимости и кэширует программное обеспечение, которое вы хотите использовать.
источник
Если вы хорошо справляетесь с компиляцией из исходного кода и разрешаете зависимости самостоятельно, в первую очередь желая, чтобы диспетчер пакетов обрабатывал операции развертывания / отмены развертывания / обновления, вы, возможно, захотите взглянуть на GNU Stow или несколько улучшенный XStow . С ними вы устанавливаете установку в отдельный каталог (обычно в
$PREFIX/stow
), а затем укладываете символические ссылки на программное обеспечение из своего реального префикса. Это позволяет легко полностью удалить программное обеспечение. Я успешно использую его для управления своим программным обеспечением, установленным в моем университете.источник
Основные менеджеры пакетов Linux рассматривают мир как системный администратор ... где машина является единым целым. Это позволяет получить ответы на такие вопросы, как «какие выдающиеся ошибки относятся к системе X» и «чем отличаются система X и система Y». Это также позволяет yum иметь «историю», которую можно использовать, иметь версии rpmdb и выполнять такие действия, как «yum --security update» и т. Д.
Есть некоторые менеджеры пакетов, такие как zero-install, которые пытаются посмотреть на мир так, как это делает пользователь ... т.е. к каким приложениям у меня есть доступ.
Вы можете подумать, что последняя модель лучше, но у IMNSHO есть причина, по которой вы не слышали о нулевой установке, но слышали о yum.
источник
В этом блоке появился новый ребенок: « JuNest ( JAiled User NEST) - основанный на Arch Linux дистрибутив, который работает на любом дистрибутиве Linux без root-доступа». @ https://github.com/fsquillace/junest Преимущество заключается в том, что он не вводит новый тип формата пакета, поэтому после очень простой установки (минимум: около 320 млн.) полный репозиторий Arch Linux (более 13000). пакеты банкоматов) у вас под рукой.
источник
Инструменты, используемые Slackware, в частности
installpkg
, могут. Со страницы руководства:Тем не менее, я не знаю ни одного из лучших интерфейсов, способных сделать это (например
slapt-get
, насколько я знаю, не могу этого сделать). Теоретически, вы должны быть в состоянии псевдонимinstallpkg
кinstallpkg --root ~/Apps
- однако, я думаю , что большинство фронтэнды требует корня для запуска, которая побеждает точку.источник
Я бы предложил http://linuxbrew.sh/
Это в основном форк brew для macOS и имеет предварительно скомпилированные двоичные файлы для использования ...
Особенно хорошо подходит для работы со старыми версиями gcc.
Если вы действительно хотите установить вручную, полезное руководство http://www.linuxfromscratch.org/
источник
Yum необходимо записать в базу данных, которая принадлежит root. Из-за этого вы не можете использовать его как обычный пользователь.
Вы можете попытаться распаковать файлы rpm (rpm2cpio package.rpm | cpio -idmv) в каталоге по вашему выбору.
Но когда вы выполните свою программу, вам нужно будет позаботиться об изменении LD_LIBRARY_PATH, чтобы загрузить зависимые библиотеки. Также это не позаботится о каких-либо зависимостях.
Пример:
Выше нет зависимых библиотек, в противном случае вам придется использовать что-то вроде:
источник