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

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

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

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

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

Это, в общем, невыполнимо, потому что вы бы испортили систему apt dependencies.

Есть два решения:

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

    apt-get source <package>

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

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

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

    debootstrap precise myfancyinstall

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

    chroot myfancyinstall

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

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

Это команда:

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.to вернитесь в обычный режим, не забудьте нажать кнопку "выход".

удачи.

Если вы находитесь на общем веб-хостере с ssh доступ, но нет apt-get нет root и т.д. или аналогичная ограниченная система, для вас может сработать следующее.Это сработало для меня в системе, где 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.debdebURL="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_removaldebFile=${debURL##*/}# change to your desired directory for installation/unpacking; here: $HOMEcd $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%29ar p $debFile data.tar.xz | tar xJv --strip-components=2 -f - rm -v $debFile # clean upecho "Done unpacking $debFile into $(pwd)"

@камиль, это не так. Я не пытаюсь установить без доступа к сети. Я пытаюсь установить без `sudo" и во внесистемный каталог.

Я предполагаю, что это дубликат этого вопроса :

http://askubuntu.com/questions/147654/how-to-setup-local-repository-for-ubuntu-12-04

Если у вас нет root в системе, вы не сможете легко разрешить зависимости *. Однако иногда это возможно; вам придется начать установку программного обеспечения у себя дома, начиная с самых нижних зависимостей и изменяя свой LD_PATH, чтобы программы могли находить свои библиотеки. Однако вы потерпите неудачу, если для запуска любого из пакетов требуется root (или suid).

@January, я пытаюсь скомпилировать программный проект внутри автоматизированной системы сборки. Насколько я знаю, ни одна из его зависимостей (необходимых для компиляции) не требует root.

Что ж, тогда устанавливайте зависимости одну за другой вручную. Я не вижу другого решения, которое не требовало бы root.