Я хотел бы установить программные пакеты, похожие на apt-get install <foo>
:
- Без
sudo
и - В локальный каталог
Цель этого упражнения - изолировать независимые сборки на моем сервере непрерывной интеграции .
Я не возражаю против компиляции из исходного кода, если это то, что нужно, но, очевидно, я бы предпочел самый простой подход. Я попытался, apt-get source --compile <foo>
как упоминалось здесь, но я не могу заставить его работать для пакетов, таких как autoconf. Я получаю следующую ошибку:
dpkg-checkbuilddeps: Unmet build dependencies: help2man
У меня help2man, скомпилированный в локальном каталоге, но я не знаю, как сообщить apt-get об этом. Любые идеи?
ОБНОВЛЕНИЕ : я нашел ответ, который почти работает на https://askubuntu.com/a/350/23678 . Проблема в chroot
том, что для этого требуется sudo. Проблема в apt-get source
том, что я не знаю, как разрешить зависимости. Надо сказать, chroot
выглядит очень привлекательно. Есть ли эквивалентная команда, которая не требует sudo?
sudo
и в несистемный каталог.Ответы:
В общем, это невозможно, потому что вы могли бы связываться с системой зависимостей apt.
Есть два решения:
Установите исходный пакет, перейдите в исходный каталог, настройте и установите пакет независимо от систем упаковки вручную в каталог по вашему выбору.
Это не требует root, загружает исходный код пакета, распаковывает его в каталог в текущем каталоге. Затем вы можете перейти в этот каталог, внести изменения в источник, настроить установку для другой цели и т. Д.
Однако настройка директории установки, в которую должны идти программы, зависит от конкретной программы. Многие программы используют
./configure --prefix localdir
для установки установки localdir; но это далеко не всегда так.Создайте среду chroot, в которую вы будете устанавливать пакеты:
Теперь вы создали фиктивную установку в каталоге myfancyinstall /
Вы можете использовать apt-get install внутри chroot cage, чтобы установить что угодно.
источник
apt-get source
без,--compile
кажется, подавляет предупреждение о неудовлетворенных зависимостях (позволяя мне разрешить их самостоятельно)ar vx mypackage.deb
. Затем проанализируйте содержимое пакета и узнайте, как установить его вручную.используя оболочку bash и получая файл «package.deb» (при условии, что имя пакета - «пакет»), вы можете выполнить следующую команду, чтобы выполнить то, что вы хотите - установить пакет так, чтобы ваш домашний каталог обрабатывался так же, как «/ "будет рассматриваться в обычной установке.
Это команда:
Вы можете столкнуться с некоторыми ошибками, такими как отсутствие $ HOME / var / lib / dpkg / lock, поэтому просто создайте все отсутствующие файлы, которые вы получите из ошибок, и тогда установка должна работать без sudo.
обратите внимание, что если «apt-get download» не работает, вы можете попробовать «apt download» или «apitutde download package».
если ни один из методов не работает, вы можете просто загрузить пакет вручную с http://packages.ubuntu.com/
Другой способ - запустить команду chroot с параметром $ HOME, а затем установить ее, как описано выше, только без --root = $ HOME. эта команда приведет вас в оболочку, где "/" - ваш текущий $ HOME. чтобы вернуться в нормальный режим, не забудьте "выйти"
удачи.
источник
Если вы используете общий веб-хостер с
ssh
доступом, но безapt-get
рута и т. Д., Или с аналогичной системой ограничения, вам может помочь следующее. У меня это работало в системе, гдеuname -a
возвращалось что-то вродеSMP Debian 4.9.65-3+deb9u2~bpo8+1 (2017-01-05) x86_64 GNU/Linux
источник