[devel] hasher: пакеты, установленные по зависимостям
Антон Мидюков
midyukov-anton на ya.ru
Сб Окт 26 16:03:47 MSK 2024
26.10.2024 15:36, Ivan A. Melnikov пишет:
> On Sat, Oct 26, 2024 at 02:04:47PM GMT, Alexey Gladkov wrote:
>> 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'
>
> Нельзя ли попробовать "развиртуализировать" пакеты уже внутри
> хешера, при выполнении apt-mark?
>
> # apt-mark manual $(rpm -q --whatprovides xvt webclient)
>
> Тут будет немного лишнего если в chroot попали несколько
> провайдеров, но я думаю это не страшно.
>
Нам нужно пометить пакеты установленные автоматически. В hasher все пакеты помечены как manual.
То есть задача обратная.
Повторюсь, что для решения задачи достаточно поместить в список пакетов, установленных вручную, вместе с виртуальными пакетами все пакеты, которые их предоставляют.
--
С уважением, Антон Мидюков <antohami на altlinux.org>
Подробная информация о списке рассылки Devel