zeus |
|
Темы:
95
Сообщения:
1094
Участник с: 28 октября 2006
|
Оригинальная Статья в WiKi Допустим у вас есть папка собранных вами пакетов (aur или собственные PKGBUILD'ы, это не важно). У вас есть огромное желание поделиться этим счастьем с народом или просто упорядочить. Для этого можно создать репозиторий. Специально для такого дела мной был сперт с wiki скрипт и доведен до ума. Сам скрипт на перле: #!/usr/bin/perl use strict; unless (defined $ARGV[0] && defined $ARGV[1]){ print STDERR "\nUsage: gendb <DIR> <NAME>\n\n"; exit 1; } `rm -rf /tmp/pkgdb`; opendir(DIR, $ARGV[0]) || die "Can't open dir $ARGV[0]: $!"; while(my $file=readdir(DIR)){ if($file =~ /^(.+)\.pkg.tar.gz$/){ my $pkg = $1; my @filedata=stat($ARGV[0]."/".$file); my %info = (); my $i; print STDERR "Processing $file\n"; `mkdir -p /tmp/pkgdb/$pkg`; `rm -f /tmp/PKGINFO ; tar -O -xzf $ARGV[0]/$file .PKGINFO > /tmp/PKGINFO`; open(INPUT, "/tmp/PKGINFO") || die "can't open PKGINFO file: $!"; while(<INPUT>) { chomp; if( /^([a-z]+)\s?[=]\s?(.+)$/ ) { my $attr = $1; my $value = $2; $info{$attr} .= $value." "; } } close(INPUT); open(OUT, "> /tmp/pkgdb/$pkg/desc") || die "can't open desc file: $!"; print OUT "\%NAME\%\n".$info{"pkgname"}."\n\n"; print OUT "\%VERSION\%\n".$info{"pkgver"}."\n\n"; print OUT "\%DESC\%\n".$info{"pkgdesc"}."\n\n"; print OUT "\%CSIZE\%\n".$filedata[7]."\n\n"; print OUT "\%MD5SUM\%\n"; close(OUT); `md5sum $ARGV[0]/$file | cut -f1 -d' ' >> /tmp/pkgdb/$pkg/desc`; open(OUT, ">> /tmp/pkgdb/$pkg/desc") || die "can't open desc file: $!"; print OUT "\n\%REPLACES\%\n"; foreach $i (split(' ',$info{"replaces"})){ print OUT $i."\n";} print OUT "\n"; close(OUT); open(OUT, "> /tmp/pkgdb/$pkg/depends") || die "can't open depends file: $!"; print OUT "\%DEPENDS\%\n"; foreach $i (split(' ',$info{"depend"})){ print OUT $i."\n";} print OUT "\n"; print OUT "\%CONFLICTS\%\n"; foreach $i (split(' ',$info{"conflict"})){ print OUT $i."\n";} print OUT "\n"; print OUT "\%PROVIDES\%\n"; foreach $i (split(' ',$info{"provides"})){ print OUT $i."\n";} print OUT "\n"; close(OUT); } } closedir DIR; `cd /tmp/pkgdb ; tar -czf $ARGV[1].db.tar.gz *`; `cp /tmp/pkgdb/$ARGV[1].db.tar.gz $ARGV[0]/` chmod +x gendb ./gendb /путь/к/папке название_репозитория Все! теперь репозиторий готов к использованию. Остается только добавить репозиторий в /etc/pacman.conf и синхронизировать базы. Замечу, что чем выше находится репозиторий в /etc/pacman.conf, тем больше у него приоритет. Замечание, если вы правили /etc/make.conf и конкретно архитектуру, будьте добры, укажите это в описании репозитория, не у всех железо, как у вас. |
alexxx |
|
Темы:
1
Сообщения:
149
Участник с: 29 октября 2006
|
Ага. Представляю, сейчас все кинулись делать свои репозитарии… А основным отличием АрчЛинукса через пол-года от других будет многоМегабайтный pacman.conf со всей тучей репозитарев… Ладно, простите за оффтоп :) Попробуем этот скриптик… P.S. Кстати, нарисовалась одна тема. Несколько не связанных Арч`машин. С одной апдейтить остальные. Как по-безболезненней..?. |
zeus |
|
Темы:
95
Сообщения:
1094
Участник с: 28 октября 2006
|
Alexxx вариантов два 1) создать локальное зеркало репозитариев. и ежечасно/дневно рсинкать (я так делаю) 2) на машине одной из машин расшаривается кеш, а на других этот кеш монтируется в /var/cache…. |
alexxx |
|
Темы:
1
Сообщения:
149
Участник с: 29 октября 2006
|
zeusУгу, спасибо, это конечно оно так, но я спрашивал: не связанных Арч`машин, тобиш нет общей сети.Alexxx |
zeus |
|
Темы:
95
Сообщения:
1094
Участник с: 28 октября 2006
|
Alexxxупс!. тада просто кеш сливать и переносить. |
zeus |
|
Темы:
95
Сообщения:
1094
Участник с: 28 октября 2006
|
pacman -Sy все равно придется делать, ил тогда вручную ставить пакеты. Хотя опять-таки можно сделать репозиторий из кэша :) |
alexxx |
|
Темы:
1
Сообщения:
149
Участник с: 29 октября 2006
|
zeusНу да, сейчас так и делаю, не очень то красиво конечно, лишняя колготня с бакапами и пересозданием (удалением старого) кешей, пока через несколько часов принесёшь этот кеш на другую машину, к примеру, синхронизируешься через GPRS, появляются новые обновления, забиваешь из в pacman.conf в IgnorePkg, в следующий раз убираешь их, добавляешь что-то другое, - в общем маразм. Хотелось бы знать как это нормально должно делаться. |
zeus |
|
Темы:
95
Сообщения:
1094
Участник с: 28 октября 2006
|
pacman -Sc чистит кэш ;) ))) |
alexxx |
|
Темы:
1
Сообщения:
149
Участник с: 29 октября 2006
|
bobrikа -Scc сносит его напрочь, это-то понятно. Наверно пока лучший выход это из вновь обновлённого кеша делать локальный репозитарий и при переносе синхронизироваться только с ним. Видимо так… |
zeus |
|
Темы:
95
Сообщения:
1094
Участник с: 28 октября 2006
|
Ну а как это сделать я уже написал ;) ) |