APT (почти) без Сети
02.08.2008 17:33:52Продолжаем «полезную» серию. 🙂
Как известно, в самом лучшем дистрибутиве GNU/Linux (см. Debian), используется самая лучшая система управления пакетами (см. APT). APT сеет/косит/мелет… Ну то есть, качает, ставит, обновляет. 🙂 И делает это очень успешно. Но, в основном, когда есть адекватное подключение к Сети. Без неё всё немножко более грустно.
Можно обновляться с помощью CD/DVD, с выходом нового стабильного релиза или обновления существующего (r1-2-3…). Но это долго ждать. Плюс, может, хочется и из других веток/репозиториев что-то поставить. Что делать?
В общем, не буду томить, всё уже давно придумано. Конкретно можно почитать руководство. В нём рассмотрены два варианта. Один с использованием APT на обеих машинах (одна, которую хотим обновлять, второая, которая качает), второй с wget.
Первый путь позволяет обновлять полностью оффлайновую машину. Я его рассматривать не буду, уровень шаманизма там повыше и сам я его не пробовал. Предполагаем, что машинка всё-таки как-то подключена к интернету, но очень уже плохо подключена, например, модем там болтается.
В этом случае мы можем позволить себе скачивать/обновлять индексные файлы, но вот сами пакеты, увы. Стало быть, задача упрощается до предела — получить список ссылок на пакеты с машинки и бежать со списком к секретному месту с хорошим соединением, где список срочно качать.
Увы, здесь нам не поможет aptitude, рекомендуемый инструмент для управления пакетами, но вполне поможет старый-добрый apt-get. Итак, смотрим, что мы хотим сделать, в духе
# apt-get -V dist-upgrade
С выполнением действий не соглашаемся. Если нас всё устраивает:
# apt-get -qq --print-uris dist-upgrade > uris # awk '{print "wget -c -O" $2 " " $1}' < uris > wget-script
В файлике uris получим исчерпывающую информацию по файлам, ссылку, желаемое имя на выходе, размер, хэш. А в файлике wget-script скриптик, который вызывает wget и качает всё необходимое. Запускаем его на второй машине:
$ sh wget-script
Оригинальное руководство рекомендует затем использовать параметр dir::cache::archives при вызове apt-get, ну а я бы привычным образом бухнул всю армаду скачавшихся пакетов на первую машинку прямо в /var/apt/cache/archives/. Можно чего можно просто сделать dist-upgrade.
Аналогично можно провернуть установку чего-нибудь объёмного. Аналогично, полагаю, можно скачать файлы и чем-то отличным от wget, вся информация есть, надо только правильно её применить по ситуации. Творчествуйте!
02.08.2008 18:34:51
А у вас в «лучшем дистрибутиве» нету случайно возможности скачивать не пакеты целиком а дельты? Хотя у вас все пакеты бинарные.. сложнее наверное.
У нас в Gentoo есть такая возможность (deltup), которая здорово сокращает трафик. я думаю раз в 5 точно.
02.08.2008 21:44:40
[…] предыдущей заметке поступил вопрос: А у вас в “лучшем дистрибутиве” нету случайно […]