Summary: | Попытка выполнить chmod на ссылки, ведущие на файлы, недоступные для записи | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Vitaly Lipatov <lav> | ||||||
Component: | node | Assignee: | Vitaly Lipatov <lav> | ||||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||
Severity: | blocker | ||||||||
Priority: | P3 | CC: | lav, legion | ||||||
Version: | unstable | ||||||||
Hardware: | all | ||||||||
OS: | Linux | ||||||||
Bug Depends on: | |||||||||
Bug Blocks: | 30289 | ||||||||
Attachments: |
|
Description
Vitaly Lipatov
2014-09-04 03:00:14 MSK
Причина в следующей функции 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 вызывает ошибку доступа. Проблема вызвана ошибкой в chmodr (рекурсивный chmod), которая решила ходить по ссылкам, хотя не должна. Команда /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»: Операция не позволена Тоже на это нарвался :( Поднимаю Severity т.к. связанное с этим пакетом ПО можно собрать только в крайне специфичном чруте. В принципе, патч давно готов: https://github.com/isaacs/chmodr/pull/5 но его что-то тормозят принимать, хотя мы исправили все замечания. И есть ещё проблема с внешним libv8 не той версии, что надо: https://bugzilla.altlinux.org/show_bug.cgi?id=30289 У нас проявляется при установке contextify, нужно для jsmod. Вот с этим что делать... (В ответ на комментарий №6) > В принципе, патч давно готов: > https://github.com/isaacs/chmodr/pull/5 > но его что-то тормозят принимать, хотя мы исправили все замечания. Это можно пока патчем тащить у нас. > И есть ещё проблема с внешним libv8 не той версии, что надо: > https://bugzilla.altlinux.org/show_bug.cgi?id=30289 > У нас проявляется при установке contextify, нужно для jsmod. Вот с этим что > делать... Я сегодня пытался обновить nodejs и наткнулся, что новый nodejs не собирается с libv8-3.24. В принципе его можно собрать с внутренней версией, но тут тонкий момент если nodejs будет собран с внутренней, а какой-либо из модулей слинкуется с чем-то из сизифа (некоторые модули несут биндинги к библиотекам). (В ответ на комментарий №6) > В принципе, патч давно готов: > https://github.com/isaacs/chmodr/pull/5 > но его что-то тормозят принимать, хотя мы исправили все замечания. Кстати, такая же проблема с chownr. И решение такое же. (В ответ на комментарий №8) ... > Кстати, такая же проблема с chownr. И решение такое же. Да, она проявилась в новой версии npm. Делаем. Патчи приложу сюда. Created attachment 6178 [details]
chmodr fix
Created attachment 6179 [details]
chownr fix
А я пытался собрать nodejs 0.11.x, и столкнулся с тем, что несмотря на приложенные патчи, проблема повторяется (видимо, в другом месте?), а отладить не могу, потому что в новой версии перестали писаться логи. Если же собирать стабильную 0.10.x, я вижу только выход собраться с внутренней libv8, потому что состыковаться с внешней очень проблематично, разработчики на другие версии не рассчитывали. (В ответ на комментарий №12) > А я пытался собрать nodejs 0.11.x, и столкнулся с тем, что несмотря на > приложенные патчи, проблема повторяется (видимо, в другом месте?), а отладить > не могу, потому что в новой версии перестали писаться логи. Я столкнулся с иной проблемой: некоторые модули в зависимостях хотят npm той или иной версии. В этом случае выкачивается апстримный баганутый и происходит падение уже ниже. Может у тебя подобная проблема вылезает ? > Если же собирать стабильную 0.10.x, я вижу только выход собраться с внутренней > libv8, потому что состыковаться с внешней очень проблематично, разработчики на > другие версии не рассчитывали. Для себя я собственно так и сделал. Я тоже не вижу другого выхода. (В ответ на комментарий №13) > В этом случае выкачивается апстримный баганутый и происходит падение Наверное, придётся публиковать в более приоритетном репозитории? Или может можно заставить наш git не создавать символьные ссылки в репозиториях, может это настраивается? > Может у тебя подобная проблема вылезает ? Наверняка (В ответ на комментарий №14) > Наверное, придётся публиковать в более приоритетном репозитории? Или может > можно заставить наш git не создавать символьные ссылки в репозиториях, может > это настраивается? У нас в /usr/share/git-core/templates/hooks лежат симлинки. При клонировании весь каталог /usr/share/git-core/templates переносится в .git как есть. Об этом написано в git-init(1) в разделе "TEMPLATE DIRECTORY". Если бы у нас там были файлы, то проблемы бы не возникало. НО они там правомерны. Я не нашёл никаких настроек, чтобы копировать эти ссылки с разыменновыванием. Правда с точки зрения создателей git я не вижу в таких настройках большого смысла т.к. после клонирования есть возможность с делать с hooks что угодно. Другое дело, что что-то сделать не даёт npm. (В ответ на комментарий №15) ... > написано в git-init(1) в разделе "TEMPLATE DIRECTORY". Если бы у нас там были > файлы, то проблемы бы не возникало. НО они там правомерны. > > Я не нашёл никаких настроек, чтобы копировать эти ссылки с разыменновыванием. Меня бы устроило GIT_TEMPLATE_DIR=/var/empty npm install на первое время, но оно почему-то не срабатывает (хотя при GIT_TEMPLATE_DIR=/var/empty git init создаётся репозиторий без hooks). А вот удаление ~/.npm/_git-remotes/*/hooks и повторный запуск npm install решает проблему. > Я столкнулся с иной проблемой: некоторые модули в зависимостях хотят npm той Может быть это решается сборкой npm последней версии? Вообще как-то странно в модулях хотеть npm... В новом npm другой код, всё работает * Вт фев 09 2016 Vitaly Lipatov <lav@altlinux.ru> 4.2.6-alt1 - 2016-01-21 Node.js v4.2.6 "Argon" (LTS) Release (ALT bug #30191) - build with system openssl 1.0.2 - split doc subpackage |