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

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

    <bug>
          <bug_id>10382</bug_id>
          
          <creation_ts>2006-12-09 02:14:51 +0300</creation_ts>
          <short_desc>Изменить значение %_localstatedir на /var</short_desc>
          <delta_ts>2017-11-20 15:06:43 +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>rpm-build</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>32554</dependson>
          <blocked>34083</blocked>
    
    <blocked>8885</blocked>
    
    <blocked>28363</blocked>
    
    <blocked>30940</blocked>
    
    <blocked>33151</blocked>
    
    <blocked>33275</blocked>
    
    <blocked>34023</blocked>
    
    <blocked>34025</blocked>
    
    <blocked>34042</blocked>
    
    <blocked>34043</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vitaly Lipatov">lav</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>aen</cc>
    
    <cc>arseny</cc>
    
    <cc>asy</cc>
    
    <cc>evg</cc>
    
    <cc>glebfm</cc>
    
    <cc>ildar</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>n3npq</cc>
    
    <cc>placeholder</cc>
    
    <cc>radik</cc>
    
    <cc>rt</cc>
    
    <cc>shakirov</cc>
    
    <cc>snejok</cc>
    
    <cc>viy</cc>
    
    <cc>vt</cc>
    
    <cc>vvk</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42868</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2006-12-09 02:14:51 +0300</bug_when>
    <thetext>Насколько я понимаю, макрос %configure
вызывает ./configure в частности с параметром --localstatedir=/var/lib
При этом все проекты, которые я встречал, используя localstatedir,
предполагают что он указывает на /var. Тут же вылезают /var/lib/lib
и прочее.
Нельзя ли прояснить ситуацию и указать кто прав и как лучше?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42875</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2006-12-09 14:38:26 +0300</bug_when>
    <thetext>В нативном RPM и в FC было:
%_localstatedir %{_prefix}/var
В MDK было:
%_localstatedir %{_var}/lib

Вероятно, у нас %_localstatedir унаследован от MDK.
Не представляю себе, что будет если его поменять.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42891</commentid>
    <comment_count>2</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2006-12-09 22:16:12 +0300</bug_when>
    <thetext>Надо что-то делать, зачем эта несовместимость на ровном месте?
Особенно мне интересно как же мантейнеры справляются с этим?
Сколько мы с народом потратили времени, прежде чем в sane выявили все 
проблемы, связанные с несоответствием путей...
Хотя конечно в случае с sane это пошло на пользу, но пока что приходится 
добавлять к
%configure --localstatedir=%_var
что не очень красиво.
Быть может запланируем что-то &quot;на после фриза&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42895</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Rahmatullin">wrar</who>
    <bug_when>2006-12-10 01:43:10 +0300</bug_when>
    <thetext>(In reply to comment #2)
&gt; Особенно мне интересно как же мантейнеры справляются с этим?
В bluez-utils сначала было никак (#8885), потом пришёл я и сделал configure --
localstatedir=/var и %makeinstall --localstatedir=/var</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42896</commentid>
    <comment_count>4</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2006-12-10 12:02:29 +0300</bug_when>
    <thetext>Пока что я вижу что данная бага достойна быть повешенной.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59618</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2007-12-16 03:48:21 +0300</bug_when>
    <thetext>1) а что сейчас в mdv?
2) наверное, можно по крайней мере грепнуть все наши спеки про %_localstatedir и
по крайней мере оценить масштабы subst? (во многих моих встречается)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114531</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2010-10-30 22:27:10 +0400</bug_when>
    <thetext>Дима, держись:

rpm-4.8.0-14.fc13: %_localstatedir         %{_prefix}/var
rpm-4.6.0-6mnb2: %_localstatedir         %{_prefix}/var</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114695</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2010-11-02 01:28:54 +0300</bug_when>
    <thetext>(In reply to comment #6)
&gt; Дима, держись:
&gt; 
&gt; rpm-4.8.0-14.fc13: %_localstatedir         %{_prefix}/var
&gt; rpm-4.6.0-6mnb2: %_localstatedir         %{_prefix}/var

%{_prefix}/var это /usr/var?  Бред какой-то, они просто делают %_localstatedir бесмыссленным.

Раз вопрос совместимости с FC/MDK отпадает, значение %_localstatedir останется прежним.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114744</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2010-11-02 20:49:38 +0300</bug_when>
    <thetext>Сам обалдел, но кстати, на подручной F10 /usr/var/ _не_ наблюдаю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115333</commentid>
    <comment_count>9</comment_count>
    <who name="Lenar Shakirov">shakirov</who>
    <bug_when>2010-11-15 15:17:44 +0300</bug_when>
    <thetext>Простите что встреваю, но:

$ cat /etc/fedora-release
Fedora release 13 (Goddard)

$ rpm -q rpm
rpm-4.8.0-14.fc13.i686

$ rpm --eval %_localstatedir
/var

Это на Fedora-13-i686-Live-LXDE.iso</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128062</commentid>
    <comment_count>10</comment_count>
    <who name="Jeff Johnson">n3npq</who>
    <bug_when>2012-01-03 03:45:08 +0400</bug_when>
    <thetext>tracked at https://bugs.launchpad.net/rpm/+bug/911046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137990</commentid>
    <comment_count>11</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2013-02-18 21:00:11 +0400</bug_when>
    <thetext>Я бы всё же к p7 поменял значение _localstatedir.
Может быть также заодно можно выбрать (рекомендовать) другой макрос, обозначающий каталог, где можно располагать изменяемые данные (например, задействовать _sharedstatedir). Мне кажется, всё упирается в то, какой параметр поддерживает autotools.

Кстати, в Mandriva (смотрел 2012) уже опять
_localstatedir	/var</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150179</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey Alembekov">rt</who>
    <bug_when>2015-02-12 13:45:37 +0300</bug_when>
    <thetext>Офигеть, насколько бага древняя.
Пытаюсь собрать ganeti на p7 и ловлю всякие /var/lib/lib и /var/lib/run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150180</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2015-02-12 13:59:52 +0300</bug_when>
    <thetext>1) http://packages.altlinux.org/ganeti;
2) %define _localstatedir %_var, как вариант...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158049</commentid>
    <comment_count>14</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2016-08-12 03:18:37 +0300</bug_when>
    <thetext>Нельзя уж так-то индифферентно.
Давайте уже примем волевое решение и поменяем.

Во всех случаях, когда используется %configure (то есть значение %_localstatedir может передаваться неявно), и значение --localstatedir реально используется при создании файлов, в пакете либо бага, либо мантейнер явно указал значение %_localstatedir.

Перечень пакетов, которые точно пострадают, наверняка можно определить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161610</commentid>
    <comment_count>15</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-01-30 20:50:40 +0300</bug_when>
    <thetext>(In reply to comment #14)
&gt; Перечень пакетов, которые точно пострадают, наверняка можно определить.

а я починю пострадавшие пакеты.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161614</commentid>
    <comment_count>16</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2017-01-31 01:23:12 +0300</bug_when>
    <thetext>Предварительная реализация была добавлена в rpm-build-intro:
* Вт авг 23 2016 Vitaly Lipatov &lt;lav@altlinux.ru&gt; 1.9.9-alt1
- add _localstatedir = /var to rpm-build-intro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161617</commentid>
    <comment_count>17</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2017-01-31 11:45:15 +0300</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; Перечень пакетов, которые точно пострадают, наверняка можно определить.
&gt; 
&gt; а я починю пострадавшие пакеты.

Не почините, потому что не обнаружите.

Предлагаю тогда запретить использование макроса _localstatedir, сделав любую попытку его использования фатальной ошибкой.  Только в этом случае вы сможете обнаружить и исправить 100% случаев.

А ещё лучше просто оставить как есть.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161619</commentid>
    <comment_count>18</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-01-31 12:00:18 +0300</bug_when>
    <thetext>&gt; (In reply to comment #15)
&gt; Не почините, потому что не обнаружите.

Гм? либо пакет не соберется, либо упакованный /var
изменится. Достаточно пересобрать пакеты с /var,
таких у нас 843 шт.

&gt; А ещё лучше просто оставить как есть.

С энтропией надо бороться.
Конечно, я не призвываю прямо сейчас,
сначала желательно существенно проредить
ряды непересобирающихся пакетов
(еще один пример накопившейся энтропии).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161621</commentid>
    <comment_count>19</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2017-01-31 12:55:31 +0300</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; (In reply to comment #15)
&gt; &gt; Не почините, потому что не обнаружите.
&gt; 
&gt; Гм? либо пакет не соберется, либо упакованный /var
&gt; изменится.

Зашьётся в исходный код и будет неправильно работать.
Узнаем лишь тогда, когда кто-нибудь не поленится отрепортить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161622</commentid>
    <comment_count>20</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-01-31 13:11:54 +0300</bug_when>
    <thetext>(In reply to comment #19)
&gt; Зашьётся в исходный код и будет неправильно работать.
Последний случай оттестирован во всех других дистрибутивах.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161623</commentid>
    <comment_count>21</comment_count>
    <who name="Lenar Shakirov">snejok</who>
    <bug_when>2017-01-31 13:39:24 +0300</bug_when>
    <thetext>(В ответ на комментарий №19)
&gt; Зашьётся в исходный код и будет неправильно работать.
&gt; Узнаем лишь тогда, когда кто-нибудь не поленится отрепортить.

Обычно исходный код сразу не работает у нас:
http://git.altlinux.org/gears/s/supervisor.git?p=supervisor.git;a=commitdiff;h=768f1ac6c6ddc52183bdb78f915982492dc78684

Не работало еще с 2013го года:
http://git.altlinux.org/gears/s/supervisor.git?p=supervisor.git;a=blob;f=supervisor.spec;h=27741c71807e9f1d37e1fdba286283a97d71a068;hb=665588624a3b3808f9072fab26436281aff43445

Эта бага набила оскомину.

На мой взгляд проще один раз починить что сломалось после унификации макроса %_localstatedir, чем помнить об особенности %_localstatedir при случаях:
* упаковки нового софта (постоянно спотыкаюсь на эту &quot;особенность&quot; альта)
* при изменении спека (ловил себя на этом)
* помнить об особенности %_localstatedir при просмотре изменений содержимого пакета после сборки</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161625</commentid>
    <comment_count>22</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2017-01-31 13:49:45 +0300</bug_when>
    <thetext>Объясните мне, почему вы считаете, что %_localstatedir лучше, чем /var?

(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; Зашьётся в исходный код и будет неправильно работать.
&gt; Последний случай оттестирован во всех других дистрибутивах.

Это не так, у нас с ними разная пакетная база.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161626</commentid>
    <comment_count>23</comment_count>
    <who name="Lenar Shakirov">snejok</who>
    <bug_when>2017-01-31 14:00:03 +0300</bug_when>
    <thetext>(В ответ на комментарий №22)
&gt; Объясните мне, почему вы считаете, что %_localstatedir лучше, чем /var?

Если вопрос ко мне, то я не считаю что лучше/хуже.
Суть баги с моей колокольни: уберите лишний костыль,
отнимающий время у мейнтейнеров (время на исправление этого макроса в спеке, если берем его как пример из другого дистрибутива)
и у пользователей (баги, порождаемые различием этого макроса)

Удобство ALT в его крутой сборочной системе, но баги вроде этой все омрачают

&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; Зашьётся в исходный код и будет неправильно работать.
&gt; &gt; Последний случай оттестирован во всех других дистрибутивах.
&gt; 
&gt; Это не так, у нас с ними разная пакетная база.

Многие пакеты из других дистров (Fedora) легко собираются на ALT,
один из пунктов добавляющий работу мейнтейнеру и проблем в пакеты - текущая бага.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161627</commentid>
    <comment_count>24</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2017-01-31 14:02:13 +0300</bug_when>
    <thetext>(В ответ на комментарий №19)
...
&gt; Зашьётся в исходный код и будет неправильно работать.
&gt; Узнаем лишь тогда, когда кто-нибудь не поленится отрепортить.
если мы меняем значение с /var/lib на /var, это приведёт к тому, что пакеты станут создавать каталоги прямо в /var. Но нет никакой проблемы запретить упаковку левых каталогов в /var, как я понимаю.


Комментарий #1 от Dmitry V. Levin 2006-12-09 14:38:26 (-) [ответить]
&gt; Не представляю себе, что будет если его поменять.
Я надеюсь, что 10 лет — достаточно большой срок, чтобы либо представить, либо не беспокоиться об этом.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161628</commentid>
    <comment_count>25</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-01-31 14:04:39 +0300</bug_when>
    <thetext>(In reply to comment #22)
&gt; Объясните мне, почему вы считаете, что %_localstatedir лучше, чем /var?

Буквально вчера столкнулся на примере libprelude.
Чтобы не писать
%configure --localstatedir=/var
Соберу ее сегодня с хаком
%define _localstatedir /var

 
&gt; Это не так, у нас с ними разная пакетная база.
90%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161629</commentid>
    <comment_count>26</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2017-01-31 14:11:51 +0300</bug_when>
    <thetext>(В ответ на комментарий №22)
&gt; Объясните мне, почему вы считаете, что %_localstatedir лучше, чем /var?
_localstatedir передаётся макросом %configure в ./configure --localstatedir=
Если бы этого не было, все бы давно забыли про этот изначально дефективный localstatedir.

Так что вопрос в том, что ожидает autotools (все, использующие его) в качестве @localstatedir@.

По сути обсуждать тут нечего: есть значение, которое ожидается, и это /var, так исторически сложилось. 

Можно сделать %_statedir = /var/state, передавать его как ./configure --statedir=%_statedir. Но предварительно добавить эту поддержку в autotools.
Но это ничего не изменит, потому что все проекты вручную прибавляют lib к /var, и хранят свои каталоги в этом странном месте /var/lib, не имеющем к библиотекам никакого отношения.

И хотелось бы либо поменять исполнителя баги, либо услышать его голос.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161630</commentid>
    <comment_count>27</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2017-01-31 14:12:28 +0300</bug_when>
    <thetext>(В ответ на комментарий №25)
&gt; (In reply to comment #22)
&gt; &gt; Объясните мне, почему вы считаете, что %_localstatedir лучше, чем /var?
&gt; 
&gt; Буквально вчера столкнулся на примере libprelude.
&gt; Чтобы не писать
&gt; %configure --localstatedir=/var
&gt; Соберу ее сегодня с хаком
&gt; %define _localstatedir /var
Как насчёт BuildRequires: rpm-build-intro
?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161635</commentid>
    <comment_count>28</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-01-31 14:35:21 +0300</bug_when>
    <thetext>(In reply to comment #27)
&gt; Как насчёт BuildRequires: rpm-build-intro ?
я роботом, возможны конфликты с rpm-macros-*-compat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161638</commentid>
    <comment_count>29</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2017-01-31 15:47:32 +0300</bug_when>
    <thetext>(In reply to comment #26)
&gt; И хотелось бы либо поменять исполнителя баги, либо услышать его голос.

Я против изменения значения макроса после ~20 лет использования.
Я понимаю, что импортировать федорные пакеты проще, если макрос будет иметь то значение, которое сейчас в федоре.
Но при этом мне очень не нравится идея ломать обратную совместимость в неопределённом множестве пакетов.
При том, что сейчас в Сизифе не пересобирается примерно 5.5% исходных пакетов, мы даже проверить толком ничего не можем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161641</commentid>
    <comment_count>30</comment_count>
    <who name="viy">viy</who>
    <bug_when>2017-01-31 16:12:02 +0300</bug_when>
    <thetext>(In reply to comment #29)
&gt; При том, что сейчас в Сизифе не пересобирается примерно 5.5% исходных пакетов,
&gt; мы даже проверить толком ничего не можем.

Да, конечно, эти пакеты надо починить.
Я сейчас как раз пытаюсь выявить неактивных
майнтайнеров, чтобы перевесить на @nobody
и починить роботом.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161673</commentid>
    <comment_count>31</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2017-02-01 22:14:54 +0300</bug_when>
    <thetext>(В ответ на комментарий №29)
&gt; Но при этом мне очень не нравится идея ломать обратную совместимость в
&gt; неопределённом множестве пакетов.
&gt; При том, что сейчас в Сизифе не пересобирается примерно 5.5% исходных пакетов,
&gt; мы даже проверить толком ничего не можем.
То есть после приведения сизифа в относительный порядок ты не против возвращения к этой баге, правильно понимаю?  К сожалению, &quot;лишние&quot; форки и впрямь напрягают.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161699</commentid>
    <comment_count>32</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2017-02-03 11:09:53 +0300</bug_when>
    <thetext>А известна статистика, этот макрос вообще используется?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166246</commentid>
    <comment_count>33</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2017-10-09 14:45:32 +0300</bug_when>
    <thetext>(In reply to comment #26)

&gt; По сути обсуждать тут нечего: есть значение, которое ожидается,
&gt; и это /var, так исторически сложилось. 

Вопрос - где. У меня вот локально пересобранная quagga не перезапустилась сейчас. Начал разбираться и увидел, что /var/lib поменялся на /var.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166540</commentid>
    <comment_count>34</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2017-10-25 01:42:29 +0300</bug_when>
    <thetext>Нынешнее значение %_localstatedir просуществовало с момента создания ALT и не будет изменено в обозримом будущем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166686</commentid>
    <comment_count>35</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2017-10-28 13:32:35 +0300</bug_when>
    <thetext>(В ответ на комментарий №34)
&gt; Нынешнее значение %_localstatedir просуществовало с момента создания ALT и не
&gt; будет изменено в обозримом будущем.
Альтернативное мнение в виде
%_localstatedir /var
(каковое значение ожидает ./configure из autotools)
упаковано в пакете rpm-macros-intro-conflicts для тех, кому дорога́ совместимость.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>