15 июл. 2009 г.

Установка debmirror в OpenSuSE

Так как интернету сейчас много и широкого, за что спасибо Эр-Телекому с его "московским безлимитом", то появилась задачка - под управлением домашней OpenSuSE11.1 запустить скачивание и последующее обновление репозитория для Debian Lenny. wget отломился сразу, ибо он вытащит все подряд, для полутора десятков архитектур. С rsync-ом тоже как то не сложилось, ибо требуется учетка на сервере, откуда ты собираешься это все тянуть. Хотя, имейся она на mirror.yandex.ru, было бы беспроблемно. Сами дебиановцы рекомендуют использовать rsync и даже имеют готовые наборы скриптов для создания зеркала дистрибутива.
Мы же будем развлекаться с debmirror'ом, тем более что уже есть наработанные скрипты для обновления нужных репозиториев (main, backports, multimedia). Единственной проблемой является отсутствие пакета для SuSE самого debmirror'a. Но это не проблема на самом деле, ведь есть alien! Наши действия:
zypper refresh
zypper in alien
Все необходимые зависимости поставятся самостоятельно. После этого берем deb-пакет debmirror'a и создаем из него .rpm:
wget -c http://ftp.ru.debian.org/debian/pool/main/d/debmirror_20070123_all.deb
alien --to-rpm --scripts -T debmirror_20070123_all.deb
Опция -Т alien'a проверит полученный пакет, а --scripts сконвертирует внутренние скрипты пакета под новое окружение.Однако после zypper in ./debmirror-20070123-noarch.rpm и попытке запустить debmirror валится с ошибкой
Can't locate LockFile/Simple.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i486-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/
lib/perl5/site_perl/5.8.8/i486-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl .) at ./debmirror lin
e 366.
BEGIN failed--compilation aborted at ./debmirror line 366.
Сие означает отсутствие требуемых модулей Perl'a. Гуглинг показал, что я не один в своих исканиях, поэтому список всех необходимых модулей нашелся довольно быстро:
Dash-prefixed modules are dependencies of the last package in a 'list'
-Compress::Raw::Zlib
-IO::Compress::Base
-IO::Compress:Zlib
Compress::Zlib

Digest::SHA1

-MIME::Base64
-URI
-HTML::Tagset
-HTML::Parser
-libnet ( already installed )
-Digest::MD5
libwww-perl
В принципе, если ставить через cpan install Module::Name, то достаточно брать имена модулей, которые без "-", остальные притянутся зависимостями. Модуль libwww-perl - не CPAN'овая запись, его можно поставить через zypper.
После установки всего необходимого - можно зеркалить репы сколько угодно, хоть Debian-ские, хоть Ubuntu-шные. Неплохая документация по тому, как создать скрипт зеркалирования на базе debmirror, есть тут.