1

Пытаясь заставить некоторые рубиновые гемы работать, я обнаружил, что мне нужно установить пакет dev ruby, для которого, очевидно, требуется dev libc6. Когда я попытался установить его (используя утвержденные squeeze apt-sources), я обнаружил, что последняя версия libc6-dev не синхронизирована с моей текущей версией libc.
Оказывается, версия libc6, которую я должен использовать (согласно apt), должна быть libc6 2.11.3-2. Я вместо этого на libc6 2.13-7. В какой-то момент пользователь должен был использовать исходный код, чтобы что-то сделать, и он взял новую libc6.

У меня такой вопрос: если я хочу вернуться в соответствие с утвержденными версиями для моей ОС, мне нужно будет удалить libc6 и все его зависимые программы, а затем переустановить их через apt-get, или есть лучший способ сделать это ?

Я также обнаружил, что последняя версия libc6-dev несовместима с текущей версией gcc, которую я имею (4.4), поэтому продвижение вперед не будет возможным, если я не сделаю этого тоже.

РЕДАКТИРОВАТЬ: Решение, которое мы в конечном итоге использовали, состояло в том, чтобы использовать aptitude для загрузки файлов .deb, а затем использовать dpkg для их установки.

Например, перейдите в /var /cache /apt /archives (просто для того, чтобы хранить их в одном месте, apt-get их помещает)

выполнить следующее:

aptitude download libc6 -t squeeze
dpkg --force-depends -i <name of package>.deb

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

aptitude download libc-bin -t squeeze
dpkg --force-depends -i <name of package>.deb

2 ответа2

2

Согласно репозиторию пакетов Debian, Squeeze использует версию libc6 2.11.3-2.Поэтому, если у вас установлена более новая версия, вы, вероятно, отслеживаете Wheezy, Sid, какой-то другой неофициальный репозиторий или установили libc6 вручную. Проверьте ваш /etc/apt/sources.list и /etc/apt/sources.list.d/*

В любом случае вы можете установить желаемую версию с помощью Synaptic Package Manager. Откройте его, найдите пакет, выберите Package -> Force Version из меню. Там вы можете выбрать одну из версий, доступных в ваших настроенных источниках.

Редактировать:

У APT для этого есть консольная команда: apt-get install <package>=<version> Кроме того, вы также можете указать релиз Debian, который вы хотите использовать (связан с автоматическим пиннингом), если он есть в ваших исходниках, с помощью apt-get -t squeeze install <package> (или stable вместо squeeze), и здесь вы также можете использовать =<version> . Выполните все команды как root. После возврата из экспериментального в стабильный режим зависимости могут привести к путанице, поэтому вам, возможно, придется вручную понизить пакет, от которого зависит libc6, и, возможно, его зависимые элементы.

Вы также можете делать все вручную без проверки зависимостей (не рекомендуется, если вы не уверены, что делать в случае поломки ), сначала загрузив пакет с помощью apt-get download libc6 , а затем перейдите в /var/cache/apt/archives/ где APT хранит загруженные пакеты и выдает dpkg --force-downgrade -i <full_package_name>.deb качестве пользователя root. При вводе имени загруженного пакета введите libc6 затем используйте автозаполнение TAB, чтобы упростить его.

1

сортировка sources.list -> загрузка пакета и выполнение принудительного понижения работали для меня! после этого все, что мне нужно было сделать, это

apt-get -f install 

&&

apt-get autoremove

   

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .