Глобальная пост-установка StriderCD завершается неудачно при доступе к $HOME/.config $HOME/.cache
Я пытаюсь найти лучший способ установить StriderCD во всем мире. Я установил node и npm через глобальный форк nvm, и все пути работают нормально для других сборок, но ни один из них не требует такой пост-установки.
Я пробовал оба sudo npm install -g strider
а также просто установка как root без sudo, но я всегда сталкиваюсь EACCESS
ошибки в папках.config и.cache для bower на этапе после установки:
> strider@1.6.6 postinstall /usr/local/lib/node_modules/strider
> bower install --allow-root && npm run build
/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/mkdirp/index.js:89
throw err0;
^
Error: EACCES, permission denied '/home/ubuntu/.config'
Установленный как root, root не имеет разрешений для своего собственного $HOME dir, что очень странно, если bower не создает dir и файлы с неправильными разрешениями. Может кто-нибудь объяснить это:
> strider@1.6.6 postinstall /usr/local/lib/node_modules/strider
> bower install --allow-root && npm run build
/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:56
throw err;
^
Error: EACCES, permission denied '/root/.config/configstore/bower-github.yml'
You don't have access to this file.
at Error (native)
at Object.fs.openSync (evalmachine.<anonymous>:500:18)
at Object.fs.readFileSync (evalmachine.<anonymous>:352:15)
at Object.create.all.get (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:34:29)
at Object.Configstore (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/configstore/index.js:27:44)
at readCachedConfig (/usr/local/lib/node_modules/strider/node_modules/bower/lib/config.js:22:23)
at defaultConfig (/usr/local/lib/node_modules/strider/node_modules/bower/lib/config.js:11:24)
at Object.<anonymous> (/usr/local/lib/node_modules/strider/node_modules/bower/lib/index.js:40:32)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
Использование sudo в качестве пользователя Ubuntu и попытался chmod -R 777 $HOME/.config
Я получаю то же самое на $HOME/.cache
! Вздох.
> strider@1.6.6 postinstall /usr/local/lib/node_modules/strider
> bower install --allow-root && npm run build
bower EACCES EACCES, permission denied '/home/ubuntu/.cache/bower/registry/bower.herokuapp.com/lookup'
Stack trace:
Error: EACCES, permission denied '/home/ubuntu/.cache/bower/registry/bower.herokuapp.com/lookup'
at Error (native)
at Object.fs.mkdirSync (fs.js:747:18)
at Function.sync (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/node_modules/mkdirp/index.js:55:12)
at new Cache (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/lib/util/Cache.js:21:16)
at RegistryClient.<anonymous> (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/lib/lookup.js:163:35)
at Array.forEach (native)
at RegistryClient.initCache (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/lib/lookup.js:150:34)
at RegistryClient._initCache (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/Client.js:62:27)
at new RegistryClient (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-registry-client/Client.js:16:10)
at new PackageRepository (/usr/local/lib/node_modules/strider/node_modules/bower/lib/core/PackageRepository.js:17:28)
Console trace:
Error
at StandardRenderer.error (/usr/local/lib/node_modules/strider/node_modules/bower/lib/renderers/StandardRenderer.js:82:37)
at Logger.<anonymous> (/usr/local/lib/node_modules/strider/node_modules/bower/bin/bower:110:22)
at Logger.emit (events.js:107:17)
at Logger.emit (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/bower-logger/lib/Logger.js:29:39)
at /usr/local/lib/node_modules/strider/node_modules/bower/lib/commands/index.js:45:20
at _rejected (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:844:24)
at /usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:870:30
at Promise.when (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:1122:31)
at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:788:41)
at /usr/local/lib/node_modules/strider/node_modules/bower/node_modules/q/q.js:556:49
System info:
Bower version: 1.4.1
Node version: 0.12.4
OS: Linux 3.13.0-48-generic x64
Почему беседка настаивает на использовании $HOME/.config
когда я использую --global
а также установка с помощью sudo? Есть ли способ сопоставить это с другим путем и сделать правильные разрешения? И когда я su root -l
установить, почему root не имеет права доступа к файлам или создания каталогов внутри своей собственной $HOME
и / или $HOME/.config
? Очень запутанно.
Это новый обновленный экземпляр 14.04 LTS AWS. Какова основная причина этой ошибки и является ли моя установка причиной проблемы или неправильной конфигурации со стороны Бауэра или Страйдера?
1 ответ
Разрешения вашей файловой системы кажутся странными и должны быть исследованы и исправлены.
Тем не менее, важной частью этой первой трассировки стека является configstore, часть механизма, используемого для кэширования или сохранения данных на диске. Излишне говорить, что он попытается написать в эти места. Это место для начала.
Проблемы с разрешениями вызываются в FAQ нового модуля conf, хотя, похоже, это не относится к Linux.
В configstore конфиг хранится в ~/.config (который в основном является соглашением Linux) на всех системах, в то время как conf хранит конфиг в системном каталоге конфигурации пользователя по умолчанию. Оказывается, что каталог ~ /.config часто имеет неправильное разрешение на macOS и Windows, что вызывает много горя у пользователей.
Будет переключаться на conf
решить проблему? Может быть, а может и нет. Не повредит подать проблему. Это довольно банальная замена. И вы могли бы, конечно, взломать внутри вашего node_modules
чтобы проверить, исправит ли это для вас.
Оба configstore и conf уважают XDG_CONFIG_HOME
переменная окружения. Однако они читают это в немного другое время, первое в модуле require()
время, последнее, когда его класс создан.
Мы также должны оспорить предположение о процессах, запущенных от имени конкретного пользователя (root
), поскольку Node-программы могут обрабатывать.setuid(), и это относительно распространено среди инструментов командной строки.
Я бы изменил различные node_modules
файлы запускаются и посыпаются в некоторых...
console.log('User:', process.getuid());
console.log('Group:', process.getgid());
console.log('Effective user:', process.geteuid());
console.log('Effective group:', process.getegid());
Это полезно, потому что либо bower
или же npm
может быть понижение разрешений в неудобное время. Или, может быть, что-то в npm run build
Сценарий делает так.
Если вы видите, что пользователи или группы меняются на протяжении жизненного цикла программы, это потенциальная область для ошибок. Тщательно проверьте, что у напечатанных пользователей или групп есть полный доступ к ошибочным путям. В зависимости от конкретной активности, которая может выполняться, может потребоваться выполнить (x
) разрешения для родительских каталогов, вплоть до корня файловой системы.