Bug 49808

Summary: /sbin/ifup is a broken symlink to /etc on merged-usr
Product: Sisyphus Reporter: Arseny Maslennikov <arseny>
Component: etcnetAssignee: Mikhail Efremov <sem>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: blocker    
Priority: P5 CC: aen, iv, ldv, rider, sem, shaba, vseleznv
Version: unstable   
Hardware: x86_64   
OS: Linux   
Bug Depends on:    
Bug Blocks: 46738    

Description Arseny Maslennikov 2024-03-26 23:24:40 MSK
После апгрейда на filesystem 3 симлинк /sbin/ifup (и другие подобные программы из комплекта etcnet) будет разрешён системой так:
* /;
* /sbin -> (прошли по /sbin -> usr/sbin) -> /usr/sbin;
* /usr/sbin/ifup -> (прошли по ifup -> ../etc/net/scripts/ifup) -> /usr/etc/net/scripts/ifup.
Мягко говоря, не туда.

При беглом взгляде на спек и исходники стало понятно, что автоматически пакет к этому не умеет адаптироваться.
https://git.altlinux.org/gears/e/etcnet.git?p=etcnet.git;a=blob;f=contrib/Makefile;h=d8a9e8a802fc6d8f6a85f984986054562e97d965;hb=fb324ab82056623754ece69ae21eba4e7c82f7e0#l84
Содержимое относительного симлинка не вычисляют, а просто хардкодят.

Прошу исправить упаковку так, как будет удобно разработчикам проекта etcnet.
Comment 1 Arseny Maslennikov 2024-03-26 23:25:04 MSK
(In reply to Arseny Maslennikov from comment #0)
> Прошу исправить упаковку так, как будет удобно разработчикам проекта etcnet.

 Вариантов, как именно это сделать, может быть много, но файл contrib/Makefile выглядит неудачным: `$(prefix)` там — это никакой не prefix, от балды используется где-то `$(etcnetdir)`, а где-то явно etc/net. Класть опакеченные программы под /etc тем более давно пора перестать.

Я бы на месте разработчиков воспользовался поводом и сделал бы программы в /sbin самостоятельными (пусть даже они вызывали бы поначалу ещё не переложенный файл из /etc/net/scripts), но это не единственное решение текущей баги.
Comment 2 AEN 2024-03-29 15:36:00 MSK
Блокер p11 в части usrmerge
Comment 3 Mikhail Efremov 2024-04-02 20:49:47 MSK
(In reply to Arseny Maslennikov from comment #1)
> (In reply to Arseny Maslennikov from comment #0)
> > Прошу исправить упаковку так, как будет удобно разработчикам проекта etcnet.
> 
>  Вариантов, как именно это сделать, может быть много, но файл
> contrib/Makefile выглядит неудачным: `$(prefix)` там — это никакой не
> prefix, от балды используется где-то `$(etcnetdir)`, а где-то явно etc/net.

Там prefix - это на самом деле destdir, в остальном бардака в общем-то нет: etcnetdir - это $prefix/etc/net/, а etc/net - это вообще путь в дереве исходников.

> Класть опакеченные программы под /etc тем более давно пора перестать.

Сейчас мне точно не хочется делать серьезные изменения в etcnet, это надо делать аккуратно и вдумчиво. Для решения проблемы с filesystem3 мне бы хотелось как раз обойтись минимум изменений.
Но что-то мне все варианты, которые я попробовал, не нравятся.
Склоняюсь к мысли, что на время перехода проще всего сделать симлинк абсолютным, а потом просто изменить на относительный в /usr/sbin/.

> Я бы на месте разработчиков воспользовался поводом и сделал бы программы в
> /sbin самостоятельными (пусть даже они вызывали бы поначалу ещё не
> переложенный файл из /etc/net/scripts), но это не единственное решение
> текущей баги.

Если там будет просто
exec /etc/net/scripts/что-то 
то это ничем не лучше абсолютного симлинка.
Comment 4 Arseny Maslennikov 2024-04-02 22:08:44 MSK
(In reply to Mikhail Efremov from comment #3)
> (In reply to Arseny Maslennikov from comment #1)
> > (In reply to Arseny Maslennikov from comment #0)
> > > Прошу исправить упаковку так, как будет удобно разработчикам проекта etcnet.
> > 
> >  Вариантов, как именно это сделать, может быть много, но файл
> > contrib/Makefile выглядит неудачным: `$(prefix)` там — это никакой не
> > prefix, от балды используется где-то `$(etcnetdir)`, а где-то явно etc/net.
> 
> Там prefix - это на самом деле destdir, в остальном бардака в общем-то нет:
> etcnetdir - это $prefix/etc/net/, а etc/net - это вообще путь в дереве
> исходников.
> 
> > Класть опакеченные программы под /etc тем более давно пора перестать.
> 
> Сейчас мне точно не хочется делать серьезные изменения в etcnet, это надо
> делать аккуратно и вдумчиво. Для решения проблемы с filesystem3 мне бы
> хотелось как раз обойтись минимум изменений.

Ладно. Ни на чём не настаиваю. :)

> Но что-то мне все варианты, которые я попробовал, не нравятся.
> Склоняюсь к мысли, что на время перехода проще всего сделать симлинк
> абсолютным, а потом просто изменить на относительный в /usr/sbin/.

А готова ли к абсолютным симлинкам программа usrmerge-hier-convert? Вроде бы да, но, если пойдём этим путём, нужно будет проверить ещё раз.

Да и не факт, что получится упаковать абсолютный симлинк, я никогда этого не делал, а в bug 49857 это не получилось.
Comment 5 Mikhail Efremov 2024-04-03 18:29:32 MSK
[#344295] TESTED etcnet.git=0.9.30-alt1

Можно потестировать перед коммитом в Сизиф.
Comment 6 Repository Robot 2024-04-05 18:05:01 MSK
etcnet-0.9.30-alt1 -> sisyphus:

 Wed Apr 03 2024 Mikhail Efremov <sem@altlinux> 0.9.30-alt1
 - build: Temporary use absolute symlinks for scripts (closes: #49808).
 - build: Don't hardcode relative symlinks.