Установка пакетов в локальный каталог?

Я хотел бы установить пакеты программного обеспечения, аналогично apt-get install <foo>, но:

  1. Без sudo и
  2. В локальный каталог

Цель этого упражнения - изолировать независимые сборки на моем сервере непрерывной интеграции .

1116 Я не возражаю против компиляции из исходного кода, если это то, что нужно, но, очевидно, я бы предпочел самый простой подход. Я попытался 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?

38
задан 13 April 2017 в 15:24

3 ответа

Это, как правило, невозможно, потому что вы могли бы связываться с системой зависимостей apt.

Существует два решения:

  1. Установите пакет с исходным кодом, перейдите в каталог с исходным кодом, настройте и установите пакет независимо от систем упаковки вручную в каталог по вашему выбору. [ 119]

    apt-get source <package>
    

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

    Конфигурирование, в какой установочный каталог должны идти программы, зависит, однако, от конкретной программы. Многие программы используют ./configure --prefix localdir для установки установки на localdir; но это далеко не всегда так.

  2. Создайте среду chroot, в которую вы будете устанавливать пакеты:

    debootstrap precise myfancyinstall
    

    Теперь вы создали фиктивную установку в каталоге myfancyinstall /

    chroot myfancyinstall
    

    Вы можете используйте apt-get install внутри клетки chroot, чтобы установить что угодно.

0
ответ дан 13 April 2017 в 15:24

Если у вас общий веб-хостер с доступом ssh, но нет apt-get, нет рута и т. Д. Или система с аналогичным ограничением может работать для вас. У меня это работало в системе, где uname -a возвращало что-то вроде SMP Debian 4.9.65-3+deb9u2~bpo8+1 (2017-01-05) x86_64 GNU/Linux

# examples tried on a shared hoster with ssh access but no apt-get no root etc.
# http://mirrors.kernel.org/ubuntu/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_amd64.deb
# https://github.com/dvorka/hstr/releases/download/1.25/hstr_1.25-1_amd64.deb

debURL="http://mirrors.kernel.org/ubuntu/pool/main/g/gawk/gawk_4.1.3+dfsg-0.1_amd64.deb"
# get the filename only, remove all till last slash "/"
# see http://wiki.bash-hackers.org/syntax/pe#substring_removal
debFile=${debURL##*/}
# change to your desired directory for installation/unpacking; here: $HOME
cd $HOME
# get the .deb file (no dependencies checked or resolved here)
curl -OL $debURL 
# unpack only the data part from the .deb file
# see https://en.wikipedia.org/wiki/Deb_%28file_format%29
ar p $debFile data.tar.xz | tar xJv --strip-components=2 -f - 
rm -v $debFile # clean up
echo "Done unpacking $debFile into $(pwd)"
0
ответ дан 13 April 2017 в 15:24

Используя оболочку bash и получив файл «package.deb» (при условии, что имя пакета - «пакет»), вы можете выполнить следующую команду, чтобы выполнить то, что вы хотите - установить пакет так, чтобы ваш домашний каталог обрабатывался так же путь "/" будет обработан при обычной установке.

Это команда:

apt-get download package; dpkg -i --force-not-root --root=$HOME 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. чтобы вернуться в нормальный режим, не забудьте «выйти»

удачи.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

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