Bekijk de volledige versie : Создание зеркала репозитория Debian|Ubuntu
Есть цель - сделать на роутере зеркало репозитория для debian/ubuntu, гуглеж дал понимание того, что это удобно и просто делается на дебианобразной системе с помощью утилиты debmirror, как например тут (http://trambroid.com/node/30). Как бы красиво и элегантно это реализовать для нашей коробочки?
debmirror имеет такие вот зависомости
Пакет: debmirror
Состояние: не установлен
Версия: 20070123ubuntu3
Приоритет: дополнительный
Раздел: universe/net
Сопровождающий: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
Размер в распакованном виде: 135k
Зависимости: libnet-perl, libdigest-md5-perl, libdigest-sha1-perl, liblockfile-simple-perl, rsync, libcompress-zlib-perl, bzip2, libwww-perl
debmirror - скрипт на перле, но как быть с зависимостями?
chemtech
25-09-2009, 13:00
Итак, сначала скачаем скрипт debmirror, как, например, я:
sudo aptitude download debmirror
Вытаскиваем оттуда модуль и копируем его на роутер.
Положим, например, в /opt/bin/
Устнавливаем perl:
ipkg install perl
Устанавливаем зависимости:
ipkg install perl-libnet
ipkg install perl-digest-perl-md5
ipkg install perl-digest-sha1
ipkg install perl-compress-zlib
ipkg install perl-libwww
ipkg install rsync
ipkg install bzip2
Ставим make:
ipkg install make
Качаем отсутствующий модуль:
wget http://search.cpan.org/CPAN/authors/id/J/JV/JV/LockFile-Simple-0.207.tar.gz
tar zxf СкачанныйМодуль.tar.gz
cd СкачанныйМодуль
perl Makefile.PL
make
make test
make install
Создаем папку для репозиториев:
mkdir -p /opt/share/www/repo
Даем права для пользователя p2p:
chown p2p /opt/share/www/repo/
Заходим под пользователем p2p и создаем папку ubuntu:
mkdir ubuntu
В скрипте меняем "#!/usr/bin/perl -w" на "#!/opt/bin/perl -w"
Создадим скрипт /opt/bin/debmirrorscript.sh:
"
#!/bin/sh
/opt/bin/debmirror /opt/share/www/repo/ubuntu/ --nosource -m --passive --host=archive.ubuntulinux.org --root=ubuntu/ --method=ftp --progress --dist=jaunty,jaunty-updates,jaunty-security,jaunty-backports --section=main,multiverse,universe,restricted --arch=i386 ubuntu/ --ignore-release-gpg
"
Дадим ему права на выполнение:
chmod +x /opt/bin/debmirrorscript.sh
Для добавления репозитория в источники пакетов вам нужно прописать в файле /etc/apt/sources.list примерно следующее
deb http://Ваш IP адрес/repo/ubuntu/ jaunty main restricted multiverse universe
Честно говоря, достали проблемы с кодировкой. Бывает и не сохраняет исправления сообщений (((
ryzhov_al
25-09-2009, 17:14
Можно проще. Fast and dirty:
#!/bin/sh
wget --output-file=/tmp/harddisk/backup/updatedeb.log --mirror --no-parent --no-host-directories --cut-dirs=2 --directory-prefix=/tmp/harddisk/backup/ ftp://archive.ubuntulinux.org/ubuntu/dists/jaunty/
В качестве фичи (или бага) при обновлении репозитария будут сохранены в том числе старые версии пакетов. В случае неприятностей при обновлении будет возможность откатиться к предыдущей версии.
Или с Debian так просто не выйдет?
chemtech
25-09-2009, 18:15
Старые пакеты сами удалять будете, если они не нужны?
и сколько гигов это займет?
не легче ли просто обновлять как раньше?
chemtech
26-09-2009, 05:39
25 гигов где-то.
Это статья/тема форума для тех кому это надо, а не для тех кто хочет обновлять как раньше, плюс для тех кому интересно.
25 гигов где-то.
Это статья/тема форума для тех кому это надо, а не для тех кто хочет обновлять как раньше, плюс для тех кому интересно.
да, я это понимаю. мне тоже стало интересно, но ,подумав, решил для себя что все равно репозитории регулярно обновляются(ubuntu), поэтому для меня это не очень то и надо :) а вообще, задумка интересная, тем более для тех, у кого в локалке не один комп убунту/дебиан и траффик не дешевый
chemtech
27-09-2009, 07:24
:)
Зашел на роутер в screen, а там последние строки такие:
Timeout at /opt/lib/perl5/5.8.8/Net/FTP.pm line 503
releasing 1 pending lock... at /opt/lib/perl5/site_perl/5.8.8/LockFile/Simple.pm line 206.
Наверное инет временно пропадал...
Timeout at /opt/lib/perl5/5.8.8/Net/FTP.pm line 503
releasing 1 pending lock... at /opt/lib/perl5/site_perl/5.8.8/LockFile/Simple.pm line 206.
Сам по фтп обновлял, потом забил, и стал зеркалировать репозиторий через http, debmirror, в случае когда зеркалирование идет через http, качает их wget'ом (если меня не подводит память), и собственно это и решило проблемы с падениеми debmirror'а.
Уже больше полугода зеркалирую репозитории убунты + куча других репозиториев, проблем нет.
chemtech
27-09-2009, 15:03
Сделал доступ для анонимусов только для чтения для папки где у меня лежит репозиторий.
Итак, как это делается:
Создаем пользователя ftp
adduser -h /opt/share/www/repo/ ftp
В vsftpd.conf пишем:
anonymous_enable=YES
anon_root=/opt/share/www/repo/
А cat /etc/apt/sources.list:
deb ftp://192.168.0.1/ubuntu/ jaunty main restricted universe multiverse
deb ftp://192.168.0.1/ubuntu/ jaunty-updates main restricted universe multiverse
deb ftp://192.168.0.1/ubuntu/ jaunty-security main restricted universe multiverse
deb ftp://192.168.0.1/ubuntu/ jaunty-backports main restricted universe multiverse
Спасибо!
Только хотел вопрос задать, а тут уже и ответы понаписали :)
Вопрос лишь один остался: реально ли сделать репозиторий (точнее кэш) только используемых пакетов (машинами во внутр. сети)? Правильно ли я понимаю, что нужен apt-cacher-ng?
Hunter84
11-11-2009, 17:28
При запуске скрипта показывает ошибку:
"Use of uninitialized value in split at /opt/lib/perl5/5.8.8/mipsel-linux/DynaLoader.pm line 80.
Patch binary missing, falling back to --pdiff=none
Ed binary missing, falling back to --pdiff=none".
Зеркалирование начинает, до конца так ни разу и не дошел почему то. Запускается ежедневно через Cron. Уже как месяц зазеркалировать не может. Вопрос. У всех есть такая ошибка при запуске, или только у меня?
MercuryV
30-06-2013, 13:39
реально ли сделать репозиторий (точнее кэш) только используемых пакетов (машинами во внутр. сети)? Правильно ли я понимаю, что нужен apt-cacher-ng?
Вполне реально. Если еще есть заинтересованные в apt-cacher-ng на роутере - прошу отозваться.
(да, я знаю, что вопрос был задан в 2009 году :) )