Як я можу встановити пакет без доступу до root?


125

У мене немає кореневого доступу на цій машині.

Мені хотілося б знати, чи є спосіб завантажувати пакети Ubuntu та встановлювати їх як некореневі?

Можливо , в моєму ~/binабо ~/usr/shareабо що - то в цьому роді? Це би спрацювало?


1
Сподіваємось, вони незабаром підтримають це.
Домі

4
Ви можете використовувати портативні програми для Linux: не потрібно встановлювати, немає кореня. Знайдіть його на appimage.org . Навіть Лінус Торвальдс це любить. Це дивно, адже Лінус ніколи нічого не любить.
ipse лютня

Я пропоную спробувати фальшивку .
Роберт Поллак

Поєднання dpk -xі mvпрацювало для мене. Або, якщо навіть dpkнемає, arа трубопроводи / комбінування з tarпрацюючими для мене на дуже обмежених системах, дивіться тут
iolsmit

Відповіді:


107

Apt не підтримує це безпосередньо, але є способи це зробити.

Перше - це використовувати schrootдля створення не-кореневого хротону. Це дещо пов'язаний процес , але ви повинні знайти допомогу спільноти для більшості розробників, які налаштовують chroot середовища для компіляції коду.

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

apt-get download package

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

Після того, як у вас буде виклик деб-файлу 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 до режиму. Тоді ви можете експортувати PATH, де є двійковий файл. Поки встановлені всі залежності двійкового файлу, він повинен працювати як звичайний.


1
Якщо у вас є кореневий доступ, але ви просто не хочете встановлювати певний пакет у всьому світі, ви можете використовувати sudo apt-get build-dep packageдля установки всього необхідного для складання пакету (після отримання його джерела apt-get source).
Володимир Пантелеев

19
Ця відповідь була написана ще в 2010 році. Чи були зміни, як це робиться з тих пір?
беско

36
Навіть із --force-not-root, я отримую "dpkg: error: запитувана операція вимагає привілею суперпользователя"
Clément

10
Люди --force-not-root --root=$HOMEабо їх варіанти не працюватимуть. Бінарні пакети Debian не розроблені для встановлення в домашній каталог, період. Або, по-іншому,. "Наступний приклад встановить package.deb у ваш домашній каталог." Ні, не буде.
Faheem Mitha

1
На жаль, це не спрацює. Я спробував--force-not-root --root=/your/custom/path
В'єт-

16

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

  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. зробив :-)

Ви можете перемістити файли в якусь точку вашого домашнього каталогу і виконати їх звідти.


11
Зауважте, що сценарії до і після встановлення не запускаються; також вам потрібно буде самостійно вирішити будь-які залежності або шляхи. Але для встановлення за замовчуванням цього достатньо для багатьох настільних додатків.
jbowtie

ви також можете завантажити пакет, не шукаючи його, просто apt-get download (див. іншу відповідь)
lib

Я вірю, що ваше посилання порушено.
Winnemucca

9

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

Це дозволяє мати вашу власну систему всередині домашнього каталогу доступною через proot, а отже, ви можете встановлювати будь-які пакунки без привілеїв root. Він буде працювати належним чином для всіх основних дистрибутивів Linux, єдине обмеження полягає в тому, що JuJu може працювати на ядрі Linux з мінімально рекомендованою версією 2.6.32.

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

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit

Це буде добре працювати на Ubuntu, правда?
Сет

Так, якщо версія ядра Linux ubuntu більша або дорівнює 2.6.32, вона буде працювати.
user967489

2
Спочатку я думав, що ти говориш про це . Друга з великої літери j робить різницю.
kon psych

1
Питання було в тому, чи зможемо ми встановити пакет Ubuntu. З юстистом ми зможемо встановити лише пакет ArchLinux, а НЕ пакет Ubuntu. Наприклад, якщо такий же пакет недоступний для ArchLinux, це не допоможе. Це сказало, спасибі за червень.
Кіран
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.