Обновление/восстановление сбитых портов

Обсуждаем сайт и форум.

Модератор: f0s

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-06-23 8:45:31

была истуация, когда порты были разной версии, не соответсвовали друг другу, программы не запускались, ругались на библиотеки и не собирались, выводили странные ошибки при сборке

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 )

 }

 }
}

Последний раз редактировалось ProFTP 2009-06-30 4:08:16, всего редактировалось 4 раза.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hodok
мл. сержант
Сообщения: 125
Зарегистрирован: 2008-08-29 8:32:02
Откуда: Саратовская область
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение hodok » 2009-06-23 11:09:20

cvsup?

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-06-23 23:36:02

подскажите, как знать все зависимости данного пакета?
hodok писал(а):cvsup?
причем тут это?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение Alex Keda » 2009-06-23 23:43:02

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

man pkg_info
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-06-24 1:38:19

1) pkg_info покажет старые зависимости? или новые?

кстате. нашел более лушче make run-depends-list make all-depends-list

а можно ли как-то получить зависимости по иерархии? (может в виде дерева)

2) что-то не могу найти, как скомпилировать соответсвующий порт, но его не устанавливать? просто make не компилирует, то етсь нужно

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

make bla-bla-test && make install clean

PS может написать скрипт паралельной сборки при обновлении? (только нужно чтобы кто-то помог протестировать)
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение schizoid » 2009-06-24 9:47:48

как это make не компилирует? а что он по вашему делает?
может он у вас уже собран, тогда в начале make clean , а потом уже make
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-06-24 12:01:15

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

make clean && make > bla.txt

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

===>  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

в данном случае он не компилирует, разве он компилирует?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение schizoid » 2009-06-24 14:11:32

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

[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 юзает там тоже база установленных пакетов длительнео время обновляется?


Gegemon
ст. сержант
Сообщения: 316
Зарегистрирован: 2007-10-28 16:03:30
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение Gegemon » 2009-06-30 11:38:01

ProFTP писал(а):....
portupgrade -arR не хотел обновлять, писал что надо написать pkgdb -aF - эта штука спрашивала всякую херню по 300 раз и работала долго

сделал такой скрипт, вроде бы работает, только на 100% не тестировал - ситуация может разная быть...
может что-то подправить надо...?
Зачем велосипед изобретать?
man portaudit
man portmaster
man portmanager
man portupgrade
man pkgdb
"Попробую и обязательно отпишусь" - самое популярное последнее сообщение ветки форума

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-07-05 14:01:24

написал таки статью http://www.lissyara.su/?id=1957
придумал вариант обновлять раз в ниделючерез крон и отправлять отчет на почту

орфографические ошибки не справлял еше
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

_Andy
проходил мимо

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение _Andy » 2009-07-05 17:09:46

Комканное, сбивчивое изложение, будто автор сам сомневается
за каким хуем все это вообще надо.
ProFTP: сядь, набросай план статьи -

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

1. вводная
2. что хотел добиться
3. что сделал
4. что вышло
Тогда получится связанно и хорошо. И можно будет
к списку добавить два пункта

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

????
6. PROFIT 
:)

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-07-05 20:50:17

fixed
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
f_andrey
майор
Сообщения: 2651
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение f_andrey » 2009-07-05 21:06:53

ProFTP писал(а):fixed
Главная проблема осталась, "Нахрена все это?"
Расползается по ширине, видно знание предмета на троечку с плюсом, запустите наконец спеллчекер, почему не освещены альтернативные способы, обновление по крону, без присмотра человека примерно равно самоубийству.
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-07-05 21:20:48

как ты обновлял?

я написал:
если нужно обновить (и(или)восстановить) порты, может быть запутанная ситуация (например, если не обновлять год), 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 в этом примере лучше пропустить те которые уже обновились, я реализовал во втором скрипте в статье
Последний раз редактировалось ProFTP 2009-07-06 7:18:02, всего редактировалось 1 раз.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение Alex Keda » 2009-07-05 22:11:18

почему у меня всегда всё корректно, на серверах до которых я добираюсь через год или два, и даже три после последнего обновления?
мне, в общем, не жалко. Расскажу.
1. я никогда не использовал PKG_FORCE_REGISTER или как оно там. (даже названия не знаю)
всегда и всё можно поставить штатно. если не ставиться - разбирайтесь почему, ибо должно.
2. не надо пытаться обновить всё сразу. обновляйте кусками.

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

portupgrade -R gettext-...
portupgrade -R gd
portupgrade -R ....
95% софта обновиться корректно - остальные 5% - это чтение /usr/ports/UPDATING, ну и гугл по ошибкам.
3. думалку включить. Хотя, этот пункт я бы поставил первым.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-07-05 22:18:09

lissyara писал(а): 2. не надо пытаться обновить всё сразу. обновляйте кусками.

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

portupgrade -R gettext-...
portupgrade -R gd
portupgrade -R ....
это займет вревени знаешь сколько?
-R там точно не достаточно, скорее всего, еще -f, мне не помогло portupgrade -afrR (база была восстановленна pkgdb -aF)

Imagemagic и icu тянего из под себя и из подзависимостей пакетов штук 30-50, собираються сутками
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение Alex Keda » 2009-07-05 22:24:24

ты читать умеешь? прочитай моё сообщение ещё раз. целиком.
обновляешь штатно всё что можно. без всяких f - тока - (и обязательно!) - с R
дальше думаешь и читаешь.
пока небыло ни одного порта который не удалось бы обновить нормально.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-07-05 22:29:54

это пробовал тоже

так как ты написал в гугле никто так не обновляет :) и даже в man portupgrade такого нету в примере чтобы только с этой опций...
Последний раз редактировалось ProFTP 2009-07-05 22:33:45, всего редактировалось 2 раза.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение Alex Keda » 2009-07-05 22:31:38

может быть.
в мане нету и инструкций чё делать если у всех собирается а у тебя нет =))
========
это инструкция из жизни была.
мир с ядром я тоже не по хандбуку собираю/инсталлю.
работает, однако.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение ProFTP » 2009-07-05 22:34:38

почему ты это не написал в своей стаьтье? если portupgrade -R в слудующий раз отвалиться? скорее всего так и будет, потмоу что так и было...

тот скрипт который я второй прицепил тот работает
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение Alex Keda » 2009-07-05 22:41:37

прекрасно.
тогда делаешь так:

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

HP$ cd /var/db/pkg/
HP$ foreach i (*)
foreach? portupgrade -R $i
foreach? end
а про то что останется - смотри пункт три
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение Alex Keda » 2009-07-05 22:43:59

время не имеет значения.
либо ты планируешь и оцениваешь процесс обновления заранее, либо должен всегда быть готов сидеть до тех пор пока всё не заработает.
========
про себя могу сказать - что не всегда удаётся всё предусмотреть - поэтому часто и в пять утра сижу и фтыкаю в вывод компилятора, зная что в 6 уже на работу вставать =)
Убей их всех! Бог потом рассортирует...

_Andy
проходил мимо

Re: Обновление/восстановление сбитых портов

Непрочитанное сообщение _Andy » 2009-07-06 10:34:29

lissyara писал(а):мир с ядром я тоже не по хандбуку собираю/инсталлю.
работает, однако.
И я не по хендбуку. Дернул черт, как Makefile напейсали,
сделать

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

delete-old
После пересборки всего софта, xterm с кракозябрами, причем
локаль koi8-r. Я в растерянности.