[devel] [p11-release-mgmt] usrmerge action proposal
Arseny Maslennikov
arseny на altlinux.org
Вт Июл 4 16:11:37 MSK 2023
On Tue, Jul 04, 2023 at 04:09:40PM +0300, Arseny Maslennikov wrote:
> On Thu, Jun 22, 2023 at 02:35:37PM +0300, Arseny Maslennikov wrote:
> > Ждём ваших конструктивных ответов и встречных вопросов.
>
> Одним из самых трудоёмких изменений, если не самым, станет usrmerge.
> В следующем письме я предложу предварительный план действий.
Предварительный план действий, выработанный с учётом реалий нашей
пакетной системы, выглядит так:
1) Определить, что слиянию с аналогами внутри /usr подлежат:
/bin
/lib
/lib64
/libx32
/sbin
Надеюсь, я никого не забыл.
2) Тем или иным образом научить rpm создавать симлинк вида
/bin/x -> ../usr/bin/x
..., если в пакете существует /usr/bin/x и Provides: /bin/x.
Аналогично для всех каталогов из списка 1.
Таким образом, на переходном этапе будет не нужно указывать в %files
пакетов все эти симлинки, чтобы потом их убирать, и пакеты продолжат
удовлетворять зависимостям на такие файлы.
Важно, чтобы сначала удалялся старый путь, как обычно при установке
пакета, а симлинк возникал после этой фазы.
2.1) Бекпортировать поддержку в p10.
3) Подготовить пакет filesystem версии 3: поместить в нём файлтриггер,
который проверяет, не состоят ли каталоги из списка 1 целиком из
симлинков внутрь /usr, и превращает такой каталог с симлинками в симлинк
на каталог.
Сценарий файлтриггера должен будет давать предельно ясную информацию и
диагностические сообщения на стандартные потоки. Нужно будет либо
положиться на static coreutils, либо очень осторожно обращаться с
обычными и dynamic linker.
4) Этот пункт, видимо, потребует содействия мейнтейнеров.
Заменить макросы, использующие старые каталоги (%_udevrulesdir,
%_tmpfilesdir и другие), и пересобрать с ними пакеты, что-либо
помещающие в эти каталоги.
Приближённое число затрагиваемых бинарных пакетов:
% grep -E '^/(bin|lib[^/]*|sbin)/[a-z0-9_-]+' contents-index |
grep -vE '^/lib/(systemd|udev|sysusers.d|modules[^/]*|modprobe.d|security|tmpfiles.d)' | # exclude known places
cut -f2 -d$'\t' | grep -v '^/' | # exclude path provides
sort | uniq | wc -l
528
Оценка дана по x86_64 + noarch. Исходных, конечно, будет меньше.
При обновлении на эти пакеты будет действовать правило 2, поэтому их
содержимое будет доступно.
Некоторые пакеты, например, vim-common, сейчас упаковывают разные
файловые объекты в /bin и /usr/bin; другие пакеты ставят файлы прямо
в %buildroot/bin. Их потребуется исправить руками. (Справедливости ради,
многие из них и так стоит обновить)
5) Этот пункт вступает в действие на каждой машине индивидуально при
обновлении её пакетов.
Файлтриггер из пункта 3 обнаруживает, что можно ввести симлинки, и
делает это, завершая процесс usrmerge на данной системе.
----
На текущий момент непонятно:
— есть ли не обозначенные выше пакеты, требующие пристального внимания;
— нужен ли особый подход к системам, применяющим overlayfs вблизи
охваченных путей /* и /usr/*.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : signature.asc
Тип : application/pgp-signature
Размер : 833 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20230704/de942ee7/attachment-0001.bin>
Подробная информация о списке рассылки Devel