2016-08-01 76 views
2

我對編程工具composer有疑問,它在我工作和家中使用的3臺不同機器上作爲可執行文件安裝在/usr/local/bin/composer中。據:COMPOSER_HOME爲什麼是空的?

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. 

但是這兩個都是空的:

echo $COMPOSER_HOME 
echo $COMPOSER_BIN_DIR 

當我運行:

composer global require <package> 

它安裝到/home/<user>/.config/composer/vendor/bin我的Ubuntu 16.04桌面上,但在其他地方它適當地安裝到/home/<user>/.composer/vendor/bin

爲什麼安裝到~/.config,而不是~/.composer而不是設置COMPOSER_HOME變量?

我注意到這一點,因爲我採用了包括全局作曲家bin路徑在內的通用點文件。我知道我可以通過在我的bashrc中手動設置COMPOSER_HOME來解決這個問題,但我寧願明白爲什麼這首先發生。

回答

7

source code對Composer的主目錄計算方式顯示出一些額外的複雜性。

如果您的系統使用freedesktop.org標準,它通過查找environment variables beginning with XDG_進行檢測,則Composer使用$XDG_CONFIG_HOME/composer/,如果未設置,則會回退到$HOME/.config/composer/

您可能有興趣看到有一個special case:如果$HOME/.composer/存在,並且它將被用於支持freedesktop.org邏輯的目錄。推測這是爲了向後兼容。如果您手動創建此目錄,Composer應該使用它。

我不知道爲什麼這只是影響你的Ubuntu 16.04機器。運行Ubuntu 14.04變種的舊筆記本電腦使用XDG_環境變量。

我懷疑你在freedesktop.org邏輯was added in July of 2015之後第一次在該機器上安裝了Composer,並且在那之前你的其他機器都首先安裝了Composer。然後,他們現有的~/.composer/目錄將確保Composer保持使用該位置。

+0

好的信息,謝謝!當我有機會重返工作崗位時,我會清理作曲家,並在明天重新安裝測試一些事情。我的其他兩臺機器運行14.04 FYI –

+1

確認,很高興找到我的朋友!我認爲是時候更新作曲家幫助文檔了。 –

+1

感謝您的輸入,我提交了[拉請求](https://github.com/composer/composer/pull/5575)和更新的文檔。 –