Автор Тема: Репозитории. Как узнать версию пакета?  (Прочитано 7124 раз)

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 636
  • Дмитрий/Dmitry/德米特里/दिमित्री
Добрый день! Можно ли как-то без установки системы узнать какая версия определённого пакета в нём (репозитории) находится? Т.е. до какой именно версии обновится этот пакет, если систему установить и обновить?
« Последнее редактирование: 15.05.2020 19:56:28 от gosts 87 »

Оффлайн Александр Ерещенко

  • Завсегдатай
  • *
  • Сообщений: 1 161
Поиском на https://packages.altlinux.org/  выбрав нужную ветку и архитектуру.

Еще как вариант, загрузиться с Live-образа, раскомментировать соответствующие строки в одном из файлов /etc/apt/sources.list.d/*, потом apt-get update и далее смотреть то, что нужно, напр. через apt-get show имя_пакета.
В этом случае можно даже и "пощупать", установив нужный пакет, если хватит той же оперативки для работы в live-варианте.

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 636
  • Дмитрий/Dmitry/德米特里/दिमित्री
Большое Спасибо!:-)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 926
    • Домашняя страница
    • Email
apt-cache show имя_пакета
Андрей Черепанов (cas@)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Можно ли как-то без установки системы узнать какая версия определённого пакета в нём (репозитории) находится? Т.е. до какой именно версии обновится этот пакет, если систему установить и обновить?

Можно.

Для инсталляционного образа:

Сохраняем список rpm пакетов инсталляционного образа в файл
$ isoinfo -lRJ -i /path/alt-p8-sysv-xfce-20190312-x86_64.iso | awk '{print $NF}' | grep rpm$ > iso-pkgs.txt

Через консольный браузер elinks (он один из самых быстрых) заходим на сервер по путям (справа) и сохраняем опцией Save formatted document в файлы (слева)
$ grep 'Index of' p8-{x86_64,x86_64-i586,noarch}.txt
p8-x86_64.txt:                                         Index of /pub/distributions/ALTLinux/p8/branch/x86_64/RPMS.classic/
p8-x86_64-i586.txt:                                       Index of /pub/distributions/ALTLinux/p8/branch/x86_64-i586/RPMS.classic/
p8-noarch.txt:                                         Index of /pub/distributions/ALTLinux/p8/branch/noarch/RPMS.classic/

Затем одной командой загоняем из всех трёх файлов, все имена rpm пакетов, с сортировкой и с заменой %2B%2B на ++ в один файл
$ grep http: p8-{x86_64,x86_64-i586,noarch}.txt | awk -F '/' '{print $NF}' | sed 's/%2B%2B/++/g' | sort > p8-pkgs.txt

Далее смотрим в файле iso-pkgs.txt интересующий нас пакет в образе, а в файле p8-pkgs.txt ищем этот пакет командой, а также с использованием хоткеев n, Shift+n (вперёд, назад по найденному в списке соотвественно).
Например ищем командой пакет kernel-image-std-def:
$ less -p kernel-image-std-def p8-pkgs.txt


Теоретически можно было бы оставить в p8-pkgs.txt только те пакеты, которые имеются в интересующем образе, но это нужно через скрипт в цикле.
Проблема вот в чём:
- Поля в полном имени rpm файла разделены минусом.
- Имя пакета может состоять из двух-трёх слов разделённых минусом.

Поэтому чтобы выделить имя пакета, поля в rpm файле нужно читать не слева-направо, а справа-налево:
 имя-версия-релиз-архитектура.rpm
Тогда в остатке остаётся имя пакета, вне зависимости от того сколько минусов оно содержит.
Это само по себе означает, что без скрипта с циклом с построчным чтением и без команды rev (реверс) не обойтись.


Но в принципе можно обойтись и без скрипта, указав для grep полное имя пакета для поиска в файле списка пакетов в образе и в файле списке пакетов репозитория, - в выводе можно будет сравнить версии пакетов, - того который в образе и того который в репозитории, без инсталляции и без запуска интересующей системы:
$ grep kernel-image-std-def iso-pkgs.txt p8-pkgs.txt
iso-pkgs.txt:kernel-image-std-def-4.9.161-alt0.M80P.1.x86_64.rpm
p8-pkgs.txt:kernel-image-std-def-4.9.223-alt0.M80P.1.x86_64.rpm

Этот последний выброс показывает что в репозитории ядро свежее чем в инсталляционном образе.

Здесь p8 выбран как пример и всё это применимо к любому инсталл-образ / репозиторий.
Все официальные образы альта находящиеся на ftp-сервере, уже содержат список rpm пакетов в образе.


Для лайва подобный фарш тоже можно провернуть, но вам много проще будет загрузиться в лайв и погрепать версию-релиз, так же, как это делается и в установленной системе, - вверху в репозитории, внизу в запущеном лайве:
# apt-get update
# apt-cache show firefox-esr | grep ^Version
Version: 68.8.0-alt1:p9+251193.100.1.1@1588698516
Version: 68.5.0-alt1:p9+245948.100.2.1@1581701077
« Последнее редактирование: 16.05.2020 18:30:52 от Speccyfighter »

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 636
  • Дмитрий/Dmitry/德米特里/दिमित्री
Всем Большое Спасибо! Воспользовался способом указанным в первом ответе.;-)

Оффлайн sfs

  • Давно тут
  • **
  • Сообщений: 84
А как вывести все установленные из указанного репозитория пакеты?
Что-то стандартное есть? Или мутить скрипт вокруг rpm -qa + apt-cache policy...
С 1.1.2024 на Alt из патриотических соображений. Мой репо

Оффлайн sfs

  • Давно тут
  • **
  • Сообщений: 84
Намутил:
apt-cache policy `rpm -qa --queryformat "%{NAME}\n"` |grep -EB5 'pkglist$' \
|grep -E '[a-z1-9]:$| pkglist$' |sed  ':a;N;$!ba;s/:\n/ /g' |awk '! /^ / {print $1" "$4}' |grep "/autoimports$"
В последнем grep заменить "autoimports" на нужную репу
Не идеально, но узнал какие у меня пакеты из autoimports

И сразу возник другой вопрос:
apt-cache policy показал у autoimports и classic однинаковый приоритет : 500
Причем autoimports выше. В /etc/apt/preferences пусто
Это значит, что совсем нестабильный autoimports у меня приоритетней или я неправильно понял
С 1.1.2024 на Alt из патриотических соображений. Мой репо

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 636
  • Дмитрий/Dmitry/德米特里/दिमित्री
Это значит, что совсем нестабильный autoimports у меня приоритетней или я неправильно понял
Обычно, Autoimports и Autoports подключают только для установки пакетов, а после этого отключают, как-раз из-за их нестабильности. В эти репозитории пакеты собираются роботом и не проверяются на работоспособность вообще никем, кроме пользователей, которые эти пакеты установят.

Оффлайн sfs

  • Давно тут
  • **
  • Сообщений: 84
autoimports у меня приоритетней
Т.е. это у меня получается так?
И кстати, а как найти пакет в Autoimports не подключая репу?  Здесь https://packages.altlinux.org нет
Только лезть браузером в http://ftp.altlinux.ru/pub/distributions/ALTLinux/autoimports/Sisyphus/ или можно как-то поудобней из консоли?
Есть в Autoimports пакеты , одинаковые по названию с  classic ?
С 1.1.2024 на Alt из патриотических соображений. Мой репо

Оффлайн gosts 87

  • Завсегдатай
  • *
  • Сообщений: 2 636
  • Дмитрий/Dmitry/德米特里/दिमित्री
И кстати, а как найти пакет в Autoimports не подключая репу?
Не подключая репу, похоже, только так:
Только лезть браузером в http://ftp.altlinux.ru/pub/distributions/ALTLinux/autoimports/Sisyphus/
Есть в Autoimports пакеты , одинаковые по названию с  classic ?
Бывает. Главное, чтобы они были разными по версиям и КС.
Но, обычно в Autoimports помещают пакеты, которые не сильно нужны в "classic"
Вот, как пример:
https://packages.altlinux.org/ru/search/?branch=p10&q=fcitx
Часть пакетов этой утилиты собрана в стабильный репозиторий, а кое-какие пакеты собраны и помещены в Autoimports.
« Последнее редактирование: 11.03.2024 18:35:05 от gosts 87 »