Как я могу установить пакет без рут-доступа?

126

У меня нет root-доступа на этой машине.

Я хотел бы знать, есть ли способ загрузить пакеты Ubuntu и установить их без полномочий root?

Возможно , в моем ~/binили ~/usr/shareили что - то в этом роде? Будет ли это работать?

Weboide
источник
1
Надеюсь, они скоро это поддержат.
Доми
4
Вы можете использовать переносимые приложения для Linux: без установки, без необходимости рута. Найдите его на appimage.org . Даже Линусу Торвальдсу это нравится. Это странно, потому что Линус никогда ничего не любит.
ipse lute
Я предлагаю попробовать fakechroot .
Роберт Поллак
Сочетание dpk -xи mvсработало для меня. Или, если даже dpkнет в наличии, arи трубопровод / объединение tarсработало для меня на очень ограниченных системах, см. Здесь
iolsmit
Связано с Unix и Linux : Менеджеры пакетов вне рута
Элия ​​Каган

Ответы:

107

Apt не поддерживает это напрямую, но есть способы сделать это.

Одним из них является использование schrootдля создания не-root chroot. Это довольно сложный процесс , но вы сможете найти помощь сообщества, так как многие разработчики настраивают среды chroot для компиляции кода.

Второй способ, который я знаю, это установка из пакета .deb. Вы можете загрузить его с веб-сайта или, если он есть в репозиториях Ubuntu, вы можете загрузить его с помощью.

apt-get download package

Заменить packageна название пакета

Как только у вас будет файл deb, вызовите его dpkgпрямо из командной строки. Следующий пример установит package.deb в ваш домашний каталог.

dpkg -i package.deb --force-not-root --root=$HOME 

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

Наконец, вы можете использовать apt-get sourceкоманду, чтобы получить источник пакета и настроить его для локальной установки. Обычно это выглядит примерно так:

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

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

РЕДАКТИРОВАТЬ:

Поскольку dpkg -iне работает (см. Комментарии), я предлагаю эту альтернативу:

dpkg -x package.deb dir

Это извлечет пакет .deb в каталог. Затем вы можете экспортировать путь, где находится двоичный файл. Пока все зависимости двоичного файла установлены, он должен работать как обычно.

jbowtie
источник
1
Если у вас есть root-доступ, но вы просто не хотите устанавливать определенный пакет глобально, вы можете использовать sudo apt-get build-dep packageдля установки все необходимое для сборки пакета (после получения его исходного кода apt-get source).
Владимир Пантелеев
19
Этот ответ был написан еще в 2010 году. Были ли какие-либо изменения в том, как это делается с тех пор?
becko
36
Даже с параметром --force-not-root я получаю «dpkg: error: запрашиваемая операция требует привилегий суперпользователя»
Clément
10
Люди --force-not-root --root=$HOMEили их варианты не будут работать. Двоичные пакеты Debian не предназначены для установки в домашний каталог, точка. Или, говоря по-другому. Msgstr "Следующий пример установит package.deb в ваш домашний каталог." Нет не будет
Фахим Митха
1
К сожалению, это не сработает. Я пытался--force-not-root --root=/your/custom/path
вьетнамский
16

Я полагаю, вы хотите установить Jedit . Сначала вы должны найти пакет и скачать его. Я просто беру файл deb из какого-то зеркала и открываю консоль / терминал:

  1. mkdir /tmp/jedit && cd /tmp/jedit- Создает новую директорию tmpи меняет ее.
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb - Скачать пакет
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.debили, легко набрать, ar x *.deb- это извлекает содержимое файла
  4. tar xvzf data.tar.gz- файл data.tar.gzсодержит все, что вам нужно для запуска программного обеспечения
  5. usr/bin/jedit открывает редактор
  6. сделанный :-)

Вы можете переместить файлы в какую-то точку вашего домашнего каталога и выполнить их оттуда.

QBi
источник
11
Обратите внимание, что сценарии до и после установки не запускаются; также вам нужно разрешить любые зависимости или пути самостоятельно. Но при установке по умолчанию этого достаточно для многих настольных приложений.
jbowtie
Вы также можете скачать пакет без поиска, просто загрузите apt-get (см. другой ответ)
lib
Я считаю, что ваша ссылка сломана.
Виннемукка
9

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

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

Например, после установки JuJu для установки jedit:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit
user967489
источник
Это будет хорошо работать на Ubuntu, верно?
Сет
Да, если версия ядра Linux для Ubuntu больше или равна 2.6.32, она будет работать.
user967489
2
Сначала я думал, что вы говорите об этом . Вторая заглавная буква j имеет значение.
Кон Псих
1
Вопрос был в том, сможем ли мы установить пакет Ubuntu. С помощью junest мы сможем установить только пакет ArchLinux, а не пакет Ubuntu. Например, если тот же пакет недоступен для ArchLinux, это не поможет. Тем не менее, спасибо за Джунест.
Киран