URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 61769
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Перенос пакетов с зависимостями меж..."

Отправлено auto_tips , 07-Дек-09 14:35 
Столкнулся с вопросом: как установить программу в debian/ubuntu без интернета. Дело в том, для переноса уже установленных программ используют aptoncd, который делает мини-репозиторий из кэша пакетов. Но как быть если кэш чистился и в нем лежат не все необходимые пакеты? Или необходимо принести программу на ubuntu а на компьютере стоит Debian ? Да и архитектур много.

Для получения пакетов со всеми зависимостями для установки на конкретную машину нам понадобится файл "/var/lib/dpkg/status" с исходной машины. В нем содержится список установленных пакетов и их состояние. На целевой системе не должно быть пакетов, установленных с ошибками иначе apt откажется работать.

Если нужно использовать альтернативный sources.list, то его следует создать. Затем создаем директорию, где будет наш кэш и директорию partial в ней. Далее дело техники.

Получаем список пакетов из soutce.list:

   sudo apt-get -o Dir::State::status='наш файл status' -o Dir::Cache::archives="куда кладем пакеты" \
     -o Dir::Etc::sourcelist="файл sources.list" -o APT::Architecture "архитектура" update

Создаем кэш:

   sudo apt-get -d -o Dir::State::status='наш файл status' -o Dir::Cache::archives="куда кладем пакеты" \
     -o Dir::Etc::sourcelist="файл sources.list" -o APT::Architecture "архитектура" install <нужные пакеты>

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


URL:
Обсуждается: http://www.opennet.me/tips/info/2241.shtml


Содержание

Сообщения в этом обсуждении
"Перенос пакетов с зависимостями между Debian-based дистрибутивами"
Отправлено iZEN , 07-Дек-09 14:35 
Для примера, как это делается на FreeBSD:

1. Устанавливаем ПО и попутно создаём бинарные пакеты в каталоге /usr/ports/packages/All/

portupgrade -p port_name

2. Копируем каталог с бинарными пакетами /usr/ports/packages/All/ на флэшку или делаем доступным в сети по NFS.

3. Устанавливаем новые пакеты на целевой машине:

pkg_add -r /mnt/packages/All/port_name-version.tbz

или

4. Обновляем уже установленные пакеты на новые версии (локальное дерево портов должно быть синхронным с той машиной, откуда скопировали пакеты):

env PKG_PATH=/mnt/packages/All/ portupgrade -aiPP

где "i" - интерактивно; "PP" — исключительно бинарное обновление без сборки из исходников.

Итого: никакие репозитории не нужны. Есть каталог с бинарными пакетами, который обновляется централизованно. Предыдущие версии пакетов из этого каталога не удаляются, так что можно откатиться на предыдущую версию какого-то ПО (pkg_delete -f pkg_name-failversion && pkg_add -f pkg_name-goodversion).


"Перенос пакетов с зависимостями между Debian-based дистрибут..."
Отправлено Crazy Alex , 07-Дек-09 18:40 
Угу. Только в оригинальном посте речь о другой ситуации - в аналогии с FreeBSD это будет "бинарные пакеты не создавали или стерли". Во фре в этом случае вообще получится перенести ТОЧНО то, что есть на первой машине, на вторую? В дебиане это грантируется как раз бинарностью пакетов. А на фре придется второй раз собирать - и не факт, что получишь тот же самый результат.

"Перенос пакетов с зависимостями между Debian-based дистрибут..."
Отправлено Гость , 08-Дек-09 17:12 
> Для примера, как это делается на FreeBSD:

А как то же самое сделать в случае разных архитектур? А если устанавливать скачиваемый софт на подключённой к Интернету системе нельзя?


"Перенос пакетов с зависимостями между Debian-based дистрибутивами"
Отправлено Аноним , 07-Дек-09 22:04 
E: Значение параметра APT::Architecture должно иметь вид =<val>

E: Архивный каталог /home/xen/<имя_пакета>/partial отсутствует.

E: Не удалось открыть файл /var/lib/apt/<пакет> status - open (2: No such file or directory)

E: Списки пакетов или status-файл не могут быть открыты или прочитаны.

Короче пользоваться невозможно, нужно оформить в виде скрипта, можно даже без гуя. пока продолжаю пользоваться семью вытянутыми двд-образами.


"Перенос пакетов с зависимостями между Debian-based дистрибут..."
Отправлено xwild , 08-Дек-09 08:31 
В подобном случае пользовался apt-mirror,
правда выкачивать полное зеркало довольно долгое занятие, в моем случае оно было у локального провайдера.
Для убунты занимало около 45 гб примерно год назад,
конфиг в /etc/apt/mirror.list,
выглядит как sources.list + дополнительные параметры, типа архитектуры, локального каталога куда сохранять и количества потоков.

"Перенос пакетов с зависимостями между Debian-based дистрибут..."
Отправлено Vitto , 08-Дек-09 13:49 
До недавнего времени этим методом и пользовался. Он мне не нравился т.к. не очень удобно - для установки нескольких прог пставлять по очереди несколько DVD, читать список пакетов, выбирать софт, а потом еще раз вставлять эти диски, чтоб забрать пакеты.

"Перенос пакетов с зависимостями между Debian-based дистрибут..."
Отправлено Vitto , 08-Дек-09 13:46 
Знак "=" действительно забыл.

Я же русским я зыком написал
> создаем директорию, где будет наш кэш и директорию partial в ней

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

Ну и четвертая ошибка следует из третей.

Еще раз уточню, что файл "/var/lib/dpkg/status" надо брать с машины на которую несем пакеты для установки.


"Перенос пакетов с зависимостями между Debian-based дистрибутивами"
Отправлено Filosof_ , 08-Дек-09 21:38 
Где ж Вы были 2 года назад? -:)
Теперь у ня и домашний инет справляется.
А так с работы было неудобно таскать.

"Перенос пакетов с зависимостями между Debian-based дистрибут..."
Отправлено Vitto , 09-Дек-09 15:11 
Если б я сам это знал, то поставил бы Ubuntu на домашней машине на 3 года раньше.

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

PS внимательнее читаем маны.


"Перенос пакетов с зависимостями между Debian-based дистрибут..."
Отправлено аноним , 12-Дек-09 01:51 
классная хаутушка, спасибо! ...если бы действительно, оформить это в виде пары скриптов (собственные знания пока не позволяют), то было бы вообще супер.

"Перенос пакетов с зависимостями между Debian-based дистрибут..."
Отправлено Vitto , 12-Дек-09 09:38 
Сейчас рассматриваю возможность написания утилитки и, возможно, GUI к ней. Смысл в предоставлении возможности собирать и хранить файлы status от свежеустановленных осей для большего удобства. Ну и автоматизировать все это безобразие.

"Перенос пакетов с зависимостями между Debian-based дистрибутивами"
Отправлено Vitto74 , 31-Янв-10 00:58 
Еще небольшое дополнение. Если для скачивания пакетов использовать Ubuntu и собственный sources.list, то нужно предварительно отключить все PPA репозитории т.к. ссылки на них хранятся в отдельных файлах в каталоге /etc/apt/sources.list.d и не перекрываются вашим sources.list