[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

centericq



> Ну-ка покажи dpkg -l libncurses\* и ls -l /usr/include/ncurses.h
он не при чем уже выяснили: 2-3 апреля сломали
ща разгребаемся где


>>>>>> а репозитарий самое просто создается dpkg-scanpackage+dpkg-scansource :)
>>>>> Это всё не то. Помимо того, что их надо найти - их надо переложить по нужным
>>>>> каталогам, т.е. создать дерево.
>>>> rsync замечтательно с этим справляется
>>> rsync справляется с переносом откуда скажут в куда скажут. А мне нужно -
>>> найти в куче директорий с исходниками и прочей билебердой уже готовые
>>> пакаджи, распихать их по $dist/main/binary-$arch/([a-z]|libимя|имя)/ и
>>> сгенерить Packages.bz2 + всё необходимое.
>>>> хотя я для себя какой-то скрипт помнится писал
>>> На эту тему?
>> ага, сперва скрипт делал dpkg-scanpackage и scansource

>> а потом парсил Packages и Sources и строил такое же дерево
>> а уж потом это дерево rsync'ал на сервер.

>> вернее rsync'ает
> Покажи?


тут только имя хоста в конце скрипта встречается
надо в переменную вынести если по ssh rsync'ать

я сперва синкал по nfs
а потом ssh приписал быстро когда с работы надо было синкнуть
ну и получилось не красиво, ну да ладно
для себя пойдет :)


#!/usr/bin/perl

use strict;
use warnings;

umask 022;

our $pub_dir="/share/www/uvw.ru/debian";
our $myhost=`hostname`;

sub sys_command(@)
{
  print join(' ', @_), "\n";
  system @_;
  if ($?)
  {
    print "return code: $?\n";
    return 0;
  }
  return 1;
}

sys_command "rm -fr .pub";

{
  local $pub_dir=".pub";

  sys_command "dpkg-scanpackages . /dev/null >Packages";
  sys_command "dpkg-scansources . /dev/null >Sources";

  open PACKAGES, "<", 'Packages';
  my @files=grep /^Filename:/, <PACKAGES>;
  close PACKAGES;

  s/\s+$//, s/Filename: .\/// for @files;

  open SOURCES, '<', 'Sources';
  my $dir='.';
  while (<SOURCES>)
  {
    s/\s+$//;
    /^Directory:\s*(\S+)/ and $dir=$1;
    /^Files:/ or next;

    while(<SOURCES>)
    {
      s/\s+$//;
      /\s+[a-fA-F0-9]{32}\s+\d+\s+(.*)$/ or last;

      push @files, "$dir/$1";
    }
  }

  sys_command "gzip -9f Sources Packages";
  
  -d $pub_dir or sys_command "mkdir $pub_dir";
  sys_command "rm -fr $pub_dir/*";

  sys_command "cp -avf Packages.gz Sources.gz $pub_dir/";
  for (@files)
  {
    my ($dir, $file)=(undef, $_);
    /(.*)\/(\S+)$/ and ($dir, $file)=($1, $2);

    $dir and -d "$pub_dir/$dir" or sys_command "mkdir -p $pub_dir/$dir";
    sys_command "cp -avf $_ $pub_dir/$dir/";
  }
}

my $rsync_opts='--no-p --no-g --no-o --no-l -L --delete -zrtODv ';
unless ($myhost =~ /^nb/)
{
  $rsync_opts.='-e ssh dimka@uvw.ru:';
}

sys_command "rsync .pub/* ${rsync_opts}${pub_dir}";
sys_command "rm -fr .pub"




Reply to: