【问题标题】:Why is COMPOSER_HOME empty?为什么 COMPOSER_HOME 是空的?
【发布时间】:2016-12-06 19:59:34
【问题描述】:

我有一个关于编程工具composer 的问题,它作为一个可执行文件安装在/usr/local/bin/composer 中,我在工作和家庭之间使用的3 台不同的机器上。根据:

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>

它在我的 Ubuntu 16.04 桌面上安装到 /home/&lt;user&gt;/.config/composer/vendor/bin,但在其他任何地方它都正确安装到 /home/&lt;user&gt;/.composer/vendor/bin

为什么它安装到~/.config 而不是~/.composer 并且没有设置COMPOSER_HOME 变量?

我注意到这一点是因为我获取了包含全局作曲家 bin 路径的常用点文件。我知道我可以通过在我的 bashrc 中手动设置 COMPOSER_HOME 来解决这个问题,但我宁愿首先理解为什么会发生这种情况。

【问题讨论】:

标签: php bash composer-php ubuntu-16.04


【解决方案1】:

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 继续使用该位置。

【讨论】:

  • 很好的信息,谢谢!明天当我有机会重返工作岗位时,我将清除作曲家并重新安装测试一些东西。我的另外两台机器正在运行 14.04 仅供参考
  • 已确认,很高兴找到我的朋友!我认为是时候更新作曲家帮助文档了。
  • 感谢您的意见,我提交了 a pull request 以及更新的文档。
  • Seldaek 5 小时前将 pull request #5575 合并到 composer:master。再次感谢您的帮助!
猜你喜欢
  • 2012-11-30
  • 2021-12-08
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2021-12-12
相关资源
最近更新 更多