How-to`s — Создаём своё зеркало debian и локальный репозиторий
Есть люди, у которых интернет медленный или дорогой. А дисковое пространство сейчас крайне дешёвое. Один из таких людей - я, вот и приходится как-то выкручиваться. Просто так систему не обновишь и программы особо не поставишь :( Зато на работе некоторые ресурсы (например, ftp.mgts.by, где куча репозиториев для разных дистрибутивов) доступны локально практически на 100Мбит/с
К счастью есть такая замечательная утилита, как debmirror, при помощи которой можно создать своё зеркало. А полное зеркало debian не особо большое (для debian sid без исходников - 31 GiB)
Поэтому я прихожу на работу, подключаю винт, монтирую его (например, в /tmp/a)
Затем делаю всего одну команду
И получаю полное зеркало. Теперь немножко о параметрах
-v - это чтобы показывали, что сейчас происходит
-d - тут можно выбрать, какой дистрибутив качать (можно указывать как названия lenny, squeeze, sid, так и stable, testing, unstable)
--nosource - этот довольно важный параметр, который сильно экономит время и размер зеркала. С ним не будут закачиваться исходники программ.
-s main,contrib,non-free - секции, которые нужно закачивать
--method=http - протокол, по которому передаются данные. Например, у меня по http скорость значительно выше, чем по ftp, поэтому я использую его
-h ftp.mgts.by - зеркало, с которого качать пакеты. Это зеркало для меня самое быстрое (несколько Мбайт/с), поэтому примерно за час получаю готовое зеркало
--ignore-missing-release - Не прерывается, если нету файла Release (без этого не создаётся)
После этого жмём enter и ждём, когда закачается несколько десятков гигов...
Затем, когда я прихожу дома, я монтирую диск в /media/disk, и обновляюсь
Вот, что у меня прописано в /etc/apt/sources.list для работы с репозиторием на диске
Но иногда бывает, что есть несколько deb-пакетов и хочется, чтобы был свой репозиторий, из которого можно ставить банальным apt
Вот, что делаю я в этом случае
Сначала генерируем новый ключ
Oтвечаем на вопросы, сочиняем пароль и ждём, когда он сгенерируется
Когда всё закончилось, смотрим последнюю строчку, которая начинается с sub. У меня:
sub 2048g/E956056F 2008-11-10
Соответственно, наш ключ — E956056F
Теперь копируем все deb'ы в какую-нибудь папку, например /media/media/myrepository
Сначала нужно создать файл с параметрами для apt-ftparchive.
Назовём его apt-ftparchive.conf
Вот его содержание:
Теперь создаём скрипт, который будет генерировать информацию для apt. Его будет необходимо запускать каждый раз, когда репозиторий изменяется. Назовём его generate-repo
Вот его содержание
Естественно, после --default-key должен находиться ваш ключ. Теперь сохраняем его и даём права на выполнение
Теперь запускаем его
После этого будет нужно добавить ключ в базу Apt
Теперь осталось обновить список репозиториев. Для этого редактируем /etc/apt/sources.list
и добавляем в его конец строчку, похожую на эту:
Теперь обновляем кэш apt и наслаждаемся :)
К счастью есть такая замечательная утилита, как debmirror, при помощи которой можно создать своё зеркало. А полное зеркало debian не особо большое (для debian sid без исходников - 31 GiB)
Поэтому я прихожу на работу, подключаю винт, монтирую его (например, в /tmp/a)
Затем делаю всего одну команду
1 2 |
debmirror -v -d sid --nosource --i18n --method=http -h ftp.mgts.by --ignore-missing-release /tmp/a/deb/ |
-v - это чтобы показывали, что сейчас происходит
-d - тут можно выбрать, какой дистрибутив качать (можно указывать как названия lenny, squeeze, sid, так и stable, testing, unstable)
--nosource - этот довольно важный параметр, который сильно экономит время и размер зеркала. С ним не будут закачиваться исходники программ.
-s main,contrib,non-free - секции, которые нужно закачивать
--method=http - протокол, по которому передаются данные. Например, у меня по http скорость значительно выше, чем по ftp, поэтому я использую его
-h ftp.mgts.by - зеркало, с которого качать пакеты. Это зеркало для меня самое быстрое (несколько Мбайт/с), поэтому примерно за час получаю готовое зеркало
--ignore-missing-release - Не прерывается, если нету файла Release (без этого не создаётся)
После этого жмём enter и ждём, когда закачается несколько десятков гигов...
Затем, когда я прихожу дома, я монтирую диск в /media/disk, и обновляюсь
Вот, что у меня прописано в /etc/apt/sources.list для работы с репозиторием на диске
deb file:///media/disk/deb sid main,contrib,non-free
Но иногда бывает, что есть несколько deb-пакетов и хочется, чтобы был свой репозиторий, из которого можно ставить банальным apt
Вот, что делаю я в этом случае
Сначала генерируем новый ключ
gpg --gen-key
Oтвечаем на вопросы, сочиняем пароль и ждём, когда он сгенерируется
Когда всё закончилось, смотрим последнюю строчку, которая начинается с sub. У меня:
sub 2048g/E956056F 2008-11-10
Соответственно, наш ключ — E956056F
Теперь копируем все deb'ы в какую-нибудь папку, например /media/media/myrepository
Сначала нужно создать файл с параметрами для apt-ftparchive.
Назовём его apt-ftparchive.conf
Вот его содержание:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Dir { |
Теперь создаём скрипт, который будет генерировать информацию для apt. Его будет необходимо запускать каждый раз, когда репозиторий изменяется. Назовём его generate-repo
Вот его содержание
1 2 3 4 5 |
#!/bin/bash |
Естественно, после --default-key должен находиться ваш ключ. Теперь сохраняем его и даём права на выполнение
chmod +x generate-repo
Теперь запускаем его
./generate-repo
После этого будет нужно добавить ключ в базу Apt
apt-key add ~/.gnupg/secring.gpg
Теперь осталось обновить список репозиториев. Для этого редактируем /etc/apt/sources.list
vim /etc/apt/sources.list
и добавляем в его конец строчку, похожую на эту:
deb file:/media/media/myrepository ./
Теперь обновляем кэш apt и наслаждаемся :)