无法自我更新 Composer

Posted

技术标签:

【中文标题】无法自我更新 Composer【英文标题】:Unable to self-update Composer 【发布时间】:2016-10-12 20:54:38 【问题描述】:

我正在尝试更新 Composer,但运气不佳!

我尝试过的:

$ composer self-update

[无效参数异常] 命令“自我更新”未定义。

$ sudo -H composer self-update

[无效参数异常] 命令“自我更新”未定义。

$ sudo apt-get install composer

正在读取包列表...完成构建依赖树读取 状态信息...完成作曲家已经是最新版本。这 以下软件包已自动安装并且不再 必需:libntdb1 linux-headers-4.2.0-30 linux-headers-4.2.0-30-generic linux-image-4.2.0-30-generic linux-image-extra-4.2.0-30-generic python-ntdb 使用'apt-get autoremove' 删除它们。 0 升级,0 新安装,0 删除 还有 10 个没有升级。

我正在尝试自我更新 Composer,因为我每次尝试都面临以下问题:

$ composer update

使用包信息加载作曲家存储库更新 依赖项(包括require-dev) [运行时异常] 无法加载包 rmrevin/yii2-fontawesome http://packagist.org: [UnexpectedValueException] 无法解析 版本约束 v4.1 .:无效的版本字符串“v4.1.” [意外值异常] 无法解析版本约束 v4.1。:版本字符串无效 “v4.1.

我该如何解决这个问题?

我的 php 版本是:

php --version

PHP 5.6.11-1ubuntu3.4 (cli) 版权所有 (c) 1997-2015 The PHP Group Zend Engine v2.6.0,版权所有 (c) 1998-2015 Zend Technologies 使用 Zend OPcache v7.0.6-dev,版权所有 (c) 1999-2015,由 Zend Technologies 提供

我的作曲家版本是:

composer --version

Composer 版本@package_branch_alias_version@ ​​(@package_version@) @release_date@

【问题讨论】:

我建议卸载它并安装according to the official docs(即不使用apt或任何包管理器) 您尝试过什么调试问题?您最初是如何安装 composer 的? sudo -H composer self-update 该命令在Ubuntu下完美运行,可以升级composer最新版本。 【参考方案1】:

作为Waqleh said,您必须卸载PHP Composer 并重新安装。首先,执行:

sudo apt-get remove composer

然后,执行这些命令。 此处的校验和适用于 Composer 1.10.13,但在运行第一行时您将获得最新的 Composer(编辑此答案时为 2.0.4),因此请务必签入 @ 987654322@:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897')  echo 'Installer verified';  else  echo 'Installer corrupt'; unlink('composer-setup.php');  echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

现在将文件 composer.phar 移动到您路径中的目录(来自 Installation - Linux / Unix / macOS):

sudo mv composer.phar /usr/local/bin/composer

并从任何目录执行composer。就是这样!

PS:如果您使用的是PhpStorm(或者可能是其他 IDE),则必须将其关闭并重新打开。

【讨论】:

在最后一个取消链接步骤之后,我做了:sudo php composer-setup.php --install-dir=/usr/bin --filename=composer 最新版 composer 的校验和不正确。 第二条命令删除composer-setup.php,结果第三条失败 您确实需要遵循文档中的命令,因为每个新版本都会有不同的哈希(命令的第二行),并且此答案中的命令将失败 致编辑和审稿人:"PHP Composer"(大写“C”)是专有名词,而不是普通名词(在此上下文中)。【参考方案2】:

自从我发布我的答案后,我学会了一种更简单的以编程方式安装 Composer 的新方法:How do I install Composer programmatically?

旧答案:


根据@JimL 的评论,我可以通过以下方式自行更新 Composer:

从包管理器 (apt) 中卸载 Composer。 我是按照official documentation安装的

现在它可以按预期工作了。

【讨论】:

这对我有用,虽然“官方文档”有点混乱。 如果你有Ubuntu 18.04你可能会发现官方安装方法有些问题。结帐this issue 官方文档的问题是该过程不允许 Composer 使用常规操作系统更新自动更新。 alias composer='/usr/local/bin/composer' 最后还需要这个命令才能让作曲家从任何目录工作。【参考方案3】:

安装最新版本

删除您当前的 Composer 版本,例如 Ubuntu/Debian:

sudo apt-get remove composer

现在,前往https://getcomposer.org/download/ 并将脚本粘贴到您的命令行中。这可确保您获得最新版本的 Composer(截至撰写本文时:v2.0.7)。

像这样:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8')  echo 'Installer verified';  else  echo 'Installer corrupt'; unlink('composer-setup.php');  echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"

一段时间后,你可以更新,不需要使用 sudo 前缀:

composer self-update

【讨论】:

超时怎么办? @Black 使用 *** 确保不是您的 ISP 问题 不可能。我已经在 *** 后面,只能通过这个 *** 访问服务器 你会打开getcomposer.org 吗?或防病毒软件或任何工作人员阻止了此站点?你确定 php 安装为环境应用程序吗? 最新的哈希可以在getcomposer.org/download找到【参考方案4】:

它对我有用(linux,Ubuntu 20.04):

sudo apt-get remove composer
sudo apt-get update
sudo apt-get install curl
sudo curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

【讨论】:

getcomposer.org/download 表示将其移动到/usr/local/bin/composer。我会更新你的答案。 这对我有用: curl -sS getcomposer.org/installer | php sudo mv composer.phar /usr/bin/composer 在我的情况下,您需要将其移至 sudo mv composer.phar /usr/bin/composer 而不是【参考方案5】:

如果您有旧版本的 Composer,您需要遵循以下命令:

composer -V
sudo apt remove composer
cd /tmp
wget http://getcomposer.org/download/1.10.5/composer.phar

php composer.phar -V
sudo mv composer.phar /usr/bin/composer
sudo chmod 750 /usr/bin/composer
composer -V

【讨论】:

你是说chmod 755【参考方案6】:

您可以在设置 PHP Composer 时指定安装目录和文件名 - php composer-setup.php,如下所示:

sudo php composer-setup.php --install-dir=/usr/bin --filename=composer

【讨论】:

【参考方案7】:

我已经安装了Homebrew,它为我节省了很多。

安装 brew 然后brew install composer 安装 Composer。

【讨论】:

我得到“未找到 brew” 在运行此命令之前,您必须先安装 brew。见docs.brew.sh【参考方案8】:

已经有很多答案了,想分享一下我的经验。

我使用的是 Ubuntu 20.04,我之前的 Composer 版本是 Composer 2.0.11,我的项目要求是 Composer 2.1.15

我不需要删除任何东西,我只是使用了以下命令,它对我来说很好:)

【讨论】:

【参考方案9】:

按照以下步骤安装最新的 Composer:

卸载 Composer

sudo apt-get remove composer

运行以下命令

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897')  echo 'Installer verified';  else  echo 'Installer corrupt'; unlink('composer-setup.php');  echo PHP_EOL;"
php composer-setup.php

在 /usr/bin 目录中安装 Composer 以从任何地方运行 Composer

sudo php composer-setup.php --install-dir=/usr/bin --filename=composer

删除安装程序

php -r "unlink('composer-setup.php');"

检查或自行更新

composer self-update

【讨论】:

请不要重复现有的答案 - 给定的步骤是在一年多前发布的,并且您的答案没有添加任何新信息 这不是重复的,他们有不同的方法来执行它,但他们这样做的方式不正确 请分享更多细节——据我所知,A1Gard 使用相同的命令。如果其他答案有问题,您应该解释为什么您的答案更好 在删除 composer-setup 之前他们没有将它安装在 /usr/bin 中,这就是为什么它不会使其成为全局 为什么/usr/bin中应该存在这样的文件?根据unix.stackexchange.com/questions/8656/…,/usr/bin 不应用于通过包管理器以外的任何其他方式安装的二进制文件

以上是关于无法自我更新 Composer的主要内容,如果未能解决你的问题,请参考以下文章

无法更新 Macports(使用 Mac OS X Mavericks)

尝试自我更新作曲家时出错

为啥局部变量会自我更新? [复制]

如何进行 Windows 服务自我更新?

自我更新 PHP+MySQL 应用程序的最佳实践是啥?

自我更新应用