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

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

    <bug>
          <bug_id>30281</bug_id>
          
          <creation_ts>2014-09-04 03:00:14 +0400</creation_ts>
          <short_desc>Попытка выполнить chmod на ссылки, ведущие на файлы, недоступные для записи</short_desc>
          <delta_ts>2016-02-18 01:41:11 +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>node</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>30289</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vitaly Lipatov">lav</reporter>
          <assigned_to name="Vitaly Lipatov">lav</assigned_to>
          <cc>lav</cc>
    
    <cc>legion</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147552</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-09-04 03:00:14 +0400</bug_when>
    <thetext>Установка
$ npm install grunt-jsdos не проходит с такой ошибкой:

npm ERR! Error: EPERM, chmod &apos;/home/lav/.npm/_git-remotes/https-github-com-hegemonic-taffydb-git-386cf83c/hooks/applypatch-msg.sample&apos;
npm ERR!  { [Error: EPERM, chmod &apos;/home/lav/.npm/_git-remotes/https-github-com-hegemonic-taffydb-git-386cf83c/hooks/applypatch-msg.sample&apos;]
npm ERR!   stack: &apos;Error: EPERM, chmod \&apos;/home/lav/.npm/_git-remotes/https-github-com-hegemonic-taffydb-git-386cf83c/hooks/applypatch-msg.sample\&apos;&apos;,
npm ERR!   errno: 50,
npm ERR!   code: &apos;EPERM&apos;,
npm ERR!   path: &apos;/home/lav/.npm/_git-remotes/https-github-com-hegemonic-taffydb-git-386cf83c/hooks/applypatch-msg.sample&apos; }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147554</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-09-04 03:21:08 +0400</bug_when>
    <thetext>Причина в следующей функции
function addRemoteGit (u, parsed, name, silent, cb_) {
...
    checkGitDir(p, u, co, origUrl, silent, function(er, data) {
      chmodr(p, npm.modes.file, function(erChmod) {
        if (er) return cb(er, data)
        return cb(erChmod, data)
      })

где вызывает chmodr на все файлы git-каталога.
В ALTLinux hooks в репозитории создаются ссылками на файлы в /usr/share, и применение к ним chmodr вызывает ошибку доступа.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147561</commentid>
    <comment_count>2</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-09-04 12:48:06 +0400</bug_when>
    <thetext>Проблема вызвана ошибкой в chmodr (рекурсивный chmod), которая решила ходить по ссылкам, хотя не должна.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147565</commentid>
    <comment_count>3</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-09-04 14:29:11 +0400</bug_when>
    <thetext>Команда /bin/chmod ведёт себя более удобно:

$ mkdir /tmp/chsymlink
$ ln -s /bin/sh /tmp/chsymlink
$ chmod 644 /tmp/chsymlink/sh
chmod: изменение прав доступа для «/tmp/chsymlink/sh»: Операция не позволена

$ chmod -R 644 /tmp/chsymlink
chmod: невозможно получить доступ к «/tmp/chsymlink/sh»: Отказано в доступе

$ chmod -R 755 /tmp/chsymlink

$ chmod 755 /tmp/chsymlink/sh
chmod: изменение прав доступа для «/tmp/chsymlink/sh»: Операция не позволена</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148897</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2014-11-18 20:44:42 +0300</bug_when>
    <thetext>Тоже на это нарвался :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148900</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2014-11-19 01:31:48 +0300</bug_when>
    <thetext>Поднимаю Severity т.к. связанное с этим пакетом ПО можно собрать только в крайне специфичном чруте.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148919</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-11-19 20:05:19 +0300</bug_when>
    <thetext>В принципе, патч давно готов:
https://github.com/isaacs/chmodr/pull/5
но его что-то тормозят принимать, хотя мы исправили все замечания.

И есть ещё проблема с внешним libv8 не той версии, что надо:
https://bugzilla.altlinux.org/show_bug.cgi?id=30289
У нас проявляется при установке contextify, нужно для jsmod. Вот с этим что делать...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148922</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2014-11-19 20:21:55 +0300</bug_when>
    <thetext>(В ответ на комментарий №6)
&gt; В принципе, патч давно готов:
&gt; https://github.com/isaacs/chmodr/pull/5
&gt; но его что-то тормозят принимать, хотя мы исправили все замечания.

Это можно пока патчем тащить у нас.

&gt; И есть ещё проблема с внешним libv8 не той версии, что надо:
&gt; https://bugzilla.altlinux.org/show_bug.cgi?id=30289
&gt; У нас проявляется при установке contextify, нужно для jsmod. Вот с этим что
&gt; делать...

Я сегодня пытался обновить nodejs и наткнулся, что новый nodejs не собирается с libv8-3.24. В принципе его можно собрать с внутренней версией, но тут тонкий момент если nodejs будет собран с внутренней, а какой-либо из модулей слинкуется с чем-то из сизифа (некоторые модули несут биндинги к библиотекам).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148962</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2014-11-21 14:00:51 +0300</bug_when>
    <thetext>(В ответ на комментарий №6)
&gt; В принципе, патч давно готов:
&gt; https://github.com/isaacs/chmodr/pull/5
&gt; но его что-то тормозят принимать, хотя мы исправили все замечания.

Кстати, такая же проблема с chownr. И решение такое же.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148963</commentid>
    <comment_count>9</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-11-21 14:22:07 +0300</bug_when>
    <thetext>(В ответ на комментарий №8)
...
&gt; Кстати, такая же проблема с chownr. И решение такое же.
Да, она проявилась в новой версии npm. Делаем. Патчи приложу сюда.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148964</commentid>
    <comment_count>10</comment_count>
      <attachid>6178</attachid>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-11-21 15:32:45 +0300</bug_when>
    <thetext>Created attachment 6178
chmodr fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148965</commentid>
    <comment_count>11</comment_count>
      <attachid>6179</attachid>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-11-21 15:33:09 +0300</bug_when>
    <thetext>Created attachment 6179
chownr fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149011</commentid>
    <comment_count>12</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-11-26 13:44:29 +0300</bug_when>
    <thetext>А я пытался собрать nodejs 0.11.x, и столкнулся с тем, что несмотря на приложенные патчи, проблема повторяется (видимо, в другом месте?), а отладить не могу, потому что в новой версии перестали писаться логи.

Если же собирать стабильную 0.10.x, я вижу только выход собраться с внутренней libv8, потому что состыковаться с внешней очень проблематично, разработчики на другие версии не рассчитывали.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149012</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2014-11-26 13:54:35 +0300</bug_when>
    <thetext>(В ответ на комментарий №12)
&gt; А я пытался собрать nodejs 0.11.x, и столкнулся с тем, что несмотря на
&gt; приложенные патчи, проблема повторяется (видимо, в другом месте?), а отладить
&gt; не могу, потому что в новой версии перестали писаться логи.

Я столкнулся с иной проблемой: некоторые модули в зависимостях хотят npm той или
иной версии. В этом случае выкачивается апстримный баганутый и происходит падение
уже ниже.
Может у тебя подобная проблема вылезает ?

&gt; Если же собирать стабильную 0.10.x, я вижу только выход собраться с внутренней
&gt; libv8, потому что состыковаться с внешней очень проблематично, разработчики на
&gt; другие версии не рассчитывали.

Для себя я собственно так и сделал. Я тоже не вижу другого выхода.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149023</commentid>
    <comment_count>14</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-11-26 20:19:07 +0300</bug_when>
    <thetext>(В ответ на комментарий №13)
&gt; В этом случае выкачивается апстримный баганутый и происходит падение
Наверное, придётся публиковать в более приоритетном репозитории? Или может можно заставить наш git не создавать символьные ссылки в репозиториях, может это настраивается?

&gt; Может у тебя подобная проблема вылезает ?
Наверняка</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149025</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2014-11-26 20:41:01 +0300</bug_when>
    <thetext>(В ответ на комментарий №14)
&gt; Наверное, придётся публиковать в более приоритетном репозитории? Или может
&gt; можно заставить наш git не создавать символьные ссылки в репозиториях, может
&gt; это настраивается?

У нас в /usr/share/git-core/templates/hooks лежат симлинки. При клонировании весь каталог /usr/share/git-core/templates переносится в .git как есть. Об этом написано в git-init(1) в разделе &quot;TEMPLATE DIRECTORY&quot;. Если бы у нас там были файлы, то проблемы бы не возникало. НО они там правомерны.

Я не нашёл никаких настроек, чтобы копировать эти ссылки с разыменновыванием. Правда с точки зрения создателей git я не вижу в таких настройках большого смысла т.к. после клонирования есть возможность с делать с hooks что угодно.

Другое дело, что что-то сделать не даёт npm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149030</commentid>
    <comment_count>16</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-11-26 23:01:27 +0300</bug_when>
    <thetext>(В ответ на комментарий №15)
...
&gt; написано в git-init(1) в разделе &quot;TEMPLATE DIRECTORY&quot;. Если бы у нас там были
&gt; файлы, то проблемы бы не возникало. НО они там правомерны.
&gt; 
&gt; Я не нашёл никаких настроек, чтобы копировать эти ссылки с разыменновыванием.
Меня бы устроило GIT_TEMPLATE_DIR=/var/empty npm install
на первое время, но оно почему-то не срабатывает (хотя при GIT_TEMPLATE_DIR=/var/empty git init создаётся репозиторий без hooks).

А вот удаление ~/.npm/_git-remotes/*/hooks и повторный запуск npm install решает проблему.

&gt; Я столкнулся с иной проблемой: некоторые модули в зависимостях хотят npm той
Может быть это решается сборкой npm последней версии? Вообще как-то странно в модулях хотеть npm...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155100</commentid>
    <comment_count>17</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2016-02-18 01:41:11 +0300</bug_when>
    <thetext>В новом npm другой код, всё работает

* Вт фев 09 2016 Vitaly Lipatov &lt;lav@altlinux.ru&gt; 4.2.6-alt1
- 2016-01-21 Node.js v4.2.6 &quot;Argon&quot; (LTS) Release (ALT bug #30191)
- build with system openssl 1.0.2
- split doc subpackage</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6178</attachid>
            <date>2014-11-21 15:32:45 +0300</date>
            <delta_ts>2014-11-21 15:33:27 +0300</delta_ts>
            <desc>chmodr fix</desc>
            <filename>0001-skip-symlinks-as-bin-chmod-R-does.patch</filename>
            <type>text/plain</type>
            <size>1415</size>
            <attacher name="Vitaly Lipatov">lav</attacher>
            
              <data encoding="base64">RnJvbSBiMTcwZWM1YjRiYTQ2ZGE1ZDg5ZThkM2RhM2VmZjFlMzU0ZmM2YTY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBWbGFkaXNsYXYgQm9sc2hha292IDxiYXJiYXNzPgpEYXRlOiBG
cmksIDUgU2VwIDIwMTQgMTY6MTc6MzMgKzA0MDAKU3ViamVjdDogW1BBVENIIDEvMl0gc2tpcCBz
eW1saW5rcyBhcyAvYmluL2NobW9kIC1SIGRvZXMKVG86IHdpbmUtcGF0Y2hlcyA8d2luZS1wYXRj
aGVzQHdpbmVocS5vcmc+ClJlcGx5LVRvOiB3aW5lLWRldmVsIDx3aW5lLWRldmVsQHdpbmVocS5v
cmc+CgotLS0KIGNobW9kci5qcyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs
IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY2htb2RyLmpz
IGIvY2htb2RyLmpzCmluZGV4IDllZGFhN2YuLjYxMzQ1M2IgMTAwNjQ0Ci0tLSBhL2NobW9kci5q
cworKysgYi9jaG1vZHIuanMKQEAgLTE4LDcgKzE4LDE1IEBAIGZ1bmN0aW9uIGNobW9kciAocCwg
bW9kZSwgY2IpIHsKICAgICB2YXIgbGVuID0gY2hpbGRyZW4ubGVuZ3RoCiAgICAgdmFyIGVyclN0
YXRlID0gbnVsbAogICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7Ci0gICAg
ICBjaG1vZHIocGF0aC5yZXNvbHZlKHAsIGNoaWxkKSwgbW9kZSwgdGhlbikKKyAgICAgIHZhciBw
YXRoX2NoaWxkID0gcGF0aC5yZXNvbHZlKHAsIGNoaWxkKTsKKyAgICAgIGZzLmxzdGF0KHBhdGhf
Y2hpbGQsIGZ1bmN0aW9uKGVyLCBzdGF0cykgeworICAgICAgICBpZiAoZXIpCisgICAgICAgICAg
cmV0dXJuIGNiKGVyKQorICAgICAgICBpZiAoIXN0YXRzLmlzU3ltYm9saWNMaW5rKCkpCisgICAg
ICAgICAgY2htb2RyKHBhdGhfY2hpbGQsIG1vZGUsIHRoZW4pCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICB0aGVuKCkKKyAgICAgIH0pCiAgICAgfSkKICAgICBmdW5jdGlvbiB0aGVuIChlcikgewog
ICAgICAgaWYgKGVyclN0YXRlKSByZXR1cm4KQEAgLTM5LDcgKzQ3LDEwIEBAIGZ1bmN0aW9uIGNo
bW9kclN5bmMgKHAsIG1vZGUpIHsKICAgaWYgKCFjaGlsZHJlbi5sZW5ndGgpIHJldHVybiBmcy5j
aG1vZFN5bmMocCwgZGlyTW9kZShtb2RlKSkKIAogICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9u
IChjaGlsZCkgewotICAgIGNobW9kclN5bmMocGF0aC5yZXNvbHZlKHAsIGNoaWxkKSwgbW9kZSkK
KyAgICB2YXIgcGF0aF9jaGlsZCA9IHBhdGgucmVzb2x2ZShwLCBjaGlsZCkKKyAgICB2YXIgc3Rh
dHMgPSBmcy5sc3RhdFN5bmMocGF0aF9jaGlsZCkKKyAgICBpZiAoIXN0YXRzLmlzU3ltYm9saWNM
aW5rKCkpCisgICAgICBjaG1vZHJTeW5jKHBhdGhfY2hpbGQsIG1vZGUpCiAgIH0pCiAgIHJldHVy
biBmcy5jaG1vZFN5bmMocCwgZGlyTW9kZShtb2RlKSkKIH0KLS0gCjIuMS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6179</attachid>
            <date>2014-11-21 15:33:09 +0300</date>
            <delta_ts>2014-11-21 15:33:54 +0300</delta_ts>
            <desc>chownr fix</desc>
            <filename>0002-skip-symlinks-as-bin-chown-R-does.patch</filename>
            <type>text/plain</type>
            <size>1321</size>
            <attacher name="Vitaly Lipatov">lav</attacher>
            
              <data encoding="base64">RnJvbSAyMDQ5NTJjY2MzMjlmY2RjNmYwZTY3ZjczMGE5ZTJlMWU0ODIzOTEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBWbGFkaXNsYXYgQm9sc2hha292IDxiYXJiYXNzPgpEYXRlOiBU
aHUsIDIwIE5vdiAyMDE0IDE3OjU0OjIyICswMzAwClN1YmplY3Q6IFtQQVRDSCAyLzRdIHNraXAg
c3ltbGluawoKLS0tCiBjaG93bnIuanMgfCAxNSArKysrKysrKysrKysrLS0KIDEgZmlsZSBjaGFu
Z2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Nob3du
ci5qcyBiL2Nob3duci5qcwppbmRleCA1OThiOGY4Li45NjkwODVkIDEwMDY0NAotLS0gYS9jaG93
bnIuanMKKysrIGIvY2hvd25yLmpzCkBAIC0xNCw3ICsxNCwxNSBAQCBmdW5jdGlvbiBjaG93bnIg
KHAsIHVpZCwgZ2lkLCBjYikgewogICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGgKICAgICAs
IGVyclN0YXRlID0gbnVsbAogICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7
Ci0gICAgICBjaG93bnIocGF0aC5yZXNvbHZlKHAsIGNoaWxkKSwgdWlkLCBnaWQsIHRoZW4pCisg
ICAgICB2YXIgcGF0aF9jaGlsZCA9IHBhdGgucmVzb2x2ZShwLCBjaGlsZCk7CisgICAgICBmcy5s
c3RhdChwYXRoX2NoaWxkLCBmdW5jdGlvbihlciwgc3RhdHMpIHsKKyAgICAgICAgaWYgKGVyKQor
ICAgICAgICAgIHJldHVybiBjYihlcikKKyAgICAgICAgaWYgKCFzdGF0cy5pc1N5bWJvbGljTGlu
aygpKQorICAgICAgICAgIGNob3ducihwYXRoX2NoaWxkLCB1aWQsIGdpZCwgdGhlbikKKyAgICAg
ICAgZWxzZQorICAgICAgICAgIHRoZW4oKQorICAgICAgICB9KQogICAgIH0pCiAgICAgZnVuY3Rp
b24gdGhlbiAoZXIpIHsKICAgICAgIGlmIChlcnJTdGF0ZSkgcmV0dXJuCkBAIC0zNSw3ICs0Mywx
MCBAQCBmdW5jdGlvbiBjaG93bnJTeW5jIChwLCB1aWQsIGdpZCkgewogICBpZiAoIWNoaWxkcmVu
Lmxlbmd0aCkgcmV0dXJuIGZzLmNob3duU3luYyhwLCB1aWQsIGdpZCkKIAogICBjaGlsZHJlbi5m
b3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewotICAgIGNob3duclN5bmMocGF0aC5yZXNvbHZlKHAs
IGNoaWxkKSwgdWlkLCBnaWQpCisgICAgdmFyIHBhdGhfY2hpbGQgPSBwYXRoLnJlc29sdmUocCwg
Y2hpbGQpCisgICAgdmFyIHN0YXRzID0gZnMubHN0YXRTeW5jKHBhdGhfY2hpbGQpCisgICAgaWYg
KCFzdGF0cy5pc1N5bWJvbGljTGluaygpKQorICAgICAgY2hvd25yU3luYyhwYXRoX2NoaWxkLCB1
aWQsIGdpZCkKICAgfSkKICAgcmV0dXJuIGZzLmNob3duU3luYyhwLCB1aWQsIGdpZCkKIH0KLS0g
CjEuOC41LjUKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>