LINUX.ORG.RU

Специалистам по aptitude: он игнорирует параметр %V. Как починить?

 , steaoms


0

1

Когда я только становил SteamOS, я не мог просто взять и подключить репозиторий Debian 7.0 и устанавливать из него программы, например плеер VLC. Выяснялось что какая-то из 50 зависимостей VLC хочет, например, libpng12 = 1.2.10, а в системе = 1.2.10+bsos6. В новых релизах SteamOS совместимость с репозиторием Debian повышают, но проблема ещё встречается.

Откуда эта проблема? В SteamOS 908 пакетов: 779 перенесены из Debian без изменений, и 129 изменены или добавлены новые. Разработчикам SteamOS надо было в /etc/apt/sources.list прописать репозиторий Debian и 779 пакетов установить оттуда. А те 129 пакетов, которые были изменены или добавлены, положить в отдельный репозиторий, идущий вторым в списке sources.list. Ведь так все DEB-based линуксы и делают! Но нет: 779 не изменившихся пакетов получили незначительное изменение версии. А именно прибавлен «+bsos6».

Что я хочу сделать. А я хочу мегакоманду для превращения SteamOS в Debian 7.0 (за исключением изменившихся пакетов: ядро, MESA, GRUB2-EFI и так далее). Ну то есть «apt-get install» и 779 пакетов. Я создам тему на форуме SteamOS, чтобы все могли сделать SteamOS гораздо более юзабельным одним скриптом: можно будет взять и установить в него KDE, и менеджер пакетов не заругается на поломанные зависимости. Пока что у меня есть наоборот, мегакоманда для превращения Debian в SteamOS, вот она.

Что я уже сделал. Я нашёл мануалку и выполнил команду:

aptitude -q -F "%?p=%?V %M" --disable-columns search \~i > grep list.txt

Она дала мне список всех установленных пакетов в таком формате:

libkmod2=9-3+bsos6 
libkms1=2.4.40-1~deb7u2+bsos3 
libkpathsea6=2012.20120628-4+bsos7 A
libkrb5-3=1.10.1+dfsg-5+deb7u1+bsos8 
libkrb5-3:i386=1.10.1+dfsg-5+deb7u1+bsos8 
libkrb5support0=1.10.1+dfsg-5+deb7u1+bsos8 
libkrb5support0:i386=1.10.1+dfsg-5+deb7u1+bsos8 
liblapack3=3.4.1+dfsg-1+deb70u1+bsos5 
liblcms1=1.19.dfsg-1.2+bsos6 A
liblcms2-2=2.2+git20110628-2.2+bsos6 
libldap-2.4-2=2.4.31-1+nmu2+bsos6 
liblightdm-gobject-1-0=1.2.2-4+steamos2+bsos1 
liblircclient0=0.9.0~pre1-1 A
libllvm3.3=1:3.3-12+bsos1 A
libllvm3.3:i386=1:3.3-12+bsos1 A
liblocale-gettext-perl=1.05-7+bsos6 
liblqr-1-0=0.4.1-2+bsos6 
libltdl7=2.4.2-1.1+bsos9 

Фильтруем по слову SteamOS, чтобы получить список изменённых пакетов:

cat list.txt | grep steam > list-2.txt

Выше я уже давал ссылку на то что отфильтровалось.

Теперь мне надо отключить репозиторий SteamOS, оставить репозиторий Debian, сделать «sudo apt-get update» и повторить первую команду! И она бы мне показала другие номера версий. Но что-то пошло не так. Вывод остался таким же! И вот тут мне понадобилась ваша помощь.

Что пробовал делать. Взял мануалку 2. Выяснил почему ошибка: оказывается параметр %V показывает последнюю версию пакета из репозитория, как я и хочу. Но в системе установлена более новая версия пакета, и параметр проигнорировался. Поменял в команде %?V на %?v не помогло. Взял мануалку 3, а из неё %?n, не помогло.

★★★★★

Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

М-да. Похоже, я уже совсем не соображаю и надо идти спать. Надеюсь что за ночь мне кто-нибудь напишет то, как заставить aptitude сразу выдать мне то что я хочу.

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

О, спасибо. А не знаешь как заставить консоль написать «acpi»? Оказывается «cat acpi» ищет файл с таким названием.

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

http://paste.org.ru/?9fe5zd

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

6. Обычно APT-утилиты запрашивают самую новую версию пакета из всех, что находятся в его кэше, поэтому если ты добавил в sources.list различные экспериментальные и unstable-репозитории, то после обновления получишь дистрибутив, состоящий исключительно из экспериментальных или unstable-пакетов, и кучу проблем, вызванных таким положением дел. Однако ситуация легко разруливается с помощью помещения в /etc/apt/apt.conf следующей строки:

APT::Default-Release «релиз»;

Где релиз - это oldstable, stable, unstable, testing или experimental для Debian или имя релиза для Ubuntu. Теперь, в случае необходимости установить пакет из указанного дистрибутива, просто пропиши его имя после аргумента '-t' при вызове apt-get:

$ sudo apt-get -t unstable install пакет

ZenitharChampion ★★★★★
() автор топика
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

Не помогло. Ну что ж, использую последний результат и удалю 900 строчек руками. Дело получаса.

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