Когда я только становил 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, не помогло.