дебиан,
системное
22 коммент.
Решение: для этого потребуется установить несколько пакетов, достать скрипт на ruby и освободить побольше места на винчестере.
1. Введение
Пакеты по лицензионным или прочим соображениям делятся в репозитории на секции: например, главная (main) и несвободная (non-free). Пакеты несвободной секции в официальный репозиторий не входят по лицензионным соображениям - но это не значит, что их нельзя скачать. Простое скачивание результата не даст - нужно разбить большой репозиторий на DVD-образы, чтобы пользоваться ими потом.
Для решения задачи нам потребуется несколько программ, которые в официальный свободный репозиторий гарантированно входят.
2. Создание локального зеркала
Нужно установить пакет debmirror:
aptitude install debmirrorПосле этого можно будет качать репозиторий к себе на винчестер с возможностью автоматической докачки (если не сможете вытянуть его за один заход). Выходим в консольку и даём команду:
debmirror debian --nosource --host=backports.org --root=debian --method=http --progress --dist=etch-backports --section=main,contrib,non-free --arch=i386 --ignore-release-gpgТеперь что всё это значит и как всем этим пользоваться.
Полужирное выделение - это важные параметры, которые нужно будет менять, красным - это, собственно, значения параметров, которые меняем. Для пояснения ситуации лучше запустить броузер и скормить ему ссылку, которая стоит в --host, после чего станет ясно:
- --host - это адрес репозитория (без слеша на конце, здесь это backports.org)
- --root - это тот каталог, от которого начнётся зеркалирование пакетов. Короче - это каталог, который виден сразу после захода на адрес, указанный в --host и его же указываем сразу после команды debmirror.
- --method - обычно это http
- --dist - название версии дистрибутива, который нас интересует (например sarge, etch, lenny...). Это следующий по уровню каталог, после --host далее --root, далее каталог dist и каталог в нём будет --dist
- --section - название секции, которая нам нужна (например non-free, если не одна - разделитель запятая без пробелов, типа non-free,main)
- --arch - архитектура.
Здесь, насколько смог, пояснил на примере реального зеркала, полужирным выделены важные каталоги, красным - нужные нам параметры и что вместо них подставлять.
http://backports.org/
[DIR] debian/ это --root=
[TXT] README.mirrors.html 08-Jun-2007 07:41 10KПосле этого запустится программа и, если нам повезёт, начнут копироваться пакеты и складываться в локальные каталоги. Поползут строки типа:
[TXT] README.mirrors.txt 08-Jun-2007 07:41 7.6K
[ ] archive.key 20-Apr-2006 08:32 1.9K
[DIR] dists/ 10-Apr-2007 12:24 -[DIR] etch-backports/ это --dist= 08-Jun-2007 07:38 -[ ] Release.gpg 08-Jun-2007 07:38 189
[DIR] contrib/ это --section= 10-Apr-2007 12:24 -
[DIR] main/ это --section= 10-Apr-2007 12:24 -
[DIR] non-free/ это --section= 10-Apr-2007 12:24[DIR] sarge-backports/ 08-Jun-2007 07:38 -[DIR] doc/ 02-Sep-2005 19:14 -
[DIR] indices/ 08-Jun-2007 07:38 -
[ ] ls-lR.gz 08-Jun-2007 07:38 386K
[ ] ls-lR.patch.gz 08-Jun-2007 07:38 15K
[TXT] new.html 08-Jun-2007 09:50 3.4K
[DIR] pool/ 16-Jan-2006 11:35 -
[DIR] project/ 15-Dec-2005 22:12 -
[TXT] removals.txt 07-May-2007 21:59 40K
[TXT] robots.txt 19-Apr-2005 21:03 26
[TXT] style.css 07-May-2005 15:11 1.7K
[DIR] tools/
Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-686-smp_2.6.16-18~bpo.1_i386.deb... okЭто копируются пакеты. Всё отлично, переходим дальше.
Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-686_2.6.16-18~bpo.1_i386.deb... ok
Getting: pool/main/l/linux-2.6.16/linux-image-2.6.16-2-k7-smp_2.6.16-18~bpo.1_i386.deb... ok
3. Разделяем пакеты в каталоги размера DVD-образа
Каталог с репозиторием больше, чем можно записать на болванку - следовательно, распределяем по каталогам, суммарный объём файлов которых не превышает CD / DVD диск. Нужно установить пакет debpartial:
aptitude install debpartialДалее делаем каталог для записи на DVD (например, etch-backports-dvd):
mkdir etch-backports-dvdи создаём с помощью debpartial описание пакетов в каждом диске:
debpartial --nosource --dirprefix=backports-etch --section=main,non-free --dist=etch-backports --size=DVD backports-etch backports-etch-dvd
Для других архитектур, например для amd64, нужно указать явно архитектуру:
debpartial --nosource --arch=amd64 --section=non-free --dist=etch --size=DVD non-free non-free-dvd/И снова несколько пояснений. Указываем те секции, которые указали при скачивании командой debmirror, название дистрибутива из --dist, размер (CD или DVD). Потом сначала пишем откуда создавать описания, а потом куда (в каталог, который будем нарезать на болванку). После этого поползут строчки вида:
Reading dists/etch-backports/main/binary-i386/Packages.gz... doneА когда всё успокоится, в каталоге (в этом примере) etch-backports-dvd появятся подкаталоги с номерами, начиная с 0, в которых скопированы описания пакетов. В моём примере создался один каталог, так как пакетов немного:
Reading dists/etch-backports/non-free/binary-i386/Packages.gz... done
backports-etch0: 260 packages. Size: 1014633860 [ openoffice.org-l10n-de, ... ]
/usr/bin/debpartial:230: warning: Insecure world writable dir /usr/local/matlab7 in PATH, mode 040777
Writing Packages.gz of backports-etch0 for (etch-backports,main,i386)... 252.
Writing Packages.gz of backports-etch0 for (etch-backports,non-free,i386)... 8.
backports-etch0Теперь нам потребуется язык ruby, который скорее всего уже установлен, но тем не менее:
aptitude install rubyПосле этого создаём файл скрипта под названием debcopy и записываем в него следующее (оригинал кода здесь):
Даём ему права на исполнение и пишем:#!/usr/bin/ruby
#
# debcopy - Debian Packages/Sources partial copy tool
#
# Usage: debcopy [-l]
ruby debcopy backports-etch/ backports-etch-dvd/backports-etch0/Начнётся процесс копирования, который может отнять много времени. Терпеливо ждём, потягивая кофе / чай / коньяк (нужное подчеркнуть). Закончится это всё примерно следующим:
Processing backports-etch-dvd/backports-etch0//dists/etch-backports/main/binary-i386/Packages.gz... doneПовторяем это для всех директорий с номерами (backports-etch0/ backports-etch1/ ... backports-etchN/), получаем копию репозитория, нарезанного на каталоги подходящего размера.
Processing backports-etch-dvd/backports-etch0//dists/etch-backports/non-free/binary-i386/Packages.gz... done
/usr/bin/myscript/debcopy:144: warning: Insecure world writable dir /usr/local/matlab7 in PATH, mode 040777
Number of Copied Files: 260
Number of Ignored Files: 0
Number of Non-existence File: 0
4. Создаём ISO-образы и пропаливаем на болванки
Если хочется пользоваться репозиторием на болванках на других машинах, нужно нарезать репозиторий на диски. Тут всё просто: создаём ISO-образ:
mkisofs -f -J -r -o backports-etch0.iso backports-etch-dvd/backports-etch0Не забываем повторить эту команду для всех директорий с номерами (backports-etch0/ backports-etch1/ ... backports-etchN/), получаем ISO-образы и пропаливаем их на диски своей любимой программой прожига.
Ссылки
Собственно, пост является переводом и расширением этой замечательной статьи. Решение, может, и не лучшее, но мне оно нравится тем, что работает :-) Так же очень толковое руководство тут.