<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>32358</bug_id>
          
          <creation_ts>2016-08-04 17:16:32 +0300</creation_ts>
          <short_desc>миграция на symlinks /var/run -&gt; /run, /var/lock -&gt; /run/lock</short_desc>
          <delta_ts>2024-11-09 06:11:58 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>filesystem</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32364</blocked>
    
    <blocked>32444</blocked>
    
    <blocked>32642</blocked>
    
    <blocked>32659</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shabalin">shaba</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>evg</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>iv</cc>
    
    <cc>lav</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
    
    <cc>mike</cc>
    
    <cc>placeholder</cc>
    
    <cc>sem</cc>
    
    <cc>shaba</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>157963</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2016-08-04 17:16:32 +0300</bug_when>
    <thetext>День добрый.
Хотелось бы осуществить миграцию на симлинки /var/run -&gt; /run, /var/lock -&gt; /run/lock, вместо &quot;mount -o bind&quot;.

Эти симлинки могут создаваться из tmpfiles (/var/run в /lib/tmpfiles.d/var.conf, /var/lock в /lib/tmpfiles.d/legacy.conf) и под systemd и под sysV.
Наличие этих директорий мешает созданию симлинков.

PS: как правильно удалить эти директории и точки монтирования(мигрировать) - я не знаю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158331</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-08-29 02:58:02 +0300</bug_when>
    <thetext>Если думать в этом напрвалении, мне сейчас подумалось, что лучше миграцию осуществить каким-то одноразовым скриптом во время загрузки (вот как раз в тот момент, когда эти все монтирования возводится).

А в пакет положить ghost-symlink. После того, как скрипт сработает, он будет пакету принадлежать.

Что должен делать стартовый миграционный скрипт?

1. (необязательно) переместить то, что есть в ... /run/? ну это всё скорее и не нужно, потому что там ничего ценного нет. По смыслу похоже на одноразовую работу tmpfiles .
2. удалить директорию /var/run и создать такой симлинк.

ну и всё, очень простой скрипт на самом деле. Одноразовасть даже не принципиальна. 

У меня ещё возник такой гипотетический вопрос: а как rpm отнесётся к конфликтам по файлам один из которых заявлен как /run/a, а другой /var/run/a . Поймёт ли, что это кнфликт, или как-то тихо перепишет?

(А вообще rpm же не зачем класть файлы в /run/ , они временные. Т.е. таких ситуаций быть не должно. Можно запретить такие пакеты, если ещё не запрещено.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158341</commentid>
    <comment_count>2</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-08-30 13:16:03 +0300</bug_when>
    <thetext>Только в этой схеме со стартовым скриптом, который будет делать эту ссылку, я не подумал о тех, кто ставится с нуля: у них сразу после установки пакета оно должно работать.

Наверное, для этого нужен похожий %post-скрипт. Нет, скорее %pre, потому что во время исполнения %post могли поставиться другие пакеты и положить что-то внутрь /var/run/, тем самым создав директорию, которая будет опять мешаться при создании симлинка %post-скриптом.

Однако, filesystem такой базовый пакет, который ставится на начальном этапе инсталляции. Не уверен, что %pre-скрипты смогут сработать в таком окружении.

Так что у меня пока нет окончательной идеи, как делать такую миграцию.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159668</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan Zakharyaschev">imz</who>
    <bug_when>2016-11-01 20:39:30 +0300</bug_when>
    <thetext>sem@ сделал такое замечание про копирование всего подряд из /var/run/ в /run/ в работающей системе: в /var/run/ может лежать старый несипользуемый мусор, который перепишет/начнёт использоваться из /run/ .

Также sem@ у себя сделал запись в /etc/fstab про  bind-монтирование /run/ в /var/run/ и испытал проблемы от того, что это происходит слшком поздно при закгрузке (с SysV init). Что-то ценное в /var/run/ скрывается.

Возникла ещё такая идея миграции:

кладём в пакет filesystem symlink, а в preinstall-скрипте перемещаем старый /var/run в какой-нибудь /var/run.rpmsave.XXXXXX (т.к. glebfm@ заметил, что у людей могут лежат какие-то ценнные файлы там), а в postinstall-скрипте делаем mount -o bind /var/run.rpmsave.XXXXXX /var/run (если это можно поверх симлинка).

В работающей системе всё останется по-прежнему, а после перезагрузки будет уже виден симлинк.

Есть ли замечания? Может, попробовать такой сценарий реализовать?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159915</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Efremov">sem</who>
    <bug_when>2016-11-15 19:27:57 +0300</bug_when>
    <thetext>(In reply to comment #3)
&gt; Также sem@ у себя сделал запись в /etc/fstab про  bind-монтирование /run/ в
&gt; /var/run/ и испытал проблемы от того, что это происходит слшком поздно при
&gt; закгрузке (с SysV init). Что-то ценное в /var/run/ скрывается.

При ближайшем рассмотрении это не так, у меня /var монтируется строчкой выше в том же fstab. Я вообще не понимаю почему возникают проблемы, похоже это где-то в районе NetworkManager/wpa_supplicant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171097</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2018-05-16 14:09:16 +0300</bug_when>
    <thetext>- реализовать в rpm-пакете эту миграцию не получится. Ни в %pre ни в %post пакета filesystem.
- для существующих инсталяций сделать эту миграцию надо на раннем этапе загрузки единоразово.
- Как совместить это с новыми инсталяциями?

Я пока вижу два варианта:
1) в initrd, как например в fedora
https://git.kernel.org/pub/scm/boot/dracut/dracut.git/tree/modules.d/30convertfs/convertfs.sh#n22
2) с помощью tmpfiles
в /lib/tmpfiles.d/legacy.conf
L /var/lock - - - - ../run/lock
заменить на
L+ /var/lock - - - - ../run/lock

А в /lib/tmpfiles.d/var.conf
L /var/run - - - - ../run
заменить на 
L+ /var/run - - - - ../run

L+ означает удалить файл или директорию и создать симлинк.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171098</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2018-05-16 14:42:31 +0300</bug_when>
    <thetext>К сожалению, эксперимент с L+ в tmpfiles закончился неудачно.
Так что остаётся только один способ мигрировать - в initrd.
Как оставить существующие системы жить по-старому (с mount -o bind), а новые установки на симлинках я не знаю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193692</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2020-11-01 18:20:23 +0300</bug_when>
    <thetext>Написал на коленке рекомендации напролом: http://altlinux.org/переход_на_/run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193694</commentid>
    <comment_count>8</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2020-11-01 21:10:14 +0300</bug_when>
    <thetext>(Ответ для Michael Shigorin на комментарий #7)
&gt; Написал на коленке рекомендации напролом: http://altlinux.org/переход_на_/run

Набор команд называется скриптом,и его лучше разместить в пакете в репозитории, а не на вики.
Никто же не думает, что можно напечатать 10 одинаковых команд с экрана и не ошибиться?

Делать сложные post-скрипты неправильно, логика должна быть в отдельном скрипте, который бы и вызывался в нужный момент.

(Ответ для Ivan Zakharyaschev на комментарий #1)
...
&gt; (А вообще rpm же не зачем класть файлы в /run/ , они временные. Т.е. таких
&gt; ситуаций быть не должно. Можно запретить такие пакеты, если ещё не
&gt; запрещено.)
Я насчитал 169 пакетов, которые что-то кладут в /var/run, и 12 пакетов, которые кладут что-то в /run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193696</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2020-11-01 21:38:56 +0300</bug_when>
    <thetext>(Ответ для Vitaly Lipatov на комментарий #8)
&gt; Набор команд называется скриптом, и его лучше разместить в пакете
&gt; в репозитории, а не на вики.
Разумеется, но для начала лучше обсудить в баге, разместив на вики. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225524</commentid>
    <comment_count>10</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2023-05-05 16:17:32 +0300</bug_when>
    <thetext>Ничего не обсудили, не решили и все так и живут без миграции или уже всё давно хорошо и бага неактуальна?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225539</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2023-05-05 22:11:38 +0300</bug_when>
    <thetext>(Ответ для Vitaly Lipatov на комментарий #10)
&gt; Ничего не обсудили, не решили и все так и живут без миграции или уже всё
&gt; давно хорошо и бага неактуальна?

Новые инсталяции с симлинками, в старых остается постарому, миграция не делается.
На этом и успокоились.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>