| 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
|
Ну а как это сделать я уже написал ;) ) |