Пакетные дистрибутивы - тупиковая ветвь? (SRC и RPM/DEB)
Модератор: Модераторы разделов
-
- Бывший модератор
- Сообщения: 2088
- Статус: Насильник бабушек-педофилок
- ОС: Windows 10
Re: Пакетные дистрибутивы - тупиковая ветвь?
почему не грозит? очень даже грозит. пакетность или сорсность здесь не при чем, все зависит от девелопера. просто пакетные дистрибы чаще всего рассчитаны на простого юзверя, отсюда красивости и куча барахла в комплекте. а никак не из-за того, что они пакетные...
Хрю.
-
- Бывший модератор
- Сообщения: 1638
- Статус: Форум больше не посещаю
Re: Пакетные дистрибутивы - тупиковая ветвь?
вот именно, что как бы, а на деле оно так и выходит.
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
-
- Бывший модератор
- Сообщения: 7275
- Статус: Пенсионер в законе
- ОС: Cintu
Re: Пакетные дистрибутивы - тупиковая ветвь?
2demongloom
В результате деятельности предалагаемого скрипта у Вас получилось нечто вроде системы портов для rpm. Само по себе - здорово, но во Free это испокон веков было, и прочие SB без портообразной системы не обходятся.
2All
И опять же кто про что...
Вот поставил я давеча Arch из пакетов по ftp за два часа (с CD вышло бы за пятнадцать минут), и сразу начал работать, а теперь, когда есть время/желание/настроение, постепенно пересобираю все, что мне не нарвится как работает. Из ихнего ABS - тоже типа портов, build-файл - очень прост и прозрачен, подправить - все равно что опции в ./configure указать (на самом деле это и делается). Чего не хватает в ABS - свой build-файл сочинить как два байта переслать. Что это - пакетный дистр или SB?
В результате деятельности предалагаемого скрипта у Вас получилось нечто вроде системы портов для rpm. Само по себе - здорово, но во Free это испокон веков было, и прочие SB без портообразной системы не обходятся.
2All
И опять же кто про что...
Вот поставил я давеча Arch из пакетов по ftp за два часа (с CD вышло бы за пятнадцать минут), и сразу начал работать, а теперь, когда есть время/желание/настроение, постепенно пересобираю все, что мне не нарвится как работает. Из ихнего ABS - тоже типа портов, build-файл - очень прост и прозрачен, подправить - все равно что опции в ./configure указать (на самом деле это и делается). Чего не хватает в ABS - свой build-файл сочинить как два байта переслать. Что это - пакетный дистр или SB?
-
- Бывший модератор
- Сообщения: 1638
- Статус: Форум больше не посещаю
Re: Пакетные дистрибутивы - тупиковая ветвь?
в принципе, и 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
-
- Бывший модератор
- Сообщения: 7275
- Статус: Пенсионер в законе
- ОС: Cintu
Re: Пакетные дистрибутивы - тупиковая ветвь?
(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
И все равно каждый выберет то, к чему душа лежит (или чего задачи требуют). И это, товарищи, правильно.
-
- Бывший модератор
- Сообщения: 1638
- Статус: Форум больше не посещаю
Re: Пакетные дистрибутивы - тупиковая ветвь?
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
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Пакетные дистрибутивы - тупиковая ветвь?
Вот именно. Но пропасть, как я тут пытаюсь втолковать random_cod'у, всё-же не между source-based и package-based, а между rpm-based и всем остальным. Именно всилу дурного формата пакетов (в сравнении, к примеру, с теми же deb).(alv @ Friday, 30 July 2004, 11:14) писал(а):Другое дело, что пересобрать RH - задача геморройная, но это потому, что формат пакетов... э-э не очень прямой. Так что замазывать пропасть мы им не позволим!
Мне, честно говоря, сложно ответить, т.к. всилу необщения с sb я не очень чётко понимаю, о каком именно "образе" речь. Если разжуёте -- тогда пожалуста...(random_code @ Friday, 30 July 2004, 11:27) писал(а):Про деб ничего такого не слышал, нельзя ли поподробнее?Debian, как свидетельствует t.t, можно пересобрать таким образом (про Slackware и говорить нечего - для того она и предназначена)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Бывший модератор
- Сообщения: 7275
- Статус: Пенсионер в законе
- ОС: Cintu
Re: Пакетные дистрибутивы - тупиковая ветвь?
(t.t @ Friday, 30 July 2004, 11:36) писал(а):Мне, честно говоря, сложно ответить, т.к. всилу необщения с sb я не очень чётко понимаю, о каком именно "образе" речь. Если разжуёте -- тогда пожалуста...(random_code @ Friday, 30 July 2004, 11:27) писал(а):Про деб ничего такого не слышал, нельзя ли поподробнее?Debian, как свидетельствует t.t, можно пересобрать таким образом (про Slackware и говорить нечего - для того она и предназначена)
"Образ" выглядит немного по разному. Во 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. Даже афоризм придумал, по графу нашему, пахарю:
Все прямые дистрибутивы прямы одинаково, каждый кривой - крив по своему.
Впрочем, это из геометрии Евклида однозначно следует:-)
-
- Бывший модератор
- Сообщения: 1638
- Статус: Форум больше не посещаю
Re: Пакетные дистрибутивы - тупиковая ветвь?
чего бы мне хотелось от Debian, так это компиляции и установки программы одной-двумя командами. Естественно, все зависимости должны быть учтены.
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Пакетные дистрибутивы - тупиковая ветвь?
(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нεиж
-
- Сообщения: 1030
- Статус: собирающий миры
- ОС: Debian
Re: Пакетные дистрибутивы - тупиковая ветвь?
2alv: по поводу gentoo
emerge -u world (апдэйтит все установленные пакеты)
или emerge -uD world (... со всеми зависимостями)
emerge -vuDe world (полная пересборка всех пакетов)
Я к тому, что в gentoo 'world' рулиться файлом /var/cache/edb/world, что ОЧЕНЬ удобно!
emerge -u world (апдэйтит все установленные пакеты)
или emerge -uD world (... со всеми зависимостями)
emerge -vuDe world (полная пересборка всех пакетов)
Я к тому, что в gentoo 'world' рулиться файлом /var/cache/edb/world, что ОЧЕНЬ удобно!
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
*offtopic* - ololo!
-
- Сообщения: 454
- Статус: Добрый Демон
Re: Пакетные дистрибутивы - тупиковая ветвь?
Ну насчет моего скрипта что это "система портов" конечно сильно преувеличена. Просто автоматизация некоторых действий, с рюшечками и рящечками - как я люблю.
Сей скрипт я кучу раз доделывал и баг фиксил, так что версия что на форуме уже морально устарела :devil_2: .
Я бы может и перешел бы на дженту, если бы не одно но. Не люблю я конфиги править вручную, а тем более с нуля. Мне бы гуй. А его в дженту вроде нет. В этом то я вся проблема. Прекомпилированные дистры как правило еще имеют и пакеты от разработчиков дистра - конфигурялки, темы т.д.
+ что мне еще не нравиться в дженту, это то что я должен многие простые вещи которые можно автоматизировать делать вручную.
Например можно было бы сделать некий сетап-установщик который.
В гуи поможет разбить диск (уж намного приятней в гуи чем через фдиск. Вот возмите для примера acronis disk suite). Разобьет, настроит подключение к нету, подскажет что и какими флагами компилировать. Установит на жесткий минимальную систему. А затем после перезагрузки, уже с жесткого тоже в гуи красивый такой make с прогресбаром.
Вот интересно. Вопрос к тем кто дженту с нуля собирал. Вы медитировали во время просмотра вывода make или как то другим способом убивали время?
Сей скрипт я кучу раз доделывал и баг фиксил, так что версия что на форуме уже морально устарела :devil_2: .
Я бы может и перешел бы на дженту, если бы не одно но. Не люблю я конфиги править вручную, а тем более с нуля. Мне бы гуй. А его в дженту вроде нет. В этом то я вся проблема. Прекомпилированные дистры как правило еще имеют и пакеты от разработчиков дистра - конфигурялки, темы т.д.
+ что мне еще не нравиться в дженту, это то что я должен многие простые вещи которые можно автоматизировать делать вручную.
Например можно было бы сделать некий сетап-установщик который.
В гуи поможет разбить диск (уж намного приятней в гуи чем через фдиск. Вот возмите для примера acronis disk suite). Разобьет, настроит подключение к нету, подскажет что и какими флагами компилировать. Установит на жесткий минимальную систему. А затем после перезагрузки, уже с жесткого тоже в гуи красивый такой make с прогресбаром.
Вот интересно. Вопрос к тем кто дженту с нуля собирал. Вы медитировали во время просмотра вывода make или как то другим способом убивали время?
Если жизнь твоя порвется, тебе новую сошьют.
-
- Сообщения: 1030
- Статус: собирающий миры
- ОС: Debian
Re: Пакетные дистрибутивы - тупиковая ветвь?
(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 (прогрессбар, рюшечки и прочее) и автоматизацией

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