[devel] hasher: пакеты, установленные по зависимостям

Alexey Gladkov legion на altlinux.ru
Вс Окт 27 15:42:37 MSK 2024


On Sun, Oct 27, 2024 at 03:35:04PM +0300, Антон Мидюков wrote:
> > Но меня всё ещё кое-что смущает. В install_pkgs оказывается изначальный
> > список пакетов плюс виртуальные provides. Там не будет пакетов, которые
> > выберет apt для этих виртуальных пакетов. Например в изначальном списке
> > есть xvt, но будет xterm, который обычно вытягивается. После `rpm -q` мы
> > уберём виртуальное имя xvt т.к. это не настоящее имя пакета.
> > 
> > Получается, что после comm xterm, который установится по xvt будет помечен
> > auto, а это не то, что ты хочешь, кажется.
> > 
> > В install_pkgs необходимо добавить те пакеты, которые будут выбраны
> > apt'ом.
> > 
> 
> Нет, в install_pkgs будет xterm, а xvt не будет.
> Если xvt предоставляется несколькими пакетами, то все они попадут в install_pkgs.
> xterm помечается, как manual. Я проверил.
> --whatprovides заменяет виртуальные пакеты реальными.

Ааа. Теперь ясно.

Тогда предлагаю что-нибудь типа вот такого:

diff --git a/tools/mki-install b/tools/mki-install
index 8c8cad3..dba877e 100755
--- a/tools/mki-install
+++ b/tools/mki-install
@@ -19,3 +19,32 @@ hasher_args="$verbose $quiet ${HSH_EXCLUDE_DOCS:+--excludedocs} ${HSH_NUMBER:+--

 mki_list_pkgs "$@" |
        xargs -r env -i PATH="$PATH" hsh-install $hasher_args -- "$dir"
+
+# shellcheck disable=SC2249
+[ -z "${PROG##*-image-*}" ] ||
+       exit 0
+
+hsh-run --rooter -- "$dir" which apt-mark >/dev/null 2>&1 ||
+       exit 0
+
+tempdir=
+exit_handler() {
+       local rc=$?
+       trap - EXIT
+       [ -z "$tempdir" ] || rm -rf -- "$tempdir"
+       exit $rc
+}
+
+trap exit_handler HUP INT QUIT TERM EXIT
+tempdir="$(mktemp -d "$dir/$PROG.XXXXXX")"
+
+export LC_ALL=C LANG=C LANGUAGE=C
+
+mki-expand-pkgs regexp "$@" |
+       xargs -r hsh-run --rooter -- "$dir" rpm -q --whatprovides --qf='%{NAME}\n' |
+       sort -uo "$tempdir/install_pkgs"
+
+hsh-run --rooter -- "$dir" rpm -q --all --qf='%{NAME}\n' |
+       sort -u |
+       comm -23 - "$tempdir/install_pkgs" |
+       xargs -r hsh-run --rooter -- "$dir" apt-mark auto

-- 
Rgrds, legion



Подробная информация о списке рассылки Devel