Запуск apt-get для другого раздела/каталога?

Я загрузил свою систему с живого компакт-диска Ubuntu, и мне нужно исправить некоторые проблемы с пакетом. Я установил свой жесткий диск, и теперь я хочу запустить apt-get, как если бы я загрузился нормально. т.е. изменить рабочий каталог для apt-get, чтобы он работал на моем жестком диске. Я сделал это раньше, но я не могу вспомнить синтаксис. Я думаю, что это был только некоторый флаг, например:

apt-get --root-directory=/mnt/partition1 install....

Но я получаю только "вариант командной строки... не понял". Любые идеи?

Ответ 1

chroot/mnt/partition1

Если ваша система использует несколько дисковых разделов, вам может понадобиться смонтировать некоторые из них, чтобы заставить систему пакетов работать (я прекратил настройку нескольких разделов 10 лет назад, когда жесткие диски стали слишком большими для необработанного физического резервного копирования).

Это не сработает, если у вас еще нет доступной системы debian в этом месте. - акостадинов

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

Некоторые соответствующие комментарии от другого ответа:

apt-get -o RootDir =/tmp/test_apt устанавливает (почти) все пути, которые должны быть в другом корне. btw на запущенной системе, если вы скопируете /etc/apt,/usr/lib/apt и mkdir -p usr/lib и т.д. var/cache var/lib/dpkg var/lib/apt/lists/partial var/cache/apt/archives/partial и, наконец, touch var/lib/dpkg/status, тогда apt будет работать в этом корне. Он может даже работать как пользователь без полномочий root, если вы добавите параметр -o Debug:: NoLocking = 1. Опция nolock необходима, потому что я не смог найти способ установить файл блокировки внутри другого корневого каталога. - акостадинов

Работа означает использование пакетов поиска и загрузки и таких операций. На самом деле установка невозможна, если некоторые необходимые пакеты еще не существуют. debootstrap может помочь, если цель фактически устанавливает пакеты в новый корень по любой причине. - акостадинов

Ответ 2

Также это должно работать:

sudo apt-get -o Dir=/media/partitioni1 update

Ответ 3

Запуск chroot /mnt/partition1 запустит новую оболочку, в которой корень файловой системы /mnt/partition1. Предполагая, что apt-get на вашем жестком диске работает правильно, вы можете перейти оттуда.

dpkg --root=/mnt/partition1 -i mypackage.deb - это опция, которая не требует chroot, но требует, чтобы вы сами загрузили пакет.