2015-06-01 8 views
14

Ich versuche herauszufinden, die beste Art, StriderCD global zu installieren. Ich habe Knoten und Npm über die global-enabled fork of nvm installiert, und alle Pfade funktionieren gut für andere Builds, aber keiner von ihnen erfordert eine Nachinstallation wie diese.

Ich habe beide versucht sudo npm install -g strider und auch nur als root Installation ohne sudo, aber ich habe immer kommen über EACCESS Fehler auf .config und .cache Ordner für Bower in der Post installieren Schritt:

> [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' 

installiert als root, root hat keine Berechtigungen für sein eigenes $ HOME-Verzeichnis, was sehr merkwürdig ist, es sei denn, bower erstellt Verzeichnisse und Dateien mit falschen Berechtigungen. Kann mir jemand das erklären:

> [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) 

sudo als ubuntu Benutzer verwenden und versucht chmod -R 777 $HOME/.config ich die gleiche Sache auf $HOME/.cache bekommen! Seufzer.

> [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 

Warum besteht Bower $HOME/.config über die Verwendung, wenn ich --global bin mit und auch mit sudo zu installieren? Gibt es eine Möglichkeit, dies einem anderen Pfad zuzuordnen und Berechtigungen ordnungsgemäß zu machen? Und wenn ich su root -l installiere, warum hat root keine Berechtigung, auf Dateien zuzugreifen oder Verzeichnisse in seinem eigenen $HOME und/oder $HOME/.config zu erstellen? Sehr verwirrend.

Dies ist auf einer brandneuen aktualisierten 14.04 LTS AWS-Instanz. Was ist die Ursache dieses Fehlers und ist es mein Setup, das das Problem oder die schlechte Konfiguration auf Bower's oder Striders Seite verursacht?

Antwort

0

Die Berechtigungen Ihres Dateisystems scheinen seltsam und sollten untersucht und repariert werden.

Das hieß, der wichtige Teil dieser ersten Stapelüberwachung ist configstore, eine Maschine auf die Platte cachen oder persistieren Daten verwendet. Unnötig zu sagen, dass es versuchen wird, an diese Orte zu schreiben. Das ist ein Ort, um anzufangen.

Berechtigungen Probleme werden in den FAQ des neueren conf-Moduls aufgerufen, obwohl es nicht für Linux zu gelten scheint.

Im Configstore wird die Konfiguration in ~/.config (das ist hauptsächlich eine Linux-Konvention) auf allen Systemen gespeichert, während conf die Konfiguration im Systemstandard-Benutzerkonfigurationsverzeichnis speichert. Das Verzeichnis ~/.config hat, wie sich herausstellt, oft eine falsche Berechtigung auf macOS und Windows, was für die Benutzer viel Kummer verursacht hat.

Würde das Umschalten auf conf das Problem beheben? Vielleicht, vielleicht nicht. Konnte nicht zu file an issue weh tun. Es ist ein ziemlich trivialer Ersatz. Und Sie könnten sicherlich innerhalb Ihrer node_modules hacken um zu überprüfen, ob das für Sie behebt.

Sowohl configstore als auch conf entsprechen der Umgebungsvariablen XDG_CONFIG_HOME. Jedoch lesen sie es zu etwas anderen Zeiten, ersteres bei Modul require() Zeit, letzteres wenn seine Klasse instanziiert wird.

Wir sollten auch die Annahme von Prozessen in Frage stellen, die als ein bestimmter Benutzer ausgeführt werden (root), da Knotenprogramme process.setuid() und dies ist relativ häufig unter Befehlszeilenwerkzeugen.

würde ich die verschiedenen node_modules Dateien seinen Lauf ändern und in einigen bestreuen ...

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

Dies ist nützlich, weil entweder bower oder npm sein können Berechtigungen zu einem ungünstigen Zeitpunkt Herabstufung. Oder vielleicht etwas innerhalb des npm run build Skripts tut dies.

Wenn Sie sehen, dass sich die Benutzer oder Gruppen während des gesamten Lebenszyklus des Programms ändern, ist dies ein großer Bereich für Fehler. Überprüfen Sie sorgfältig, ob die gedruckten Benutzer oder Gruppen vollständigen Zugriff auf die fehlgeschlagenen Pfade haben. Abhängig von der genauen Aktivität, die gerade ausgeführt wird, kann es notwendig sein, execute (x) Berechtigungen für übergeordnete Verzeichnisse zu haben, die bis zum Wurzelverzeichnis des Dateisystems reichen.