From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sun, 27 Oct 2024 13:25:56 +0100 From: Alexey Gladkov To: ALT Linux Team development discussions Message-ID: References: <725768c8-4a6d-4f9c-bdc1-63eb2504c637@ya.ru> <2e33h5lcjdxhdzq4yaug6vgpukeh3sa2ojl7ayqmsgtjjtrh2m@4peizswylqwk> <434caebc-6235-4ec6-89b0-2b4d91ee5da1@ya.ru> <2dce7ba0-9217-4dc9-a84c-f894a4025ec8@ya.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <2dce7ba0-9217-4dc9-a84c-f894a4025ec8@ya.ru> Subject: Re: [devel] =?utf-8?b?aGFzaGVyOiDQv9Cw0LrQtdGC0YssINGD0YHRgtCw0L0=?= =?utf-8?b?0L7QstC70LXQvdC90YvQtSDQv9C+INC30LDQstC40YHQuNC80L7RgdGC0Y8=?= =?utf-8?b?0Lw=?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Oct 2024 12:25:58 -0000 Archived-At: List-Archive: List-Post: On Sun, Oct 27, 2024 at 02:32:34PM +0300, Антон Мидюков wrote: > 27.10.2024 14:26, Alexey Gladkov пишет: > > On Sat, Oct 26, 2024 at 07:01:15PM +0200, Alexey Gladkov wrote: > >> On Sat, Oct 26, 2024 at 05:19:50PM +0300, Антон Мидюков wrote: > >>>>>>> Затем получить командой > >>>>>>> comm -23 all_pkgs install_pkgs > >>>>>>> > >>>>>>> список пакетов, которые нужно пометить, как установленные автоматически. > >>>>>>> То есть вычитаем из всех пакетов пакеты, установленные вручную. > >>>>>>> Загвоздка в том, чтобы получить адекватный список install_pkgs. > >>>>>>> Думаю, что всё же можно заменить виртуальные пакеты в этом списке набором пакетов, предоставляющих их. > >>>>>>> Избыточность (наличие пакетов, которые не устанавливаются) в этом списке не является проблемой. > >>>>>> > >>>>>> Я пока не знаю хорошего способа как получить список выбранных пакетов. > >>>>>> Приходит в голову что-то такое: > >>>>>> > >>>>>> aptbox/apt-get -s install webclient xvt | > >>>>>> sed -n -r -e 's#^Selecting ([^ ]+) for .*#\1#p' > >>>>> > >>>>> Нельзя ли попробовать "развиртуализировать" пакеты уже внутри > >>>>> хешера, при выполнении apt-mark? > >>>>> > >>>>> # apt-mark manual $(rpm -q --whatprovides xvt webclient) > >>>>> > >>>>> Тут будет немного лишнего если в chroot попали несколько > >>>>> провайдеров, но я думаю это не страшно. > >>>>> > >>>> > >>>> Нам нужно пометить пакеты установленные автоматически. В hasher все пакеты помечены как manual. > >>>> То есть задача обратная. > >>>> Повторюсь, что для решения задачи достаточно поместить в список пакетов, установленных вручную, вместе с виртуальными пакетами все пакеты, которые их предоставляют. > >>>> > >>> > >>> Но идея с развиртуализацией работает. Спасибо! > >>> > >>> У меня получился такой код: > >>> > >>> diff --git a/tools/mki-install b/tools/mki-install > >>> index 8c8cad3..ac23f76 100755 > >>> --- a/tools/mki-install > >>> +++ b/tools/mki-install > >>> @@ -19,3 +19,12 @@ hasher_args="$verbose $quiet ${HSH_EXCLUDE_DOCS:+--excludedocs} ${HSH_NUMBER:+-- > >> > >> Тут не хватает некоторого количества проверок )) > >> > >>> mki_list_pkgs "$@" | > >>> xargs -r env -i PATH="$PATH" hsh-install $hasher_args -- "$dir" > >>> + > >>> +hsh-run --rooter -- "$dir" rpm -q apt || exit 0 > >>> +hsh-run --rooter -- "$dir" rpm -q --whatprovides --queryformat "%{NAME}\n" \ > >> > >> Зачем нужен --whatprovides ? > >> > >> У нас же после `mki-expand-pkgs regexp` уже список пакетов бинарных и > >> виртуальных. Когда мы делаем `rpmquery --qf='%{name}\n'` ровно те же имена > >> пакетов, если это пакеты. > > > > А, ясно. Это установленные пакеты + виртуальные. > > > >>> + $(mki-expand-pkgs regexp $(mki_list_pkgs "$@")) | > >>> + sort -u > "$TMP"/install_pkgs > >>> +hsh-run --rooter -- "$dir" rpm -qa --queryformat "%{NAME}\n" | > >>> + sort -u > "$TMP"/all_pkgs > >>> +hsh-run --rooter -- "$dir" apt-mark auto \ > >>> + $(comm -23 "$TMP"/all_pkgs "$TMP"/install_pkgs) > >> > >> Не проще будет после установки пакетов не сделать auto всем, а потом > >> manual установленным ? > >> > >> Подход более топорный, но в этом случае не нужно заморачиваться с all_pkgs > >> и comm. > > > > Да, ваш вариант хорош. > > > > У меня вопрос. Нормально эти временные списки в $TMP создавать? Или есть более подходящее место? Я даже написал патч, которые как раз добавляет проверки и создание временных файлов, но потом у меня появились ещё вопросы к самому этому подходу. Я в параллельном письме их задал. -- Rgrds, legion