2015-06-01 8 views
14

Próbuję znaleźć najlepszy sposób na zainstalowanie StriderCD na całym świecie. Zainstalowałem węzeł i NPC przez global-enabled fork of nvm, a wszystkie ścieżki działają dobrze dla innych wersji, ale żadna z nich nie wymaga takiej instalacji.

Próbowałem zarówno sudo npm install -g strider a także instalacja tylko jako root bez sudo, ale zawsze natknąć EACCESS błędów na foldery config i .cache do altany na stanowisku zainstalować krok:

> [email protected] 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' 

zainstalowany jako root, root nie ma uprawnień do swojego katalogu $ HOME, co jest bardzo dziwne, chyba że bower tworzy katalogi i pliki z niewłaściwymi uprawnieniami. Może ktoś to wyjaśnić:

> [email protected] 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) 

Korzystanie sudo jako użytkownik Ubuntu i próbował chmod -R 777 $HOME/.config mam to samo na $HOME/.cache! Westchnienie.

> [email protected] 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 

Dlaczego altana nalegać na użyciu $HOME/.config kiedy używam --global a także instalacji z sudo? Czy istnieje sposób na odwzorowanie tego na inną ścieżkę i poprawienie uprawnień? A kiedy muszę zainstalować, dlaczego root nie ma uprawnień do uzyskiwania dostępu do plików lub tworzenia katalogów w swoim własnym $HOME i/lub $HOME/.config? Bardzo mylące.

To jest na zupełnie nowym zaktualizowanym wystąpieniu LTS AWS 14.04. Jaka jest główna przyczyna tego błędu i czy jest to moja konfiguracja powodująca problem lub zła konfiguracja na stronie altówki lub Stridera?

Odpowiedz

0

Uprawnienia systemu plików wydają się dziwne i powinny zostać zbadane i naprawione.

To powiedziawszy, ważną częścią tego pierwszego śledzenia stosu jest configstore, urządzenie służące do buforowania lub utrwalania danych na dysku. Nie trzeba dodawać, że spróbuje napisać do tych miejsc. To jest miejsce do rozpoczęcia.

Problemy z uprawnieniami są wywoływane w sekcji Najczęściej zadawanych pytań w nowym module conf, chociaż wydaje się, że nie dotyczy to systemu Linux.

W configstore, config są przechowywane w ~/.config (co jest głównie konwencja Linux) na wszystkich systemach, podczas gdy sklepy conf config w domyślnym katalogu konfiguracyjnym systemu użytkownika. Jak się okazuje, katalog ~/.config często ma niepoprawne zezwolenie na macOS i Windows, co spowodowało wiele kłopotów dla użytkowników.

Czy zmiana na conf rozwiązała problem? Może, może nie. Nie zaszkodzi to file an issue. To dość trywialny zamiennik. I z pewnością możesz sieknąć wewnątrz twojego node_modules, aby sprawdzić, czy to naprawi to za Ciebie.

Zarówno configstore, jak i conf respektują zmienną środowiskową XDG_CONFIG_HOME. Jednak czytają go w nieco innym czasie, ten pierwszy w module require() czasu, drugi po utworzeniu klasy.

Powinniśmy również zakwestionować założenia dotyczące procesów działających jako określony użytkownik (root), ponieważ programy węzłowe mogą process.setuid() i jest to stosunkowo powszechne wśród narzędzi wiersza poleceń.

chciałbym zmodyfikować różne node_modules plików prowadzony i posypać niektórych ...

console.log('User:', process.getuid()); 
console.log('Group:', process.getgid()); 
console.log('Effective user:', process.geteuid()); 
console.log('Effective group:', process.getegid()); 

Funkcja ta jest przydatna, ponieważ albo bower lub npm może być obniżenie uprawnień w niedogodnym momencie. A może robi to coś w skrypcie npm run build.

Jeśli widzisz użytkowników lub grupy zmieniające się przez cały cykl życia programu, jest to obszar o dużym potencjale występowania błędów. Dokładnie sprawdź, czy użytkownicy lub grupy drukowane mają pełny dostęp do ścieżek, które się nie powiodły. W zależności od dokładnej aktywności, może być konieczne posiadanie uprawnień do wykonywania (nadrzędnych katalogów) aż do katalogu głównego systemu plików.

Powiązane problemy