Некорневые диспетчеры пакетов

Если Вы хотите к способному легко установить, и удалить несколько приложений Вы создали себя, можно использовать, Убирают как простой диспетчер пакетов.

52
09.03.2011, 17:23
12 ответов

Двоичные пакеты компилируются учитывая, что они будут установлены на определенных местоположениях в /. Это не всегда легко изменяется, и это приложило бы дополнительные усилия QA (который является достаточно трудным во-первых!), чтобы определить, являются ли определенные двоичные файлы или не перемещаемы.

До некоторой степени, можно использовать вещи как fakechroot для создания всей системы в подкаталоге как некорневой пользователь, но это утомительно и хрупко.

У Вас будет лучшая удача с исходными пакетами. Хинду Префикс и Беспочвенный GoboLinux являются оба диспетчерами пакетов, которые могут установить на не -/ местоположения и могут быть применимыми не -root пользователи.

35
27.01.2020, 19:33
  • 1
    я добавил бы, что существует 2 вида переместимости. Пакет может предположить, что это всегда находится в определенном месте, или другие вещи находятся в определенных местах (как /bin) или это может предположить, что установлено на месте указанное - префикс. В то время как последний может быть работой вокруг теми проектами, первый требует патчей на исходном коде. –  Maciej Piechotka 08.01.2011, 16:42
  • 2
    Другая опция а-ля хинду Префикс, Беспочвенный, и, Отклоняет, pkgsrc. Это прибывает из NetBSD, но работает над множеством платформ. –  Michael Ekstrand 02.06.2012, 19:36
  • 3
    Двоичные пакеты компилируются учитывая, что они будут установлены на определенных местоположениях в / Это походит на требование, которое могло быть выровнено по ширине, возможно, 30 лет назад, но не теперь. Не, например, env программа означала решать этот вид проблем? Если не легко выпустить план настроить какой-либо двоичный файл для поиска других двоичных файлов в определенных местоположениях. проверка гороха –  Piotr Dobrogost 26.02.2013, 22:58
  • 4
    @PiotrDobrogost некоторым расширяются да, некоторым расширяются нет. Например, нет никакой переменной среды для /etc или (согласно моему знанию) /usr/lib/<packagename>/ или /usr/libexec/<packagename>/. /usr/share может быть изменен переменными XDG, который был выпущен когда-то в этом веке и не обязательно принят для более старых программ. –  Maciej Piechotka 28.08.2015, 11:02

Существует проект диспетчера пакетов - Отклоняют - с интересной основополагающей идеей ("функциональный" pkg менеджер), который также поддерживает операцию в расчете на пользователя:

Многопользовательская поддержка

При запуске в версии 0.11 Отклоните, имеет многопользовательскую поддержку. Это означает, что непривилегированные пользователи могут надежно установить программное обеспечение. У каждого пользователя может быть различный профиль, ряд пакетов в Отклонить хранилище, которые появляются в ПУТИ пользователя. Если пользователь установит пакет, который другой пользователь уже установил ранее, то пакет не будет создан или загрузил во второй раз. В то же время для одного пользователя не возможно ввести Троянского коня в пакет, который мог бы использоваться другим пользователем.

ПРИМЕЧАНИЕ Я ХОЧУ ДОБАВИТЬ: Nix должно быть применимым в подобной Unix системе по Вашему выбору (например, дистрибутив Linux).

Существует также связанное большое количество пакетов, которые могут быть установлены с Отклонить диспетчером пакетов - Nixpkgs - созданный для многих платформ:

  • GNU/Linux на 32-разрядном и 64-разрядном x86 (i686-linux и x86_64-linux)
  • Mac OS X (i686-darwin и x86_64-darwin)
  • FreeBSD (i686-freebsd и x86_64-freebsd)
  • OpenBSD (i686-openbsd)
  • Windows / Cygwin (i686-cygwin),

и связанный дистрибутив - NixOS:

NixOS является дистрибутивом Linux на основе, Отклоняют. Это использует, Отклоняют не только для управления пакетом, но также и управлять конфигурацией системы (например, в файлы конфигурации сборки в / и т.д.). Это означает, среди прочего, что возможно легко откатывать всю конфигурацию системы к более раннему состоянию. Кроме того, пользователи могут установить программное обеспечение без полномочий пользователя root. Считайте больше …

и связанная "непрерывная" система сборки - Гидра.

28
27.01.2020, 19:33
  • 1
    Хорошая сводка. Недавно о GNU Guix объявили. Диспетчер пакетов GNU на основе отклоняет. savannah.gnu.org/forum/forum.php?forum_id=7436 –  Davorak 29.11.2012, 03:10
  • 2
    @Davorak, Между чем diffetrences nix и guix. Поскольку теперь я действительно использую nix для моей работы я хочу знать, мог ли я рассмотреть guix как другая реализация инструмента мне нужно. Я могу прочитать сводку различий где-нибудь? Возможно, Вы могли даже записать ответ с такой сводкой здесь, объявив о еще одном альтернативном решении? –  imz -- Ivan Zakharyaschev 19.03.2015, 17:51

В первую очередь, это происходит из-за зависимостей. Некоторые пакеты не могут быть установлены пользователем - как PolicyKit. Поэтому это потребовало бы дополнительной нагрузки на поставщике программного блока, кто жертвует их свободное время, и обычно установка программы так же легка как ввод sudo (однопользовательская станция) или ворчащий администратор.

Существуют опции для установки в $HOME

  • Примитивные 'диспетчеры пакетов' языка обычно поддерживают его из поля (как драгоценный камень для Ruby или интрига для Haskell) или с маленькой тонкой настройкой (я забыл название Python),
  • Старый добрый ./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install (или varitations как jhbuild).
  • Была программа для установки на уровне $HOME несколько лет назад. Однако я не могу найти его - я предполагаю, что почти никто не использовал его в качестве них или установленный их самих или администраторов ворчания.
6
27.01.2020, 19:33
  • 1
    , который я действительно не вижу, как это - убедительный аргумент. Просто, потому что пакет не работает, так как он не вызывается, поскольку корень не означает, что идея не выполнима. Ожидается, что PolicyKit не работал бы на этот тип ситуации. Существует много других пакетов, которые могут быть установлены без полномочий пользователя root. Я знаю о менеджерах по пакету программного обеспечения (Python является EasyInstall), но это не глобально применимо, поскольку конфетка или склонный - добирается. Кто-либо знает название программы, к которой обращается Maciej? –  elmt 08.01.2011, 05:24
  • 2
    @elmt: Возможно уберите, который мог бы заинтересовать Вас так или иначе (но это - инструмент, не источник пакета). редактор –  Gilles 'SO- stop being evil' 08.01.2011, 14:46
  • 3
    @Gilles: Нет - это имело GUI и было предназначено, чтобы быть 'простым'. Я предполагаю, что текущее направление является большим количеством synaptic/packagekit. –  Maciej Piechotka 08.01.2011, 16:11

Мой опыт действительно просто ограничен конфеткой, но я не понимаю, почему я не смог бы бросить repo файл в ~/etc/yum.repos.d и иметь конфетку, устанавливают все в домашнюю учетную запись.

Основные диспетчеры пакетов Linux просматривают мир, как системный администратор был бы..., где машина является единственным объектом. Это позволяет Вам получать ответы на вопросы как, "какие выдающиеся опечатки относятся к системе X" и, "как делают система X и система Y отличаются". Это также позволяет конфетке иметь "историю", которая применима, имейте rpmdb версии и сделайте вещи как "конфетка - обновление системы защиты" и т.д.

Существуют некоторые диспетчеры пакетов, как нулевая установка, которые пытаются просмотреть мир, как пользователь был бы... т.е. что делают приложения у меня есть доступ к.

Вы могли бы думать, позже лучшая модель, но IMNSHO, там причина, которую Вы не услышали о нулевой установке, но услышали о конфетке.

3
27.01.2020, 19:33

Инструменты используются Slackware, конкретно installpkg, может. Из страницы справочника:

--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.

Однако я не знаю ни об одном из лучше frontends, которые могут сделать это (например. slapt-get, насколько я знаю, не может сделать этого). Теоретически, необходимо смочь исказить installpkg кому: installpkg --root ~/Apps - однако, я думаю, что большинство frontends требует, чтобы корень работал, который побеждает точку.

1
27.01.2020, 19:33

Другой с довольно другой моделью - 0install. Это основано на идее, что Вы действительно не устанавливаете пакеты, но просто выполняете их от глобального пространства имен, которое загружает, компиляции при необходимости, и кэширует программное обеспечение, которое Вы хотите использовать.

4
27.01.2020, 19:33

Если Вы соглашаетесь с компиляцией из источника и разрешением, что зависимости сами, прежде всего, желая, чтобы диспетчер пакетов обработал, развертывают/не развертывают/обновляют операции, Вы могли бы хотеть смотреть на GNU, Убирают или несколько улучшенный XStow. С ними Вы подготавливаете установку на отдельном каталоге (обычно под $PREFIX/stow) и затем уберите, делает символьные ссылки на программное обеспечение от Вашего реального префикса. Это помогает затем удалить программное обеспечение полностью. Я использую его успешно для управления моим пользовательски установленным программным обеспечением в моем университете.

4
27.01.2020, 19:33

Я использую juju , который в основном позволяет иметь действительно крошечное распределение Linux (содержащее только диспетчер пакетов) в вашем каталоге $ HOME / .JUJU.

Это позволяет иметь вашу собственную систему внутри домашнего каталога, доступного через проот, и, следовательно, вы можете установить любые пакеты без корневых привилегий. Он будет работать должным образом ко всем основным распределениям Linux, единственным ограничением является то, что Juju может работать на ядре Linux с минимальной рекомендательной версией 2.6.32.

7
27.01.2020, 19:33

В блоке появился новый ребенок: " JuNest (заключенный пользователь NEST) - дистрибутив на основе Arch Linux, работающий на любом Linux. дистрибутив без корневого доступа ". @ https://github.com/fsquillace/junest Преимущество в том, что он не вводит новый формат пакета, поэтому после очень простой установки (минимум: около 320M) полный репозиторий Arch Linux (более 13000 пакетов ATM) у вас под рукой.

2
27.01.2020, 19:33

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

Вы можете попробовать распаковать rpm-файлы (rpm2cpio package.rpm | cpio -idmv) в выбранный вами каталог.

Но когда вы будете выполнять свою программу, вам нужно будет позаботиться об изменении LD_LIBRARY_PATH, чтобы загрузить зависимые библиотеки. Также это не позаботится о каких-либо зависимостях.

Пример:

# 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)

Вышеупомянутое не имеет никаких зависимых библиотек, иначе вам пришлось бы использовать что-то вроде:

export LD_LIBRARY_PATH=./usr/lib ./usr/bin/program
0
27.01.2020, 19:33

Я бы посоветовал http://linuxbrew.sh/

По сути, это форк brew для macOS с предварительно скомпилированными бинарными файлами для использования...

Особенно хорош для работы со старыми версиями gcc.

Если вы действительно хотите установить вручную, полезное руководство http://www.linuxfromscratch.org/

3
27.01.2020, 19:33

и новый zpkg, это волшебство:

With zpkg you can install programs from other distributions into your system

zpkg will install programs to your home directory. Global installations are also supported (via -g).

тогда вы можете установить любой пакет из :alpine, centos, debian, fedora, gentoo, archlinux,ubuntu

https://zpkg.plash.io/

https://github.com/ihucos/zpkg

1
27.01.2020, 19:33

Теги

Похожие вопросы