Проблема с модулями perl

Доброго времени суток, дорогие друзья!
Прошу помощи с обновлением мира. В подробности вдаваться не буду, но многие, наверняка, сталкивались с проблемами при обновлении perl, будь он не ладен. После долгих плясок вокруг него, он будет стерт и затем кое-что было подтянуто по зависимостям. На данный момент проблема в том, что у меня не собирается модуль dev-perl/libintl-perl.

Падает вот с такими словами: /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lintl
(тут вот полный лог сборки: http://pastebin.com/bg7vEz2c)

Вот тут вот emerge --info: http://pastebin.com/WYNegWy0

Из самих libintl у меня установлено только virtual/libintl, а dev-libs/libintl не устанавливается из-за конфликтов с glibc...

Помогите разобраться, пожалуйста.

Перл, как и питон, либц и

Перл, как и питон, либц и гцц, очень специфические штучки для Генту и их надо обновлять отдельно и очень осторожно! Особенно если это не простой минорный баг-фикс.

Вот я уже тут рассказывал, как надо делать - поищите...

SysA написал(а): Перл, как и

SysA написал(а):
Перл, как и питон, либц и гцц, очень специфические штучки для Генту и их надо обновлять отдельно и очень осторожно! Особенно если это не простой минорный баг-фикс.

Для гентушечки, сугубо — современной, перл не так критичен, как три остальных.

И да, с неосторожным обновлением перла налететь на… сюрприз можно также далеко не только в гентушечке.

:wq
--
Live free or die

.

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

Дайте угадаю: Ваши неприятности связаны с тем, что Вы зацепили хвост потребности в perl-cleaner'е?

ЗЫ: Так система была недообновлена?

:wq
--
Live free or die

Изначально у меня был

Изначально у меня был конфликт версий перла. Я как раз-таки запустила perl-cleaner, он что-то там пересобрал и обновил, но обновить мир это не помогло. После этого я уже грохнула его полностью и стала тянуть по зависимостям. При этом установила флаг -perl, чтобы его прилетало меньше.

/

perl-cleaner -a?

:wq
--
Live free or die

Не помогает

Не помогает

.

swetlana написал(а):
Не помогает

Понятно.
Вопрос был про другой этап.

Про сейчас: вообще portage работоспособен?
Например emerge -1 app-text/dos2unix отрабатывает без ошибок?

:wq
--
Live free or die

Да, portage прекрасно

Да, portage прекрасно работает.

/

swetlana написал(а):
Да, portage прекрасно работает.

И portage ни о чём не предупреждает?

Не далее как сего дня при обновлении внезапно встретил ошибку линковки.
В достаточной степени подобную:

/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lintl
collect2: error: ld returned 1 exit status

Прочитал сообщения portage, по предложенному запустил:

emerge @preserved-rebuild

И нет ошибки.

:wq
--
Live free or die

swetlana

swetlana написал(а):
...что-то там пересобрал и обновил...

Это круто! :)

Предлагаю Вам более осмысленную (и теоретически правильную) схему обновлений:

0. eix-sync - синхронизация. (Предполагается, что все в /etc/portage/* настроено, но можно это сделать и после синхронизации.

1. emerge -uN --nodeps portage - если обновился/изменился сам портаж.
2. Обновление тулчейна:
2.1. emerge -1 --nodeps linux-headers glibc - если обновился/изменился linux-headers или glibc. Кстати, желательно иметь версию linux-headers такую же как и у ядра - подробности в литературе и/или в Интернете ;).
2.2. emerge -uN --nodeps binutils - если обновился/изменился binutils
2.3.а. eselect binutils list - проверить настройку и
2.3.б. eselect binutils set [LastVersion] - выставить самый свежий, если он не тот
2.3.в. . /etc/profile - обновить среду, если были какие-либо изменения с binutils. Обращаю внимание, что точка в начале - это часть команды! ;)
2.4.а. emerge -uN --nodeps gcc - если обновился/изменился gcc
2.4.б. gcc-config -l - проверить текущую версию и переключить на нужную при необходимости
2.4.б. . /etc/profile - обновить среду, если были какие-либо изменения с gcc. Обращаю внимание, что точка в начале - это опять часть команды! ;)
2.5. emerge -1 --nodeps glibc binutils gcc если обновился/изменился хотя бы один из пакетов тулчейна.
3. если надо изменить/обновить ядро, то это надо делать только после обновления тулчейна (п.2), а также рекомендуется перекомпилировать ядро, если обновился тулчейн.
4. Пляски вокруг PERL'а:
4.1. emerge -1 --nodeps perl perl-cleaner - если обновился/изменился PERL, т.е. именно тут Вы и сделали свою самую главную ошибку! :)
4.2. perl-cleaner --reallyall - всегда(!) надо подчищать за PERL'ом, тут могут быть блокирующие PERL'овые пакеты - можете их смело удалять - они потом подтянутся по зависимостям, если надо.
5. Теперь пляски со змеей:
5.1.а. emerge -1 python - если только давно не обновлялись и все запущено, обычно постаточно
5.1.б. emerge -uN $(qlist -IC python) - обновить змеиное царство
5.2. python-updater - и подчистить за ним
6. emerge -uN $(qlist -IC portage) - Обновить игрушки портажа и можно продолжать почти в классической манере:
7. emerge -uDN --with-bdeps=y --keep-going=y @system - добиться завершения без ошибок
8. emerge -uDN --with-bdeps=y --keep-going=y @world - аналогично
9. emerge --depclean -a - подчистить за собой, но тут надо быть осторожной и внимательно прочитать весь список перед тем, как подтвердить удаление. Иногда система хочет удалить что-то важное, поэтому можно прервать процесс и перекомпилировать нужный пакет. Если совсем не знаете, что делать - лучше (безопаснее) этот шаг пропустить.
10. revdep-rebuild -i - продолжить чистку. Этот шаг вполне безопасен и желательно добиться его нормального завершения без ошибок.
11. eclean-dist - финальная чистка. Иногда тут выдается полезная информация об устаревших пакетах и/или доп.зависимостях. Тут уж по обстоятельствам - можно удалять или перекомпилировать проблемные пакеты. Вполне безопасно (с точки зрения портажа, но не с точки зрения информационной безопасности :) ) опять ничего не делать, если не понимаешь...

P.S. Разумеется, все команды выше можно предварительно прогнать с доп.параметрами -p -v на предмет посмотреть, что будет... ;)

Удачи!

Предлагаю Вам более

Предлагаю Вам более осмысленную (и теоретически правильную) схему обновлений:

Обратите внимание, что данная фраза была адресована к работе утилиты perl-cleaner, а не к моему подходу к обновлениям системы.

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

4. Пляски вокруг PERL'а:
4.1. emerge -1 --nodeps perl perl-cleaner - если обновился/изменился PERL, т.е. именно тут Вы и сделали свою самую главную ошибку! :)
4.2. perl-cleaner --reallyall - всегда(!) надо подчищать за PERL'ом, тут могут быть блокирующие PERL'овые пакеты - можете их смело удалять - они потом подтянутся по зависимостям, если надо.

В моем случае, мне пришлось полностью удалить пакеты перла и устанавливать их по зависимостям. Сейчас же мне указанные рекомендации, к сожалению, уже не помогают.

Вот для того, чтобы такой

Вот для того, чтобы такой ситуации не возникало и нужна вышеописанная процедура! :D

Предполагаю, что Вы не уделили серъезного внимания недавним обновлениям глибС и гцц, и совершенно напрасно!

Также надо всегда читать eselect news read (там и недавние изменения с питоном были, кстати), но Вы, видимо, выше этого...

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

P.S. Почему-то у меня на 500+ серверах проблем с обновлениями не возникло... :) Но это так, к слову... для иллюстрации...

Благодарю за беспокойство, но

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

Да ладно, не вопрос!.. :)

Да ладно, не вопрос! :)

Удачи тыкаться дальше...

Обратите внимание на азы логики:

swetlana написал(а):
...
Обратите внимание, что данная фраза была адресована к работе утилиты perl-cleaner, а не к моему подходу к обновлениям системы.
...
Благодарю за рекомендации, но проблемы у меня возникли только с перлом.
...
В моем случае, мне пришлось полностью удалить пакеты перла и устанавливать их по зависимостям. Сейчас же мне указанные рекомендации, к сожалению, уже не помогают.

Обратите внимание на азы логики: после чего-то не означает вследствие чего-то...

Просто многое уже поломано. Если портаж и тулчейн еще жив - все-таки попробуйте пройти мою процедуру - по-крайней мере Вы ничего не потеряете, а шанс восстановиться еще есть. Только там, по-обстоятельствам, возможно нужно будет по-чаще использовать '-1' вместо '-u'. Мне уже не раз удавалось восстанавливать Генту-системы и в худшем состоянии.

И таки-да - Генту очень не любит скрипт-кидди!.. :) и рано или поздно все равно где-то что-то обломится.

РетроградЪ

SysA написал(а):
2.3.в. . /etc/profile - обновить среду, если были какие-либо изменения с binutils. Обращаю внимание, что точка в начале - это часть команды! ;)

Если кому-то кажется, что я — ретроград, не верьте глазам своим. Мне до SysA далеко.

Точка в начале как часть команды — устаревший синтаксис, который обещают выпилить.

# source /etc/profile

Хотя исторически, из того, что мне помнится, правильнее:

# env-update && source /etc/profile

ЗЫ: И почему ты не пишешь про:

# emerge -1 sys-devel/libtool

:wq
--
Live free or die

Не хотел разводить дискуссию,

Не хотел разводить дискуссию, но, дабы зеленые новички не повелись на ошибочное понимание и декларации сего "гуру", решил все-таки разъяснить ситуацию. Итак, по пунктам:

Anarchist написал(а):
SysA написал(а):
2.3.в. . /etc/profile - обновить среду, если были какие-либо изменения с binutils. Обращаю внимание, что точка в начале - это часть команды! ;)

Если кому-то кажется, что я — ретроград, не верьте глазам своим. Мне до SysA далеко.

Точка в начале как часть команды — устаревший синтаксис, который обещают выпилить.

# source /etc/profile

Для справки:

in BASH the . and the source built-ins are synonyms but not in POSIX sh, so you should use . if your script is run by /bin/sh, /bin/csh, /bin/tcsh, /bin/ksh, etc

т.е. Анархист прав, если используется BASH. Для подавляющего большинства админов локалхостов так оно и есть, а многие даже и не подозревают о наличии других оболочек, особенно если учесть, что /bin/sh сейчас модно делать ссылкой на тот же BASH. :)

А мне как-то довелось работать в конторе, где КSH был корпоративным стандартом. Вот и сейчас стараюсь по возможности избегать "башизмов" и быть максимально ближе к POSIX'у, ибо приходится сталкиваться с очень многими и разными системами.

Anarchist написал(а):
Хотя исторически, из того, что мне помнится, правильнее:

# env-update && source /etc/profile

Во-первых, это не "исторически", а только для Генту!
Во-вторых, в контексте темы это не актуально, хотя и ничему не помешает.

Anarchist написал(а):
ЗЫ: И почему ты не пишешь про:

# emerge -1 sys-devel/libtool

Аналогично, в контексте темы это неактуально.

спасибо! Давно хотел спросить

Предлагаю Вам более осмысленную (и теоретически правильную) схему обновлений:

спасибо! Давно хотел спросить но стеснялся как-то. А можно это прикрепить в FAQ?

Как тут подозревают выше,

Как тут подозревают выше, недообновленная ситема? Вероятно, нужно разруливать конфликты. perl-ceaner?

perl-cleaner я пробовала

perl-cleaner я пробовала использовать в первую очередь. он мне ничем не помог.

Возможно perl-cleaner и

Возможно perl-cleaner и повредил. Как уже упоминал кто-то из предыдущих ораторов, я также уже давно не сталкивался с проблемами при обновлении perl. Да, где-то месяц назад emerge выругался на то, что зависимости тянут две версии perl, но проверив что именно тянет вторую версию, я обнаружил какой-то пакет из XOrg, удалил этот пакет и запустил emerge. На этот раз всё прошло без каких бы то ни было проблем, и даже новая версия того удалённого пакета встала на место. Иногда возникают проблемы с перловыми модулями установленными как bdeps, но и с ними долго возится не приходится.

В общем, перловые проблемы не всегда связаны с самим перлом.

Чем больше юзерфрендли, тем сложнее юзать.

в чем проблема конфликта с

в чем проблема конфликта с glibc? решите его.

А что, есть реальный пример

А что, есть реальный пример конфликта перла или его модуля с glibc? Тогда надо его сюда, подивиться и повосхищаться.

Чем больше юзерфрендли, тем сложнее юзать.

Объясняю суть конфликта. В

Объясняю суть конфликта. В настоящее время реализация libintl лежит в самой glibc и предоставляется в систему ею, а также виртуальным пакетом virtual/libintl. Однако имеет место существовать dev-libs/libintl, которая выдернута из состава gettext. Она соберет либы с теми же именами, что содержит в себе glibc, потому два этих пакета одновременно установлены быть не могут. То есть это блокеры.

Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".