LINUX.ORG.RU

Не могу обновить glibc


0

0

Здравствуйте!

Я являюсь счастливым ;) обладателем Ubuntu 7.10 x86_64.

Предыстория такова: пытался я как-то обновиться до 8.04, но ничего у меня не вышло... После упорных копаний и исследований выяснилось: при попытке установить версию libc6 > 2.6 (а конкретно, 2.7 и 2.8) перестают работать практически все команды. Например, при вводе команды ls выдается такая ошибка: Код ls: relocation error: /lib/libpthread.so.0: symbol __vdso_clock_gettime, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

Некоторые другие команды выдают что-то вроде Segmentation fault (core dumped)

Что я пробовал делать: загружал разные версии ядра, в т.ч. собственноручно скомпиленные (от 2.6.22 до 2.6.26.5) - та же ошибка компилировал и устанавливал из исходников glibc-2.7 - та же ошибка При этом компиляция и установка из исходников версии glibc-2.6 не дает подобных ошибок.

Последняя моя попытка была установить новую версию пакета coreutils. однако это ни к чему не привело.

Мне кажется, что это баг glibc, однако я не уверен. Поэтому гуру линукса, обращаюсь к вам за помощью! Что такое GLIBC_PRIVATE и с чем его едят? Что значит подобная ошибка: Код relocation error: /lib/libpthread.so.0: symbol __vdso_clock_gettime, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

Куда копать/бежать?=) Как/куда писать баг-репорт?

P.S. Более подробное описание моих приключений можно найти здесь: http://forum.ubuntu.ru/index.php?topic=36746.0

★★★★☆

С glibc слинкованы практически все программы. Поэтому при обновлении glibc, соответственно, обновить надо и всё остальное.

> Теперь проблема: apt-get говорит, что у меня пакеты с ошибками, и при этом хочет удалить 113 пакетов (!), это почти всю систему. Как его "вылечить"?

Похоже, apt это и пытается сделать.

Jini ★★
()
Ответ на: комментарий от Jini

Как я уже писал, я пробовал ставить соответствующую версию coreutils, однако после установки libc6 возникала та же ошибка.

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Sahas

И еще. Наверное, разработчики дистрибутивов Ubuntu не совсем дураки? Вряд ли бы они стали сначала обновлять libc6, если бы предвидели такую ошибку... Здесь проблема в чем-то другом...

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Jini

>> С glibc слинкованы практически все программы. Поэтому при обновлении glibc, соответственно, обновить надо и всё остальное.

Новые версии glibc _ОБЯЗАНЫ_ быть совместимыми с более старыми версиями. Подозреваю что либо в убунте попалась кривая сборка, либо что-то у топикстартера в системе поломалось...

Deleted
()

А я ещё думал попробовать этот дистр...
Да ну вас на фиг. Попробуйте осилить Slackware!

UVV ★★★★★
()

Очевидно, что надо пересобирать всё, что дает такую ошибку с новой версией glibc.

Reset ★★★★★
()
Ответ на: комментарий от Deleted

Хм... Гугл говорит, что функция __vdso_clock_gettime появилась в glibc 2.7 и в 2.6 её небыло. Может топикстартер как-то криво обновляет и у него остаются куски от старой версии glibc в системе?

>> relocation error: /lib/libpthread.so.0: symbol __vdso_clock_gettime, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

Как-будто libpthread берётся от новой версии glibc, а libc от старой.

Deleted
()
Ответ на: комментарий от Reset

>> Очевидно, что надо пересобирать всё, что дает такую ошибку с новой версией glibc.

Очевидно, Ubuntu - не Gentoo.

Deleted
()
Ответ на: комментарий от Deleted

Я попробовал установить новую версию ls (от 8.04).
Для этого:
нашел, в каком пакете ls сидит (в coreutils)
Прошел по всем зависимостям coreutils (благо, их не так много - всего-то штук 10=)
Закачал себе все эти зависимости.
Единым духом установил все пакеты:
sudo dpkg -i libc6_2.7-10ubuntu3_amd64.deb coreutils_6.10-3ubuntu2_amd64.deb libselinux1_2.0.55-0ubuntu4_amd64.deb selinux-utils_2.0.55-0ubuntu4_amd64.deb libacl1_2.2.45-1_amd64.deb libattr1-dev_2.4.39-1_amd64.deb libgcc1_4.2.3-2ubuntu7_amd64.deb gcc-4.2-base_4.2.3-2ubuntu7_amd64.deb libattr1_2.4.39-1_amd64.deb
Установщик все установил (и даже не поругался)

Однако, при попытке ввести команду ls получаю ту же ошибку :(

Sahas ★★★★☆
() автор топика

вопрос - вам так горит поставить последнюю версию glibc для чего-то ?

Sylvia ★★★★★
()
Ответ на: комментарий от Sahas

>> Однако, при попытке ввести команду ls получаю ту же ошибку :(

И правильно. Можете пересобрать их с нуля и будет абсолютно тот же результат.

Вы случам не пытались поставить glibc вручную из исходников? Я уже выше написал, что похоже при обновлении у вас две версии glibc каким-то образом перемешиваются: часть обновляется, а часть остаётся от 2.6.

Deleted
()
Ответ на: комментарий от Deleted

2mironov_ivan: как я уже писал, вначале я просто пытался обновить убунту через менеджер обновлений. До этого момента я не делал с libc6 ничего. Потом (после того, как менеджер пакетов выпал с вышеописанной ошибкой), я, естественно, откатился до предыдущей версии libc6 (2.6), которую скачал с официального репозитория. После этого я пытался ставить libc6 версии 2.7 и 2.8 (их пакетов), но каждый раз с одной и той же ошибкой. После этого я действительно скомпилил glibc из исходников и поставил - с той же ошибкой. Восстанавливал все с помощью пакетов.

Здесь звучал вопрос: а нафиг оно мне надо? Так вот, отвечаю: а) хочется все-таки иметь возможность обновиться до более новой версии дистрибутива (зачем - объяснять не надо, надеюсь); б) хочется понять причину проблемы, и если это баг не мой - написать баг-репорт куда надо=)

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Deleted

>> Вы случам не пытались поставить glibc вручную из исходников? Я уже выше написал, что похоже при обновлении у вас две версии glibc каким-то образом перемешиваются: часть обновляется, а часть остаётся от 2.6.

А как определить, что откудова перемешалось и куда?

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Sahas

еще заметил, что почему-то ссылка /lib/libc.so.6 ссылается на какой-то странный файл /lib/libc6.2-2.so.3, вместо файла /lib/libc-2.6.1.so

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Jini

>Поэтому при обновлении glibc, соответственно, обновить надо и всё остальное.

4.2 для нормальных дистров.

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

>> А вообще должно помочь aptitude full-upgrade или aptitude install libc6 tzdata locales

Причем здесь tzdata и locales?
И почему должно помочь aptitude full-upgrade? Чем это отличается от apt-get dist-upgrade?

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Sahas

Всем спасибо, проблема решена.

Как оказалось, виноваты мои "кривые руки", но неявным образом... А весь фокус был в том, что в каталоге /lib откуда-то взялся файл libc6.2-2.so.3, на который ссылался libc.so.6 (вместо того, чтобы ссылаться на libc-2.6.1.so). И когда выполнялась команда ldconfig, то почему-то ссылка всегда перенаправлялась на libc6.2-2.so.3, даже когда устанавливался файл libc-2.7.so. Откуда взялся этот загадочный libc6.2-2.so.3 - неизвестно (я люблю устанавливать разные пакеты=)... а может, это вирус??? ;-)

Sahas ★★★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.