Пакетные дистрибутивы - тупиковая ветвь? (SRC и RPM/DEB)

Любые разговоры которые хоть как-то связаны с тематикой форума

Модератор: Модераторы разделов

Topper
Бывший модератор
Сообщения: 2088
Статус: Насильник бабушек-педофилок
ОС: Windows 10

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение Topper »

почему не грозит? очень даже грозит. пакетность или сорсность здесь не при чем, все зависит от девелопера. просто пакетные дистрибы чаще всего рассчитаны на простого юзверя, отсюда красивости и куча барахла в комплекте. а никак не из-за того, что они пакетные...
Хрю.
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение edoc_modnar »

вот именно, что как бы, а на деле оно так и выходит.
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение alv »

2demongloom

В результате деятельности предалагаемого скрипта у Вас получилось нечто вроде системы портов для rpm. Само по себе - здорово, но во Free это испокон веков было, и прочие SB без портообразной системы не обходятся.

2All
И опять же кто про что...

Вот поставил я давеча Arch из пакетов по ftp за два часа (с CD вышло бы за пятнадцать минут), и сразу начал работать, а теперь, когда есть время/желание/настроение, постепенно пересобираю все, что мне не нарвится как работает. Из ихнего ABS - тоже типа портов, build-файл - очень прост и прозрачен, подправить - все равно что опции в ./configure указать (на самом деле это и делается). Чего не хватает в ABS - свой build-файл сочинить как два байта переслать. Что это - пакетный дистр или SB?
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение edoc_modnar »

в принципе, и Gentoo можно из прекомпиленых пакетов (GRP по мойму) собрать. Я первый раз так и делал, а потом, когда доставал distfiles, пересобирал... так что IMHO, Arch можно считать Source Based, как и FreeBSD :).
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение alv »

(random_code @ Friday, 30 July 2004, 10:48) писал(а):в принципе, и Gentoo можно из прекомпиленых пакетов (GRP по мойму) собрать. Я первый раз так и делал, а потом, когда доставал distfiles, пересобирал... так что IMHO, Arch можно считать Source Based, как и FreeBSD :).


Вот и я так думаю.

А поскольку и Debian, как свидетельствует t.t, можно пересобрать таким образом (про Slackware и говорить нечего - для того она и предназначена), и даже rpm-based - грань между городом и деревней, между умственным и физическим, между мужчиной и женщиной, между SB и PKG дистрибутивами, наконец, стирается.

Другое дело, что пересобрать RH - задача геморройная, но это потому, что формат пакетов... э-э не очень прямой. Так что замазывать пропасть мы им не позволим!

(с) из проф. Выбегаллы с коррективами (с) alv

И все равно каждый выберет то, к чему душа лежит (или чего задачи требуют). И это, товарищи, правильно.
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение edoc_modnar »

Debian, как свидетельствует t.t, можно пересобрать таким образом (про Slackware и говорить нечего - для того она и предназначена)

Про деб ничего такого не слышал, нельзя ли поподробнее?
Жаль, во FreeBSD нет поддержки спутниковых карт, давно бы уже на нее перешел, а так приходится метаться между Gentoo, Slackware и Debian...
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение t.t »

(alv @ Friday, 30 July 2004, 11:14) писал(а):Другое дело, что пересобрать RH - задача геморройная, но это потому, что формат пакетов... э-э не очень прямой. Так что замазывать пропасть мы им не позволим!
Вот именно. Но пропасть, как я тут пытаюсь втолковать random_cod'у, всё-же не между source-based и package-based, а между rpm-based и всем остальным. Именно всилу дурного формата пакетов (в сравнении, к примеру, с теми же deb).

(random_code @ Friday, 30 July 2004, 11:27) писал(а):
Debian, как свидетельствует t.t, можно пересобрать таким образом (про Slackware и говорить нечего - для того она и предназначена)
Про деб ничего такого не слышал, нельзя ли поподробнее?
Мне, честно говоря, сложно ответить, т.к. всилу необщения с sb я не очень чётко понимаю, о каком именно "образе" речь. Если разжуёте -- тогда пожалуста...
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение alv »

(t.t @ Friday, 30 July 2004, 11:36) писал(а):
(random_code @ Friday, 30 July 2004, 11:27) писал(а):
Debian, как свидетельствует t.t, можно пересобрать таким образом (про Slackware и говорить нечего - для того она и предназначена)
Про деб ничего такого не слышал, нельзя ли поподробнее?
Мне, честно говоря, сложно ответить, т.к. всилу необщения с sb я не очень чётко понимаю, о каком именно "образе" речь. Если разжуёте -- тогда пожалуста...



"Образ" выглядит немного по разному. Во Free:

make world (варианты buildworld && installworld)

пересоберет базовую систему. Но пакеты придется пересобирать индивидуально, потому что make в корне /usr/ports соберет все (все! - 30 Гбайт исходников) порты, make в /usr/ports/editors - все реадкторы, и т.д.

В Gentoo:

emerge bootstrap

пересоберет glibc, gcc, binutils, еще что-тоб не помню, и повторно glibc.

emerge system

пересоберет базовую систему (base linux в понимании Дэна сотоварищи).

emerge system x kde

пересоберет все перечисленные комплексы.

Наиболее посделовательно идея (ИМХО) реализована в Arch. Все нужные порты (с учетом их зависимостей в каждом build-файле, или разумной правкой таковых - до сих пор не могу понять, почему gpm стоит в зависимостях joe) собираются в один каталог - например, /var/abs/locale/my_system) и дается команда

makepkg -i

что пересоберет все компонеты в каталоге.

Насколько я понимаю в Debian'е посредством apt можно сделать нечто подобное. В rpm-based, как показывает скрипт demongloom, тоже, вот только головной боли не оберешься, и руками по клавишам долбать в ходе сочинения полного скрипта.

А касаемо местоположения пропасти - согласен с t.t. Даже афоризм придумал, по графу нашему, пахарю:

Все прямые дистрибутивы прямы одинаково, каждый кривой - крив по своему.

Впрочем, это из геометрии Евклида однозначно следует:-)
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение edoc_modnar »

чего бы мне хотелось от Debian, так это компиляции и установки программы одной-двумя командами. Естественно, все зависимости должны быть учтены.
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение t.t »

(alv @ Friday, 30 July 2004, 11:56) писал(а):...
Насколько я понимаю в Debian'е посредством apt можно сделать нечто подобное. В rpm-based, как показывает скрипт demongloom, тоже, вот только головной боли не оберешься, и руками по клавишам долбать в ходе сочинения полного скрипта.
(random_code @ Friday, 30 July 2004, 11:58) писал(а):чего бы мне хотелось от Debian, так это компиляции и установки программы одной-двумя командами. Естественно, все зависимости должны быть учтены.
ПонЯл. Я, честно сказать, сам ничего из исходников не пересобирал, но по идее это делается так:
apt-get source packname --build скачает и соберёт исходники
apt-get build-dep packname удовлетворит зависимости
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение xorader »

2alv: по поводу gentoo
emerge -u world (апдэйтит все установленные пакеты)
или emerge -uD world (... со всеми зависимостями)

emerge -vuDe world (полная пересборка всех пакетов)

Я к тому, что в gentoo 'world' рулиться файлом /var/cache/edb/world, что ОЧЕНЬ удобно!
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение demongloom »

Ну насчет моего скрипта что это "система портов" конечно сильно преувеличена. Просто автоматизация некоторых действий, с рюшечками и рящечками - как я люблю.
Сей скрипт я кучу раз доделывал и баг фиксил, так что версия что на форуме уже морально устарела :devil_2: .
Я бы может и перешел бы на дженту, если бы не одно но. Не люблю я конфиги править вручную, а тем более с нуля. Мне бы гуй. А его в дженту вроде нет. В этом то я вся проблема. Прекомпилированные дистры как правило еще имеют и пакеты от разработчиков дистра - конфигурялки, темы т.д.
+ что мне еще не нравиться в дженту, это то что я должен многие простые вещи которые можно автоматизировать делать вручную.
Например можно было бы сделать некий сетап-установщик который.
В гуи поможет разбить диск (уж намного приятней в гуи чем через фдиск. Вот возмите для примера acronis disk suite). Разобьет, настроит подключение к нету, подскажет что и какими флагами компилировать. Установит на жесткий минимальную систему. А затем после перезагрузки, уже с жесткого тоже в гуи красивый такой make с прогресбаром.
Вот интересно. Вопрос к тем кто дженту с нуля собирал. Вы медитировали во время просмотра вывода make или как то другим способом убивали время?
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали:
Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение xorader »

(demongloom @ Monday, 02 August 2004, 8:41) писал(а):....
Я бы может и перешел бы на дженту, если бы не одно но. Не люблю я конфиги править вручную, а тем более с нуля. Мне бы гуй. А его в дженту вроде нет. В этом то я вся проблема. Прекомпилированные дистры как правило еще имеют и пакеты от разработчиков дистра - конфигурялки, темы т.д.


Во-первых, в Gentoo в большинстве случаев предлагаються ОЧЕНЬ грамотные примеры конфигов. Во-вторых, GUI в gentoo есть -_- : к примеру:

Код: Выделить всё

# emerge -pv webmin

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N    ] dev-perl/XML-Generator-0.99   21 kB
[ebuild  N    ] app-admin/webmin-1.150-r1  +apache2 +ssl  6,985 kB

Total size of downloads: 7,006 kB

А по поводу конфигурялок и тем, так это вы погорячились - полно этого
добра в gentoo (смотрите /usr/portage).

(demongloom @ Monday, 02 August 2004, 8:41) писал(а):+  что мне еще не нравиться в дженту, это то что я должен многие простые вещи которые можно автоматизировать делать вручную.
Например можно было  бы сделать некий сетап-установщик который.
В гуи поможет разбить диск (уж намного приятней в гуи чем через фдиск. Вот возмите для примера acronis disk suite). Разобьет, настроит подключение к нету, подскажет что и какими флагами компилировать. Установит на жесткий минимальную систему. А затем после перезагрузки, уже с жесткого тоже в гуи красивый такой make с прогресбаром.
Вот интересно. Вопрос к тем кто дженту с нуля собирал. Вы медитировали во время просмотра вывода make или как то другим способом убивали время?


Что-то я не улавливаю связь между GUI (прогрессбар, рюшечки и прочее) и автоматизацией :huh: .

P.S. по поводу медитации... ээээ: на workstation'ах когда иксовые проги ставлю - вообще туда не смотрю - поставил и работаю. Когда серверные демоны ставяться - смотрю последние строчки вывода (коментарии из портов и список чего и куда поставилось) в качестве самообразования. В пакетах в 99% случаях - чёрный ящик. Пока сам не начнёшь копать - ничего тебе не напишеться что и куда. А в gentoo посмотрел "grep /etc/" и уже знаешь что и куда тыкать!
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:
Аватара пользователя
demongloom
Сообщения: 454
Статус: Добрый Демон

Re: Пакетные дистрибутивы - тупиковая ветвь?

Сообщение demongloom »

Выкладываю новую версию своей программы.

Код: Выделить всё

#!/bin/sh
# Print banner
echo "#------------------------------------------------------------------------------------------------------------------------------#"
echo "# DemonLinux RPM check utility";
echo "# v1.4.0";
echo "#------------------------------------------------------------------------------------------------------------------------------#"

#----------------------------------------------------------#
# Function LinePrint()
#----------------------------------------------------------#
# -> Begin
f_Line_Print()
{
    # Echo
    echo "#------------------------------------------------------------------------------------------------------------------------------#"
}
# <- End

#----------------------------------------------------------#
# Function InitVariables()
#----------------------------------------------------------#
# -> Begin
f_Init_Variables()
{
    # Exports
    export LANG=C;
    export MAKE="/usr/local/bin/make-color";

    # Renice
    renice 0 -p $$ >/dev/null 2>&1

    # Variables :: Path
    path_rpmtemp=/tmp/drcy_rpm.tmp; > $path_rpmtemp;
    path_tmptemp=/tmp/drcy_tmp.tmp; > $path_tmptemp;
    path_pdtemp=/tmp/drcy_pd.tmp;
    path_result=result.txt; >> $path_result
    path_exclude=exclude.list; >> $path_exclude;
    path_mirror=mirror.list >> $path_mirror;
    path_SRPMS=/usr/src/redhat/SRPMS; mkdir $path_SPRMS > /dev/null 2>&1;
    path_BSRPMS=/usr/src/redhat/SRPMS/Builded; mkdir $path_BSPRMS > /dev/null 2>&1;
    path_FSRPMS=/usr/src/redhat/SRPMS/Failed; mkdir $path_FSPRMS > /dev/null 2>&1;
    path_RPMS=/usr/src/redhat/RPMS; mkdir $path_RPMS > /dev/null 2>&1;
    path_DRPMS=/usr/src/redhat/SRPMS/Deps; mkdir $path_DRPMS > /dev/null 2>&1;
    path_log=logfile; echo "---------------------------------------------------------------------------------------------------------" >> $path_log;

    # Variables :: Other
    other_hostname=DemonLinux;
    other_cflags="%__global_cflags    -march=pentium4 -O3 -g -pipe -fomit-frame-pointer -mmmx -msse -msse2";
    echo $other_cflags > /etc/rpm/macros;
    other_rpmtarget=i686-pc-linux;
    other_rpmsafetarget=i386-pc-linux;
    other_rpmoutput=/dev/tty12; clear > $other_rpmoutput;

    # Variablse :: Input
    input_DOWNLOAD=false;
    input_REBUILD=false;
    input_INSTDEPS=false;
    input_RMDEBUG=false;
    input_CHECKRPM=false;
    input_MVFAILED=false;
    input_SHOWRPMFAILLOG=false;
}
# <- End

# Function Point_Delay()
#----------------------------------------------------------#
# -> Begin
f_Point_Delay()
{
    # Check argument
    if [ "$1" = "S" ]; then
    # > write lockfile and source
    echo "#!/bin/sh
    echo -n \"# > \";
    TIME="";
    while [ -f "$path_pdtemp" ]; do
     echo -en \"\E[38;40m*\";
     for (( I=1; I <= $2; I++ )) do
  if [ -f "$path_pdtemp" ]; then
      sleep 1;
      (( TIME = TIME + 1 ));
  else
      exit 1;
  fi;
     done
    done;
    tput sgr 0;
    " > $path_pdtemp;

    # > run source
    sh $path_pdtemp & false;
    else
    # > echo and reset cursor
    echo; tput sgr0;

    # > rm lockfile
    rm $path_pdtemp;
    fi;
}
# <- End

# Function Get_RPM_List()
#----------------------------------------------------------#
# -> Begin
f_Get_RPM_List()
{
    # Echo
    echo "# > Getting RPM packages database.";
    f_Line_Print;

    # Variables
    int_RLST_CountRPM=0;

    # Point delay
    f_Point_Delay "S" "1";

    # Get rpm
    rpm -qa > $path_rpmtemp;

    # Sort
    sort $path_rpmtemp > $path_tmptemp;

    # Copy
    cp $path_tmptemp $path_rpmtemp;

    # Point Delay
    f_Point_Delay;

    # Clear temp
    rm $path_tmptemp;

    # Count packages
    for I in $( cat $path_rpmtemp); do let "int_RLST_CountRPM += 1"; done;

    # Echo
    echo "# > In your system installed" $int_RLST_CountRPM "packages.";
    echo "# > In your system installed" $int_RLST_CountRPM "packages." > $path_log;
    f_Line_Print;
}
# <- End

# Function Check_Packages()
#----------------------------------------------------------#
# -> Begin
f_Check_Packages()
{

    # Echo
    echo "# > Checking packages for hostname {" $other_hostname "}.";
    f_Line_Print;

    # Variables
    int_CP_CurrentRPM=0;
    bol_CP_SkipExclude=0;

    # Clear path result
    > $path_result;

    # For each package
    for I in $( cat $path_rpmtemp ); do
    # > Counter
    let "int_CP_CurrentRPM += 1";

    # > Set exclude
    bol_CP_SkipExclude=0;

    # > Echo
    echo -en "# > [" $int_CP_CurrentRPM "of" $int_RLST_CountRPM "] # Checking package {" $I "}.";

    # > Checking for exclude
    if [ -f $path_exclude ]; then
     # >> For each item in exclude
     for J in $( cat $path_exclude ); do
  # >>> Get from exclude
  echo $I > $path_tmptemp;

  # >>> Check if exclude
  if grep -q $J $path_tmptemp; then
      # >>>> Set to exclude
          bol_CP_SkipExclude=1;
  fi;
     done;
        fi;

    # If not exclude
    if [ $bol_CP_SkipExclude = 0 ]; then
         # > Extract info (buildhost)
     rpm -q --qf "%{BUILDHOST}\n" $I > $path_tmptemp;

     # > Find hostname
     if grep -q $other_hostname $path_tmptemp; then
         # >> Hostname ok - echo
         echo -en "\E[32;40m -> HOSTNAME OK"; tput sgr0;
         echo "# > Package " $I " -> HOSTNAME OK" >> $path_log;
     else
         # >> Hostname not ok - echo
         echo -en "\E[31;40m -> REBUILD"; tput sgr0;
         echo "# > Package " $I " -> REBUILD" >> $path_log;

         # >> Extract src
         rpm -q --qf "%{SOURCERPM}\n" $I > $path_tmptemp;

         # >> Check for "none"
         if grep -q "(none)" $path_tmptemp; then
      # >>> Nothing
      false;
  else
      # >>> Add to result
        cat $path_tmptemp >> $path_result;
      fi;
     fi;
    else
         # Echo - exclude
            echo -en "\E[34;40m -> EXCLUDED"; tput sgr0;
     echo "# > Package " $I " -> EXCLUDED" >> $path_log;
    fi;

    # Uniq result (clean dublicates)
    uniq $path_result > $path_tmptemp;

    # Copy
    cp $path_tmptemp $path_result;

    # Sort
    sort $path_result > $path_tmptemp;

    # Copy
    cp $path_tmptemp $path_result;

    # Echo
    echo;
    f_Line_Print;
    done;

    # Sound
    beep;
}
# <- End

# Function f_ Download_Packages()
#----------------------------------------------------------#
# -> Begin
f_Download_Packages()
{
    # Echo
    echo "# > Downloading packages.";
    f_Line_Print;

    # Variables
    int_DWN_Count=0;
    int_DWN_CCount=0;
    bol_DWN_FE=0;

    # Count
    for I in $( cat $path_result); do let "int_DWN_Count += 1"; done;

    # Echo
    echo "# > Download " $int_DWN_Count " packages.";
    f_Line_Print;

    # Echo - show mirrors
    echo "# > Download mirrors is:";

    # Print mirrors
    for I in $( cat $path_mirror ); do echo "# >" $I; done;

    # Echo
    f_Line_Print;

    # For each file to download
    for I in $( cat $path_result); do
    # > Set counter
    let "int_DWN_CCount += 1"

    # > Set trigger - downloaded
    bol_DWN_FE=0;

    # > Echo
    echo "# > [" $int_DWN_CCount "of" $int_DWN_Count "] | Downloading " $I;
        f_Line_Print;

    # > Check if downloaded
    if [ -f $path_SRPMS/$I ]; then bol_DWN_FE=1; fi;
    if [ -f $path_FRPMS/$I ]; then bol_DWN_FE=1; fi;
    if [ -f $path_BRPMS/$I ]; then bol_DWN_FE=1; fi;

    # > If not downloaded
    if [ $bol_DWN_FE = "0" ]; then
     # >> For each mirror
     for J in $( cat $path_mirror ); do
  # >>> if file not exist download or change mirror
  if [ -f $I ]; then
      # >>>> Nothing
      false;
  else
      # >>>> Download
      wget -v -t 0 --progress=bar $J$I;
  fi;
            done;

     # >> If file exist
     if [ -f $I ]; then
  # >>> Echo
  echo -en "# > Downloading " $I " \E[32;40m -> DONE"; tput sgr0; echo;
  echo "# > Downloading package " $I " -> DONE." >> $path_log;
  # >>> Move file
  mv $I $path_SRPMS;
     else
  # >>> Echo
  echo -en "# > Downloading " $I " \E[31;40m -> FAILED"; tput sgr0; echo;
  echo "# > Downloading package " $I " -> FAILED" >> $path_log;
     fi;
    else
     # >> Echo
     echo -en "# > Downloading " $I " # \E[34;40m -> SKIP"; tput sgr0; echo;
     echo "# > Downloading package " $I "-> SKIP." >> $path_log;
    fi;

    # Echo
    f_Line_Print;
    done;

    # Sound
    beep;
}
# <- End

# Function f_ Rebuild_Package(PACKAGE_NAME,TARGET)
#----------------------------------------------------------#
# -> Begin
f_Rebuild_Package()
{
    # Echo
    echo "# > [" $int_RP_count_csrc " of " $int_RP_count_srpms "] | Building $1 package. Target -> $2";
    echo "# > [" $int_RP_count_csrc " of " $int_RP_count_srpms "] | Building $1 package. Target -> $2" > $other_rpmoutput;

    # Echo line in out
    echo "--------------------------------------------------------------------------------------------------------------------------------" > $other_rpmoutput;

    # Point Delay
    f_Point_Delay "S" "60";

    # Build
    rpmbuild -vv --clean --rebuild --target=$2 $1 > $other_rpmoutput 2>$1.log;

    # Point Delay
    f_Point_Delay;

    # Sound
    beep;

    # Get builded
    ls -R $path_RPMS/* > $path_tmptemp;

    # Get info
    rpm -qip $1 > $path_rpmtemp;

    # Set counter
    int_RP_count_rpm=0;

    # For each in info
    for K in $( cat $path_rpmtemp); do
        # > Set count
        let "int_RP_count_rpm += 1";

        # > If count line = 3
        if [ $int_RP_count_rpm = 3 ]; then
     # >> Search package name in temp
     if grep $K $path_tmptemp; then
         # >>> Echo
         echo -en "\E[32;40m -> Build OK"; tput sgr0; echo;
         echo "# > Rebuilding package " $1 " -> OK" >> $path_log;

         # >>> Check dirs
         if [ $path_BSRPMS != $path_SRPMS ]; then
      # >>>> Move file
      mv $1 $path_BSRPMS;
  fi;

  # >>> Clear log
  rm $1.log;

  # >>> Sound
  play /usr/share/sounds/email.wav;
  beep;

  # >>> Return
  return 1;
     else
  # >>> Echo
  echo "# > Rebuilding package " $1 " -> FAILED" >> $path_log;

  # >>> Sound
  beep;
  beep;
  beep;

  # >>> Show fail log
  if [ $input_SHOWRPMFAILLOG = "true" ]; then
      # >>> Echo
      echo "# > Listing log file: \n";

      # >>> Listing
      cat $1.log

      # >>> Sleep
      sleep 3;
  fi;

  # >>> Return
  return 0;
     fi;
    fi;
    done;
}
# <- End


# Function f_ Rebuild_Packages()
#----------------------------------------------------------#
# -> Begin
f_Rebuild_Packages()
{
    # Echo
    echo "# > Rebuilding packages.";
    f_Line_Print;

    # Counter
    int_RP_count_srpms=0;
    int_RP_count_csrc=0;
    int_RP_count_rpm=0;

    # If move failed
    if [ $input_MVFAILED = "true" ]; then
    # > Echo
    echo "# > Moving failed src.rpm "; f_Line_Print;

    # > Move files
    mv -v $path_FSRPMS/*.src.rpm $path_SRPMS;

    # > Echo
    echo "# > Moving completed."; f_Line_Print;
    fi;

    # If install deps
    if [ $input_INSTDEPS = "true" ]; then
    # > Echo
    echo "# > Installing depends ";    f_Line_Print;

    # > Install deps
    rpm -Uh $path_DRPMS/*.rpm;

    # > Echo
    echo "# > Installation deps completed."; f_Line_Print;
    fi;

    # Count
    for I in $( ls $path_SRPMS/*.src.rpm ); do let "int_RP_count_srpms += 1"; done;

    # For each file (sort by size)
    for I in $( ls -S -r $path_SRPMS/*.src.rpm ); do
    # > Set counter
    let "int_RP_count_csrc += 1";

    # > Rebuild package
    f_Rebuild_Package $I $other_rpmtarget;

    # > Check if rebuild fails
    if [ $? -eq "0" ]; then
     # >> Check for arch
     if grep -q "error: Architecture is not included:" $I.log; then
  # >>> Echo
  echo -en "\E[33;40m -> Build FAILED <-> Failed arch"; tput sgr0; echo;
  # >>> Rebuild
  f_Rebuild_Package $I $other_rpmsafetarget;
     else
  # >>> Check dirs
  if [ $path_FSRPMS != $path_SRPMS ]; then
      # >>>> Move file
      mv $I $path_FSRPMS;
  fi;
  if grep -q "error: Failed build dependencies:" $I.log; then
      echo -en "\E[33;40m -> Build FAILED <-> Failed dependencies"; tput sgr0; echo;
  else
      echo -en "\E[31;40m -> Build FAILED"; tput sgr0; echo;
  fi;
     fi;
    fi;

        # > If remove debug
    if [ $input_RMDEBUG = "true" ]; then
     # >> For each file
     for I in $( ls $path_RPMS ); do
  # >>> Remove debugs
  rm -f -v $path_RPMS/$I/*debuginfo*;
     done;
    fi;

    # > Echo
    f_Line_Print;
    done;

    # Uninstall depends
    if [ $input_INSTDEPS = "true" ]; then
    # > Echo
    echo "# > Uninstalling depends "; f_Line_Print;

    # > Point delay
    f_Point_Delay "S" "1";

    # > Set var (string of uninst packages)
    other_undeps="";

    # > Get packages to uninstall
    for I in $( ls $path_DRPMS/*.rpm ); do
     # >> Collect
     other_undeps=$other_undeps" "$(rpm -qp --qf "%{NAME}-%{VERSION}-%{RELEASE}\n" $I);
    done;

    # > Remove
        rpm -e $other_undeps;

    # > Poit delay
    f_Point_Delay;

    # > Echo
    echo "# > Uninstallation deps completed."; f_Line_Print;
    fi;

    # Sound
    beep;
    beep;
    beep;
    beep;
    beep;
    beep;
    beep;
    beep;

    # Echo
    echo "# > Rebuilding completed."; f_Line_Print;
}
# <- End

# Function Main()
#----------------------------------------------------------#
# -> Begin
  # f_ Init_Variables
  f_Init_Variables;

  # Check arguments
  echo $@ > $path_tmptemp;

  # Search help
  if [ -z $@ ]; then
    # > Print banner
    echo "
    Usage:
    -----------------------------------------------------------------------
    'null'      Viev help message
    -----------------------------------------------------------------------
    checkrpm    Check rpm db for non buildhost packages
    -----------------------------------------------------------------------
    download          Download src.rpm packages
    -----------------------------------------------------------------------
    rebuild  Rebuild src.rpm packages
    -----------------------------------------------------------------------
    instdeps    Install depends for rebuild  [rebuild]
    -----------------------------------------------------------------------
    rmdebug  Remove debuginfo packages    [rebuild]
    -----------------------------------------------------------------------
    mvfailed    Move failed src.rpm to build    [rebuild]
    -----------------------------------------------------------------------
    showfail    Show rpm build fail log  [rebuild]
    -----------------------------------------------------------------------
    default        Do default script
    -----------------------------------------------------------------------
    ";
    exit 1;
  fi;

  # search arg check rpm
  if grep -q "checkrpm" $path_tmptemp; then
    input_CHECKRPM=true;
  else
    input_CHECKRPM=false;
  fi;

  # search arg download
  if grep -q "download" $path_tmptemp; then
    input_DOWNLOAD=true;
  else
    input_DOWNLOAD=false;
  fi;

  # search arg rebuild
  if grep -q "rebuild" $path_tmptemp; then
    input_REBUILD=true;

    # > search arg install deps
    if grep -q "instdeps" $path_tmptemp; then
    input_INSTDEPS=true;
    else
    input_INSTDEPS=false;
    fi;

    # > search arg rm debuginfo
    if grep -q "rmdebug" $path_tmptemp; then
    input_RMDEBUG=true;
    else
    input_RMDEBUG=false;
    fi;

    # > searcg arg mv failed
    if grep -q "mvfailed" $path_tmptemp; then
    input_MVFAILED=true;
    else
    input_MVFAULED=false;
    fi;

    # > searcg arg mv failed
    if grep -q "showfail" $path_tmptemp; then
    input_SHOWRPMFAILLOG=true;
    else
    input_SHOWRPMFAILLOG=false;
    fi;


  else
    input_REBUILD=false;
  fi;

  # search default
  if grep -q "default" $path_tmptemp; then
      input_DOWNLOAD=true;
      input_MVFAILED=true;
      input_REBUILD=true;
      input_INSTDEPS=true;
      input_RMDEBUG=true;
      input_CHECKRPM=true;
      input_SHOWRPMFAILLOG=false;
  fi;

  # Do functions
  if [ $input_CHECKRPM = "true" ]; then
    f_Get_RPM_List;
    f_Check_Packages;
  fi;

  if [ $input_DOWNLOAD = "true" ]; then
    f_Download_Packages;
  fi;

  if [ $input_REBUILD = "true" ]; then
    f_Rebuild_Packages;
  fi;

# <- End


мирроры

Код: Выделить всё

ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/fedora-core/development/SRPMS/
ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/fedora-core/test/2.90/SRPMS/
ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/fedora-core/updates/2/SRPMS/
ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/fedora-core/updates/testing/2/SRPMS/
ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/fedora-core/2/SRPMS/
http://www.gtlib.cc.gatech.edu/pub/fedora.redhat/linux/core/development/SRPMS/
http://wftp.tu-chemnitz.de/pub/linux/fedora-core/development/SRPMS/
http://wftp.tu-chemnitz.de/pub/linux/fedora-core/2/SRPMS/
http://wftp.tu-chemnitz.de/pub/linux/fedora-core/updates/2/SRPMS/
http://wftp.tu-chemnitz.de/pub/linux/fedora-core/updates/testing/2/SRPMS/
http://ayo.freshrpms.net/redhat/9/i386/freshrpms/SRPMS/
http://rpms.xcyb.org/fedora/2/stable/SRPMS/
http://download.fedora.us/fedora/fedora/2/i386/SRPMS.stable/
http://download.fedora.us/fedora/fedora/2/i386/SRPMS.testing/
http://download.fedora.us/fedora/fedora/2/i386/SRPMS.unstable/
http://download.fedora.us/fedora/fedora/2/i386/SRPMS.updates-testing/
http://download.fedora.us/fedora/fedora/2/i386/SRPMS.updates/
http://rpm.livna.org/fedora/2/i386/SRPMS.stable/
http://rpm.livna.org/fedora/2/i386/SRPMS.testing/
http://rpm.livna.org/fedora/2/i386/SRPMS.unstable/
http://gstreamer.net/pkg/fedora/2/i386/yum/gst/SRPMS/
http://gstreamer.net/pkg/fedora/2/i386/yum/deps/SRPMS/
http://newrpms.sunsite.dk/apt/redhat/en/i386/fc2/SRPMS.newrpms/
http://download.fedora.redhat.com/pub/fedora/linux/core/development/SRPMS/

mani13: может лучше дашь ссылку на файл с сорцами? а сами сорцы уберёшь...
Если жизнь твоя порвется, тебе новую сошьют.
Спасибо сказали: