2016-08-01 23 views
2

Ich habe eine Frage zu dem Programmiertool composer, das als ausführbare Datei in /usr/local/bin/composer auf 3 verschiedenen Maschinen installiert ist, die ich zwischen Arbeit und Heim verwende. Nach:Warum ist COMPOSER_HOME leer?

composer help global 
COMPOSER_HOME is c:\Users<user>\AppData\Roaming\Composer on Windows 
and /home/<user>/.composer on unix systems. 

Note: This path may vary depending on customizations to bin-dir in 
composer.json or the environmental variable COMPOSER_BIN_DIR. 

Aber diese beiden sind leer:

echo $COMPOSER_HOME 
echo $COMPOSER_BIN_DIR 

Wenn ich laufen:

composer global require <package> 

Es installiert zu /home/<user>/.config/composer/vendor/binnur auf meinem Ubuntu 16.04 Desktop, aber überall sonst installiert es angemessen /home/<user>/.composer/vendor/bin

Warum ist es ~/.config statt ~/.composer und nicht die Einstellung der COMPOSER_HOME Variable zu installieren?

Ich bemerke dies, weil ich meine gemeinsamen dotfiles Quelle, die den globalen Composer Bin-Pfad enthält. Ich weiß, dass ich Abhilfe schaffen kann, indem ich manuell COMPOSER_HOME in meinem Bashrc einstelle, aber ich würde lieber verstehen, warum das überhaupt passiert.

Antwort

7

Die source code zeigt eine zusätzliche Komplexität der Berechnung des Home-Verzeichnisses des Composers.

Wenn Ihr System freedesktop.org -Standards verwendet, die es durch die Suche nach environment variables beginning with XDG_ erkennt, verwendet Composer $XDG_CONFIG_HOME/composer/ und fällt dann auf $HOME/.config/composer/ zurück, wenn dies nicht festgelegt ist.

könnten Sie daran interessiert zu sehen, dass es ein special case ist: Wenn $HOME/.composer/ existiert und ein Verzeichnis wird es zugunsten der freedesktop.org Logik verwendet werden. Vermutlich ist dies für Rückwärtskompatibilität. Wenn Sie dieses Verzeichnis manuell erstellen, sollte Composer es verwenden.

Ich bin mir nicht sicher, warum dies nur Ihre Ubuntu 16.04 Maschine betrifft. Mein alter Laptop, auf dem eine Variante von Ubuntu 14.04 läuft, verwendet XDG_ Umgebungsvariablen.

Ich vermute, dass Sie Composer zum ersten Mal auf dieser Maschine nach der Freedesktop.org-Logik was added in July of 2015 installiert haben und dass Ihre Compiler zuvor alle Composer zuerst installiert hatten. Dann würden ihre vorhandenen Verzeichnisse ~/.composer/ sicherstellen, dass Composer diesen Speicherort weiterhin verwendet.

+0

Schöne Info, danke! Ich werde den Komponisten säubern und das Testen von ein paar Dingen morgen neu installieren, wenn ich eine Chance bei der Arbeit bekomme. Meine anderen zwei Maschinen laufen 14.04 FYI –

+1

Bestätigt, und nett finde meinen Freund! Ich denke, es ist Zeit, die Hilfedokumente für den Komponisten zu aktualisieren. –

+1

Dank Ihrer Eingabe habe ich [eine Pull-Anforderung] (https://github.com/composer/composer/pull/5575) mit aktualisierter Dokumentation eingereicht. –