Проблема с модулями 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 написал(а): Перл, как и
Для гентушечки, сугубо — современной, перл не так критичен, как три остальных.
И да, с неосторожным обновлением перла налететь на… сюрприз можно также далеко не только в гентушечке.
:wq
--
Live free or die
.
Последний раз, когда я сталкивался с… сюрпризами в процессе обновления перла был первым эпизодом мажорного обновления и было это почти десять лет тому назад.
Дайте угадаю: Ваши неприятности связаны с тем, что Вы зацепили хвост потребности в
perl-cleaner
'е?ЗЫ: Так система была недообновлена?
:wq
--
Live free or die
Изначально у меня был
Изначально у меня был конфликт версий перла. Я как раз-таки запустила perl-cleaner, он что-то там пересобрал и обновил, но обновить мир это не помогло. После этого я уже грохнула его полностью и стала тянуть по зависимостям. При этом установила флаг -perl, чтобы его прилетало меньше.
/
perl-cleaner -a
?:wq
--
Live free or die
Не помогает
Не помогает
.
Понятно.
Вопрос был про другой этап.
Про сейчас: вообще portage работоспособен?
Например
emerge -1 app-text/dos2unix
отрабатывает без ошибок?:wq
--
Live free or die
Да, portage прекрасно
Да, portage прекрасно работает.
/
И
portage
ни о чём не предупреждает?Не далее как сего дня при обновлении внезапно встретил ошибку линковки.
В достаточной степени подобную:
Прочитал сообщения
portage
, по предложенному запустил:И нет ошибки.
:wq
--
Live free or die
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, а не к моему подходу к обновлениям системы.
Благодарю за рекомендации, но проблемы у меня возникли только с перлом.
В моем случае, мне пришлось полностью удалить пакеты перла и устанавливать их по зависимостям. Сейчас же мне указанные рекомендации, к сожалению, уже не помогают.
Вот для того, чтобы такой
Вот для того, чтобы такой ситуации не возникало и нужна вышеописанная процедура! :D
Предполагаю, что Вы не уделили серъезного внимания недавним обновлениям глибС и гцц, и совершенно напрасно!
Также надо всегда читать
eselect news read
(там и недавние изменения с питоном были, кстати), но Вы, видимо, выше этого...Если выше сказанное действительно имело место быть, то Вам, возможно, стоит задуматься о переходе на другой дистрибутив...
P.S. Почему-то у меня на 500+ серверах проблем с обновлениями не возникло... :) Но это так, к слову... для иллюстрации...
Благодарю за беспокойство, но
Благодарю за беспокойство, но выше предположение не верно. Так что, пожалуй, я останусь на этом дистрибутиве.
Да ладно, не вопрос!.. :)
Да ладно, не вопрос! :)
Удачи тыкаться дальше...
Обратите внимание на азы логики:
Обратите внимание на азы логики: после чего-то не означает вследствие чего-то...
Просто многое уже поломано. Если портаж и тулчейн еще жив - все-таки попробуйте пройти мою процедуру - по-крайней мере Вы ничего не потеряете, а шанс восстановиться еще есть. Только там, по-обстоятельствам, возможно нужно будет по-чаще использовать '-1' вместо '-u'. Мне уже не раз удавалось восстанавливать Генту-системы и в худшем состоянии.
И таки-да - Генту очень не любит скрипт-кидди!.. :) и рано или поздно все равно где-то что-то обломится.
РетроградЪ
Если кому-то кажется, что я — ретроград, не верьте глазам своим. Мне до SysA далеко.
Точка в начале как часть команды — устаревший синтаксис, который обещают выпилить.
Хотя исторически, из того, что мне помнится, правильнее:
ЗЫ: И почему ты не пишешь про:
:wq
--
Live free or die
Не хотел разводить дискуссию,
Не хотел разводить дискуссию, но, дабы зеленые новички не повелись на ошибочное понимание и декларации сего "гуру", решил все-таки разъяснить ситуацию. Итак, по пунктам:
Для справки:
т.е. Анархист прав, если используется BASH. Для подавляющего большинства админов локалхостов так оно и есть, а многие даже и не подозревают о наличии других оболочек, особенно если учесть, что
/bin/sh
сейчас модно делать ссылкой на тот же BASH. :)А мне как-то довелось работать в конторе, где КSH был корпоративным стандартом. Вот и сейчас стараюсь по возможности избегать "башизмов" и быть максимально ближе к POSIX'у, ибо приходится сталкиваться с очень многими и разными системами.
Во-первых, это не "исторически", а только для Генту!
Во-вторых, в контексте темы это не актуально, хотя и ничему не помешает.
Аналогично, в контексте темы это неактуально.
спасибо! Давно хотел спросить
Предлагаю Вам более осмысленную (и теоретически правильную) схему обновлений:
спасибо! Давно хотел спросить но стеснялся как-то. А можно это прикрепить в 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, потому два этих пакета одновременно установлены быть не могут. То есть это блокеры.
Пользуясь моментом, хочу передать привет друзьям, которые также пользуются "Моментом"