The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

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

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

Получаем список пакетов из sources.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.
 
07.12.2009 , Автор: Vitto
Ключи: debian, linux, packet, apt, install / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Установка и работа с пакетами программ в Linux

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, iZEN (ok), 14:35, 07/12/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для примера, как это делается на 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).

     
     
  • 2.2, Crazy Alex (??), 18:40, 07/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Угу. Только в оригинальном посте речь о другой ситуации - в аналогии с FreeBSD это будет "бинарные пакеты не создавали или стерли". Во фре в этом случае вообще получится перенести ТОЧНО то, что есть на первой машине, на вторую? В дебиане это грантируется как раз бинарностью пакетов. А на фре придется второй раз собирать - и не факт, что получишь тот же самый результат.
     
  • 2.7, Гость (?), 17:12, 08/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > Для примера, как это делается на FreeBSD:

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

     

  • 1.3, Аноним (-), 22:04, 07/12/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    E: Значение параметра APT::Architecture должно иметь вид =<val>

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

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

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

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

     
     
  • 2.4, xwild (?), 08:31, 08/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    В подобном случае пользовался apt-mirror,
    правда выкачивать полное зеркало довольно долгое занятие, в моем случае оно было у локального провайдера.
    Для убунты занимало около 45 гб примерно год назад,
    конфиг в /etc/apt/mirror.list,
    выглядит как sources.list + дополнительные параметры, типа архитектуры, локального каталога куда сохранять и количества потоков.
     
     
  • 3.6, Vitto (?), 13:49, 08/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    До недавнего времени этим методом и пользовался. Он мне не нравился т.к. не очень удобно - для установки нескольких прог пставлять по очереди несколько DVD, читать список пакетов, выбирать софт, а потом еще раз вставлять эти диски, чтоб забрать пакеты.
     
  • 2.5, Vitto (?), 13:46, 08/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Знак "=" действительно забыл.

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

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

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

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

     

  • 1.8, Filosof_ (?), 21:38, 08/12/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Где ж Вы были 2 года назад? -:)
    Теперь у ня и домашний инет справляется.
    А так с работы было неудобно таскать.
     
     
  • 2.9, Vitto (?), 15:11, 09/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Если б я сам это знал, то поставил бы Ubuntu на домашней машине на 3 года раньше.

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

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

     
     
  • 3.10, аноним (?), 01:51, 12/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    классная хаутушка, спасибо! ...если бы действительно, оформить это в виде пары скриптов (собственные знания пока не позволяют), то было бы вообще супер.
     
     
  • 4.11, Vitto (?), 09:38, 12/12/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас рассматриваю возможность написания утилитки и, возможно, GUI к ней. Смысл в предоставлении возможности собирать и хранить файлы status от свежеустановленных осей для большего удобства. Ну и автоматизировать все это безобразие.
     

  • 1.12, Vitto74 (ok), 00:58, 31/01/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Еще небольшое дополнение. Если для скачивания пакетов использовать Ubuntu и собственный sources.list, то нужно предварительно отключить все PPA репозитории т.к. ссылки на них хранятся в отдельных файлах в каталоге /etc/apt/sources.list.d и не перекрываются вашим sources.list
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру