From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sat, 26 Oct 2024 14:04:47 +0200 From: Alexey Gladkov To: ALT Linux Team development discussions Message-ID: References: <34298628-8915-4a7e-9818-e68d59145fec@ya.ru> <075d24dd-1a2b-450e-8efe-9b615eb214d5@ya.ru> <725768c8-4a6d-4f9c-bdc1-63eb2504c637@ya.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <725768c8-4a6d-4f9c-bdc1-63eb2504c637@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: Sat, 26 Oct 2024 12:04:49 -0000 Archived-At: List-Archive: List-Post: On Fri, Oct 25, 2024 at 06:23:43PM +0300, Антон Мидюков wrote: > >>>> И всё равно остаётся проблема виртуальных пакетов, которых нет в репозитории в виде rpm. > >>>> Пакета, который устанавливается по этому провайдсу, не будет во входном списке. > >>> > >>> Можно попробовать сделать аналог mki-expand-pkgs и проверять по > >>> "$aptbox/var/cache/pkgnames" все имена из списка. Это должно отфильтровать > >>> виртуальные пакеты. > >>> > >> > >> Виртуальные пакеты нужно не отфильтровать, а заменить на те, что будут выбраны при установке. > >> Чтобы их не пометило как auto. > > > > Я не знал этого. Я не до конца понимаю задачу. > > > > Задача сделать apt-mark auto для пакетов, которые установились по зависимостям. > Для этого я полагаю получить: > - список пакетов, которые устанавливаются вручную (install_pkgs) Даже этот шаг уже сложная задача. У mkimage есть список с регулярные выражения и список пакетов включая виртуальные пакеты. Тут мы их никак не разворачиваем. Мы можем только регэкспы развернуть. То есть у mkimage нет чистого (без виртуальных) списка пакетов. > - список пакетов установленных в hasher (all_pkgs) Если я правильно понял суть этого списка, то это как раз /.in/.rpmi-install.list. Если нужны именно установленные, то его тоже можно получить. > Затем получить командой > comm -23 all_pkgs install_pkgs > > список пакетов, которые нужно пометить, как установленные автоматически. > То есть вычитаем из всех пакетов пакеты, установленные вручную. > Загвоздка в том, чтобы получить адекватный список install_pkgs. > Думаю, что всё же можно заменить виртуальные пакеты в этом списке набором пакетов, предоставляющих их. > Избыточность (наличие пакетов, которые не устанавливаются) в этом списке не является проблемой. Я пока не знаю хорошего способа как получить список выбранных пакетов. Приходит в голову что-то такое: aptbox/apt-get -s install webclient xvt | sed -n -r -e 's#^Selecting ([^ ]+) for .*#\1#p' Если брать пакеты по одному, то можно понять во что развернётся webclient, но этот подход займёт вечность. Если брать пакеты скопом, то реальные пакеты мы узнаем, но виртуальные пакеты останутся в списке. Возможно, стоит принять то, что в списке есть виртуальные пакеты и проверять имена пакетов перед apt-mark. Например так: xargs -r rpmquery --qf='%{name}\n' < install_with_virtual_pkgs 2>/dev/null | xargs -r apt-mark manual То есть моя текущая идея состоит в том чтобы: 1. В mki-image-install сохранить список пакетов и развернуть регулярные выражения. 2. Пройтись по этому списку и добавить в него пакеты, которые выбирает apt для виртуальных пакетов. Имена виртуальных пакетов всё ещё там и мы не знаем эти имена. 3. После hsh-install мы берём дополненный список и, фильтруя имена, используем для apt-mark. > > Кажется можно сделать обёртку вокруг hsh-install и сохранять > > /.in/.rpmi-install.list , который он создаёт. Таким образом получится > > суммировать xargs. Насколько это хакерство с точки зрения hasher я не > > знаю. > > > > А что в этом списке? Надеюсь, не все пакеты для установки? Я ошибся. Этот список получается уже после print_uris то есть после получения зависимостей. -- Rgrds, legion