Страница 1 из 2
Обновление/восстановление сбитых портов
Добавлено: 2009-06-23 8:45:31
ProFTP
была истуация, когда порты были разной версии, не соответсвовали друг другу, программы не запускались, ругались на библиотеки и не собирались, выводили странные ошибки при сборке
portupgrade -arR не хотел обновлять, писал что надо написать pkgdb -aF - эта штука спрашивала всякую херню по 300 раз и работала долго
сделал такой скрипт, вроде бы работает, только на 100% не тестировал - ситуация может разная быть...
может что-то подправить надо...?
переделал скрипт, но не тестировал написал для того чтобы показать как можно сделать...
Код: Выделить всё
#!/usr/bin/perl
open (OPEN2, "portversion -o |");
@all_all = <OPEN2>;
#print @all;
my @all;
foreach (@all_all) {
my ($pname,$status) = split(/ /, $_, 2);
# print $status;
$pname = '/usr/ports/'.$pname;
$pname =~ s/^\s+//;
$pname =~ s/\s+$//;
push @all, $pname;
}
#print "@all_all\n";
my $port;
my @old;
my @no_old;
# while ( my $p = <OPEN2>) {
foreach my $p (@all_all) {
my ($pname,$status) = split(/ /,$p,2);
# print "$status\n";
if ($status =~ '>' || $status =~ '<') {
$pname = '/usr/ports/'.$pname;
$pname =~ s/^\s+//;
$pname =~ s/\s+$//;
push @old, $pname;
# print $pname;
} else {
$pname = '/usr/ports/'.$pname;
$pname =~ s/^\s+//;
$pname =~ s/\s+$//;
push @no_old, $pname;
}
}
#print "@old\n";
#$old[0];
#print '1111';
print $old[0];
print '1111';
@to_port = `cd $old[0] && make all-depends-list`;
#print "@to_port\n";
foreach (@to_port) {
$_ =~ s/^\s+//;
$_ =~ s/\s+$//;
}
my %seen;
@seen{@to_port} = ();
delete @seen{@no_old};
@dep2 = keys %seen;
print "@dep2\n";
Код: Выделить всё
#!/usr/bin/perl
open (OPERN, "portversion |");
@all=<OPERN>;
foreach (@all) {
my ($pp,$st) = split (/ /, $_, 2);
if ($st =~ '<') {
if ($pp =~ '^p5') {
print "$pp\n";
system("portupgrade -f $pp"); # == 0 )
}
}
}
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-23 11:09:20
hodok
cvsup?
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-23 23:36:02
ProFTP
подскажите, как знать все зависимости данного пакета?
hodok писал(а):cvsup?
причем тут это?
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-23 23:43:02
Alex Keda
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-24 1:38:19
ProFTP
1) pkg_info покажет старые зависимости? или новые?
кстате. нашел более лушче make run-depends-list make all-depends-list
а можно ли как-то получить зависимости по иерархии? (может в виде дерева)
2) что-то не могу найти, как скомпилировать соответсвующий порт, но его не устанавливать? просто make не компилирует, то етсь нужно
PS может написать скрипт паралельной сборки при обновлении? (только нужно чтобы кто-то помог протестировать)
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-24 9:47:48
schizoid
как это make не компилирует? а что он по вашему делает?
может он у вас уже собран, тогда в начале make clean , а потом уже make
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-24 12:01:15
ProFTP
Код: Выделить всё
===> Vulnerability check disabled, database not found
===> Found saved configuration for xfce-4.6.1
===> Extracting for xfce-4.6.1
===> Patching for xfce-4.6.1
===> Configuring for xfce-4.6.1
я заметил make по-моиму разархивирует архив, и может запустить configure
в данном случае он не компилирует, разве он компилирует?
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-24 14:11:32
schizoid
Код: Выделить всё
[root@admin /]# cd /usr/ports/mail/exim
[root@admin /usr/ports/mail/exim]# make > 123
exim-4.69.tar.bz2 100% of 1620 kB 6285 kBps
^C
[root@admin /usr/ports/mail/exim]# cat 123
=> exim-4.69.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/exim.
=> Attempting to fetch from ftp://gate.brain.lan/private/distfiles/.
===> Extracting for exim-4.69_3
=> MD5 Checksum OK for exim/exim-4.69.tar.bz2.
=> SHA256 Checksum OK for exim/exim-4.69.tar.bz2.
===> exim-4.69_3 depends on file: /usr/local/bin/perl5.8.9 - found
===> Patching for exim-4.69_3
===> exim-4.69_3 depends on file: /usr/local/bin/perl5.8.9 - found
===> Applying FreeBSD patches for exim-4.69_3
===> exim-4.69_3 depends on file: /usr/local/bin/perl5.8.9 - found
===> exim-4.69_3 depends on shared library: iconv.3 - found
===> Configuring for exim-4.69_3
>>> Creating links to source files...
>>> New Makefile installed
>>> Use "make makefile" if you need to force rebuilding of the makefile
===> Building for exim-4.69_3
`Makefile' is up to date.
/bin/sh ../scripts/Configure-os.h
/bin/sh ../scripts/Configure-os.c
cc buildconfig.c
/bin/sh ../scripts/Configure-config.h "make"
`buildconfig' is up to date.
Building configuration file config.h
>>> config.h built
cc pcre_maketables.c
cc pcre_chartables.c
cc pcre_fullinfo.c
cc pcre_get.c
cc pcre_globals.c
cc pcre_compile.c
cc pcre_config.c
cc pcre_exec.c
cc pcre_newline.c
cc pcre_study.c
cc pcre_tables.c
cc pcre_try_flipped.c
cc pcre_version.c
rm -f libpcre.a
ar cq libpcre.a
ranlib libpcre.a
cc pcretest.c
cc -o ../pcretest pcretest.o libpcre.a
>>> exicyclog script built
>>> exinext script built
>>> exiwhat script built
>>> exigrep script built
>>> eximstats script built
>>> exipick script built
>>> exiqgrep script built
>>> exiqsumm script built
>>> transport-filter.pl script built
>>> convert4r3 script built
>>> convert4r4 script built
>>> exim_checkaccess script built
cc exim_dbmbuild.c
cc -o exim_dbmbuild
/usr/bin/strip exim_dbmbuild
>>> exim_dbmbuild utility built
cc -DEXIM_DUMPDB exim_dbutil.c
cc -DCOMPILE_UTILITY os.c
cc -DCOMPILE_UTILITY store.c
cc -o exim_dumpdb
/usr/bin/strip exim_dumpdb
>>> exim_dumpdb utility built
cc -DEXIM_FIXDB exim_dbutil.c
cc -o exim_fixdb
/usr/bin/strip exim_fixdb
...
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-30 2:42:59
Гость
при обновлении 2 десктопа и 2 сервера, заметил такую фигню
если очень много пакетов, установленных программ, то при обновлении базы данных пакетов - это процедура занимает минут 5-10...
portupgrade в тупую эту базу обновляет перед удалением порта и после установки... это занимет кучу времени!!! я фигую
может это извращение, садо-мазо настроящее использовать shell c BerkleyDB?
вот в Gentoo порты написаны на Python там такой херни не было что база пакетов пол чаза обновляется (и там можно SQlite использовать)... правда я давно не использовал
кто Gentoo юзает там тоже база установленных пакетов длительнео время обновляется?
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-30 2:45:31
Гость
это жопа, а не система пакетов

Re: Обновление/восстановление сбитых портов
Добавлено: 2009-06-30 11:38:01
Gegemon
ProFTP писал(а):....
portupgrade -arR не хотел обновлять, писал что надо написать pkgdb -aF - эта штука спрашивала всякую херню по 300 раз и работала долго
сделал такой скрипт, вроде бы работает, только на 100% не тестировал - ситуация может разная быть...
может что-то подправить надо...?
Зачем велосипед изобретать?
man portaudit
man portmaster
man portmanager
man portupgrade
man pkgdb
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 14:01:24
ProFTP
написал таки статью
http://www.lissyara.su/?id=1957
придумал вариант обновлять раз в ниделючерез крон и отправлять отчет на почту
орфографические ошибки не справлял еше
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 17:09:46
_Andy
Комканное, сбивчивое изложение, будто автор сам сомневается
за каким хуем все это вообще надо.
ProFTP: сядь, набросай план статьи -
Код: Выделить всё
1. вводная
2. что хотел добиться
3. что сделал
4. что вышло
Тогда получится связанно и хорошо. И можно будет
к списку добавить два пункта

Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 20:50:17
ProFTP
fixed
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 21:06:53
f_andrey
ProFTP писал(а):fixed
Главная проблема осталась, "Нахрена все это?"
Расползается по ширине, видно знание предмета на троечку с плюсом, запустите наконец спеллчекер, почему не освещены альтернативные способы, обновление по крону, без присмотра человека примерно равно самоубийству.
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 21:20:48
ProFTP
как ты обновлял?
я написал:
если нужно обновить (и(или)восстановить) порты, может быть запутанная ситуация (например, если не обновлять год), portupgrade очень часто с певрого раза не исправляет ошибки
я обновлял сервер без иксов, там стояло много очего всего, модули для перла, portupgrade -arR выдвал кучу ошибок и вырубался под конец, это было 3 сутки, в консоле вверху не видно было, потомучто список был большой, логи он не ввел в файл, опции такой я не видел!!
еще раньше слетела база, пришлось почитать как ее восстановить, pkgdb долго выполнял часа 2-3
на другом давненько какого хера своп не примонтировался, портупгрейд начал обновлять и комп повис!
на декстопе еще хуже
если написать:
Код: Выделить всё
pkg_version -v | grep "need" | awk '{print $1}' | { while read pkg_name do portupgrade ${pkg_name} done }
и если пакетов штук 200 он никога нормально не обновит с перого раза, нужно загнать минимум по 3 раза, а с опцией -f в этом примере лучше пропустить те которые уже обновились, я реализовал во втором скрипте в статье
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 22:11:18
Alex Keda
почему у меня всегда всё корректно, на серверах до которых я добираюсь через год или два, и даже три после последнего обновления?
мне, в общем, не жалко. Расскажу.
1. я
никогда не использовал PKG_FORCE_REGISTER или как оно там. (даже названия не знаю)
всегда и всё можно поставить штатно. если не ставиться - разбирайтесь почему, ибо должно.
2. не надо пытаться обновить всё сразу. обновляйте кусками.
Код: Выделить всё
portupgrade -R gettext-...
portupgrade -R gd
portupgrade -R ....
95% софта обновиться корректно - остальные 5% - это чтение /usr/ports/UPDATING, ну и гугл по ошибкам.
3. думалку включить. Хотя, этот пункт я бы поставил первым.
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 22:18:09
ProFTP
lissyara писал(а):
2. не надо пытаться обновить всё сразу. обновляйте кусками.
Код: Выделить всё
portupgrade -R gettext-...
portupgrade -R gd
portupgrade -R ....
это займет вревени знаешь сколько?
-R там точно не достаточно, скорее всего, еще -f, мне не помогло portupgrade -afrR (база была восстановленна pkgdb -aF)
Imagemagic и icu тянего из под себя и из подзависимостей пакетов штук 30-50, собираються сутками
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 22:24:24
Alex Keda
ты читать умеешь? прочитай моё сообщение ещё раз. целиком.
обновляешь штатно всё что можно. без всяких f - тока - (и обязательно!) - с R
дальше думаешь и читаешь.
пока небыло ни одного порта который не удалось бы обновить нормально.
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 22:29:54
ProFTP
это пробовал тоже
так как ты написал в гугле никто так не обновляет

и даже в man portupgrade такого нету в примере чтобы только с этой опций...
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 22:31:38
Alex Keda
может быть.
в мане нету и инструкций чё делать если у всех собирается а у тебя нет

)
========
это инструкция из жизни была.
мир с ядром я тоже не по хандбуку собираю/инсталлю.
работает, однако.
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 22:34:38
ProFTP
почему ты это не написал в своей стаьтье? если portupgrade -R в слудующий раз отвалиться? скорее всего так и будет, потмоу что так и было...
тот скрипт который я второй прицепил тот работает
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 22:41:37
Alex Keda
прекрасно.
тогда делаешь так:
Код: Выделить всё
HP$ cd /var/db/pkg/
HP$ foreach i (*)
foreach? portupgrade -R $i
foreach? end
а про то что останется - смотри пункт три
Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-05 22:43:59
Alex Keda
время не имеет значения.
либо ты планируешь и оцениваешь процесс обновления заранее, либо должен всегда быть готов сидеть до тех пор пока всё не заработает.
========
про себя могу сказать - что не всегда удаётся всё предусмотреть - поэтому часто и в пять утра сижу и фтыкаю в вывод компилятора, зная что в 6 уже на работу вставать

Re: Обновление/восстановление сбитых портов
Добавлено: 2009-07-06 10:34:29
_Andy
lissyara писал(а):мир с ядром я тоже не по хандбуку собираю/инсталлю.
работает, однако.
И я не по хендбуку. Дернул черт, как Makefile напейсали,
сделать
После пересборки всего софта, xterm с кракозябрами, причем
локаль koi8-r. Я в растерянности.