1

Всем привет! В последнее время у меня накопилось пару вопросов по gentoo, а создавать под каждый тред, не культурно.

1) Как откатить пакет к его предыдущей версии, если в портеже эта версия уже не доступна, т.е. не замаскирована, а ее там вообще нет.

Вчера столкнулся с неприятной ситуацией: обновлял chromium до 19 версии, он не собрался, заменил либы в /usr/lib/ на 19 версии. После неудачной установки, предыдущая версия (18) перестала запускаться. В этой ситуации помог бы revdep-rebuild, вот только 18 версии chromium в портеже уже не было.

2) Допустим у меня остался ebuild в /var/, как мне его установить, если emerge /path/to/ebuild опция не работает?

3) Вопрос немного персональный к Lupo Alberto: Может ли сейчас funtoo дать большую стабильность при сборке пакетов, чем gentoo. За последние два дня у меня собралось две важных для меня программы. Собственно gentoo нравится всем, но слишком много ошибок при сборке.

В будущем вопросы будут появляться, поэтому прошу тему не закрывать.

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

2

riso пишет:

1) Как откатить пакет к его предыдущей версии, если в портеже эта версия уже не доступна, т.е. не замаскирована, а ее там вообще нет.

Создать локальный оверлей, туда поместить старый ebuild, который можно найти в данном случае здесь.

riso пишет:

2) Допустим у меня остался ebuild в /var/, как мне его установить, если emerge /path/to/ebuild опция не работает?

Не до конца понял вопрос, будут подробности, может, отвечу.
emerge — это надстройка над командой ebuild, различные аргументы которой позволяют провести установку по шагам. Подробности man ebuild

riso пишет:

3) Вопрос немного персональный к Lupo Alberto: Может ли сейчас funtoo дать большую стабильность при сборке пакетов, чем gentoo. За последние два дня у меня собралось две важных для меня программы. Собственно gentoo нравится всем, но слишком много ошибок при сборке.

В /etc/make.conf небось ACCEPT_KEYWORDS="~amd64"? bx
Сложно мне сказать со 100%-ной уверенностью, что стабильнее. Большинство возникающих у меня проблем так или иначе связаны с тестовой веткой и оверлеями.

Был, был и весь вышел...

3 (23.05.2012 13:48:58 отредактировано riso)

Не до конца понял вопрос, будут подробности, может, отвечу.

вырезка из man emerge

WARNING::
The implementation of emerge //path//to//ebuild is broken and so
this syntax shouldn't be used.

как я понимаю, пакеты, которые были ранее собраны, остаются в кэше. Но я понял, нужен локальный оверлей.

В /etc/make.conf небось ACCEPT_KEYWORDS="~amd64"?

не так глобально, но в /etc/portage/package.keyword; дело в том, что 50% программ, emerge сама просит размаскировать ~amd64, может я как-то не так собираю. Но кстати chromium не требует этого, но все же не собирается.

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

4

riso пишет:

как я понимаю, пакеты, которые были ранее собраны, остаются в кэше.

Нет. Разве что, если вы их сами не собрали в бинарный пакет, либо изначально  не установили в /etc/make.conf

FEATURES = "buildpkg"
Был, был и весь вышел...

5

еще такой вопрос. В gentoo ведь можно устанавливать различные версии одного пакета, можно ли это провернуть для chromium. К примеру если одна версия не соберется, можно было запустить старую ?

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

6

riso пишет:

В gentoo ведь можно устанавливать различные версии одного пакета, можно ли это провернуть для chromium.

Насколько я помню, это должно быть предусмотрено в ebuild'е пакета.

riso пишет:

К примеру если одна версия не соберется, можно было запустить старую ?

Если новая не соберётся, старая никуда не исчезнет. Разве что вы сами её не удалите.

Был, был и весь вышел...

7

Если новая не соберётся, старая никуда не исчезнет

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

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

8

riso пишет:

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

?

revdep-rebuild
Был, был и весь вышел...

9

...или вручную — новую версию замаскировать, старую — пересобрать.
P.S. https://bugs.gentoo.org/buglist.cgi?que … t=chromium — здесь ничего нет по вашей проблеме?

Был, был и весь вышел...

10 (23.05.2012 14:30:42 отредактировано riso)

или вручную — новую версию замаскировать, старую — пересобрать.

revdep-rebuild

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

здесь ничего нет по вашей проблеме?

вроде нет ac

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

11

riso пишет:

Кстати еще вопрос, где я могу найти слепок дерева портежей, к примеру 2-х дневной давности ?

У меня готового решения нет, разве что советы. bx

http://sources.gentoo.org/cgi-bin/viewv … entoo-x86/ — сделано на cvs, значит, можно выбрать предыдущие версии.

Обычно на зеркалах хранятся и предыдущие версии portage, например — ftp://gentoo.arcticnetwork.ca/pub/gentoo/snapshots/

Был, был и весь вышел...

12

riso пишет:

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

Lupo Alberto пишет:

Создать локальный оверлей, туда поместить старый ebuild, который можно найти в данном случае здесь.

Был, был и весь вышел...

13

Я понял, спасибо вам большое!

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

14

Создал локальный оверлей, все сделал как надо (ебилд выкачал с source.gentoo.org), но при сборке выдает ошибку:

+ открыть спойлер
>>> Emerging (1 of 1) www-client/chromium-18.0.1025.151 from x-portage
 * chromium-18.0.1025.151.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                                                                                                                                       [ ok ]
 * Determining the location of the kernel source code
 * Found kernel source directory:
 *     /usr/src/linux
 * Found kernel object directory:
 *     /lib/modules/3.2.12-gentoo/build
 * Found sources for kernel version:
 *     3.2.12-gentoo
 * Checking for suitable kernel configuration options...                                                                                                                                                                                [ ok ]
 * bindist disabled: Resulting binaries may not be legal to re-distribute.
>>> Unpacking source...
>>> Unpacking chromium-18.0.1025.151.tar.bz2 to /var/tmp/portage/www-client/chromium-18.0.1025.151/work
>>> Source unpacked in /var/tmp/portage/www-client/chromium-18.0.1025.151/work
>>> Preparing source in /var/tmp/portage/www-client/chromium-18.0.1025.151/work/chromium-18.0.1025.151 ...

 * Cannot find $EPATCH_SOURCE!  Value for $EPATCH_SOURCE is:
 * 
 *   /usr/local/portage/www-client/chromium/files/chromium-revert-jpeg-swizzle-r2.patch
 *   ( chromium-revert-jpeg-swizzle-r2.patch )

 * ERROR: www-client/chromium-18.0.1025.151 failed (prepare phase):
 *   Cannot find $EPATCH_SOURCE!
 * 
 * Call stack:
 *     ebuild.sh, line   85:  Called src_prepare
 *   environment, line 6273:  Called epatch '/usr/local/portage/www-client/chromium/files/chromium-revert-jpeg-swizzle-r2.patch'
 *   environment, line 2007:  Called die
 * The specific snippet of code:
 *                   die "Cannot find \$EPATCH_SOURCE!";
 * 

как я понял, он не может найти патч. Интересно почему он не может его выкачать. И что за переменная $EPATCH_SOURCE! ? ее нет в ебилде.

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

15

http://sources.gentoo.org/cgi-bin/viewv … p;view=log

...или даже так
http://sources.gentoo.org/cgi-bin/viewv … e-r2.patch

Был, был и весь вышел...

16

Вы должны повторить в локальном оверлее всю структуру, необходимую ebuild'у,  в данном случае создать каталог files и поместить в него необходимые патчи.

Был, был и весь вышел...

17

riso пишет:

И что за переменная $EPATCH_SOURCE! ?

Где-то здесь — http://devmanual.gentoo.org/ ag

Был, был и весь вышел...

18

ага, спасибо. Раньше почему-то думал, что вся инфа о патчах и где их качать есть в ебилде

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

19

Старая версия собралась, хоть и не с первой попытки, но это моя вина. Теперь интересует другое: беру я лог сборки хрома (который не собрался) на анализ, там тьма текста (лог весит 37 метров) и заканчивается фразой

ERROR: www-client/chromium-19.0.1084.46-r2 failed (compile phase):
 *   emake failed

то как быть ? как можно найти ошибку ?

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

20

Lupo Alberto пишет:

Насколько я помню, это должно быть предусмотрено в ebuild'е пакета.

если быть точным пакеты должны быть в разных слотах. ну и не иметь конфликтов по файлом (само собой разумеется)

riso пишет:

Старая версия собралась, хоть и не с первой попытки, но это моя вина. Теперь интересует другое: беру я лог сборки хрома (который не собрался) на анализ, там тьма текста (лог весит 37 метров) и заканчивается фразой

ERROR: www-client/chromium-19.0.1084.46-r2 failed (compile phase):
 *   emake failed

то как быть ? как можно найти ошибку ?

это просто констатация ошибки, сама ошибка немного выше, в высере make'а. искать по ключевому слову "error" или "ошибка"(не помню, подцепляется ли внутри portage локаль).
tail -1000 /path/to/logfile.log | wgetpaste

95% процентов проблем находятся между клавиатурой и стулом.

21

riso пишет:

то как быть ? как можно найти ошибку ?

Как-нибудь так для начала bx

emerge -av app-text/wgetpaste
tail -n 100 /BIG_LOG | wgetpaste
head -n 100 /BIG_LOG | wgetpaste
Был, был и весь вышел...

22

ok ab
head - https://gist.github.com/2776259
tail   - https://gist.github.com/2776288

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

23

tail -1000 /path/to/logfile.log | wgetpaste

wgetpaste не хочет заливать столько строк, сделал grep error, там 63 строки, тоже отказался. Просто там одна строка очень длинная, наверное ограничение на символы стоит

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

24

забил grep error в файл
http://up.iteam.ua/140605

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

25

riso пишет:

tail   - https://gist.github.com/2776288

Что-то маловато строк ac

Был, был и весь вышел...

26

больше wgetpaste не захотел брать
вот в файле tail -n 100 http://up.iteam.ua/140606

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

27

Lupo Alberto пишет:

Что-то маловато строк

на самом деле достаточно =))

dev-libs/icu пересобрать надо и, возможно, попробовать другие версии
ЗЫ: ну и revdep-rebuild давно был?
ЗЗЫ: ну и libxml2 возможно нужно пересобрать

95% процентов проблем находятся между клавиатурой и стулом.

28

ну и revdep-rebuild давно был?

тут вот в чем дело, revdep-rebuild хочет пересобрать chromium, но он только что собрался (правда версия старая, не та, что выдавала ошибку). И ткните носом, плз, как вы узнали про dev-libs/icu

— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст

29

riso пишет:

И ткните носом, плз, как вы узнали про dev-libs/icu

не тривиально: Маленькие хитрости в Linux
и в контексте gentoo ещё equery b

про libxml2 там написано.

95% процентов проблем находятся между клавиатурой и стулом.

30

Из-за чего появляются такие ошибки (причем вижу не в первый раз.):

 find tor/music/Григорий\ Лепс/ -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 —remove-v1
Updating —remove-v1
Traceback (most recent call last):
  File "/usr/bin/mid3iconv-2.7", line 139, in <module>
    main(sys.argv)
  File "/usr/bin/mid3iconv-2.7", line 129, in main
    update(options, args)
  File "/usr/bin/mid3iconv-2.7", line 52, in update
    if has_id3v1(filename) and not noupdate and force_v1:
  File "/usr/bin/mid3iconv-2.7", line 94, in has_id3v1
    f = open(filename, 'rb+')
IOError: [Errno 2] No such file or directory: '\xe2\x80\x94remove-v1'
eselect python list
 [1]   python2.7 *
 [2]   python3.2
— Ты кто?
— Часть силы той, что без числа
Творит добро, всему желая зла. © Фауст