Можно ли как-то без установки системы узнать какая версия определённого пакета в нём (репозитории) находится? Т.е. до какой именно версии обновится этот пакет, если систему установить и обновить?
Можно.
Для инсталляционного образа:
Сохраняем список 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