无法自我更新作曲家?

Waq*_*leh 22 php composer-php

我试图更新作曲家没有运气!

我尝试过的:

$ composer self-update
Run Code Online (Sandbox Code Playgroud)

[InvalidArgumentException]
未定义命令"自更新".

$ sudo -H composer self-update
Run Code Online (Sandbox Code Playgroud)

[InvalidArgumentException]
未定义命令"自更新".

$ sudo apt-get install composer
Run Code Online (Sandbox Code Playgroud)

阅读包列表...完成构建依赖关系树读取状态信息...完成作曲家已经是最新版本.以下软件包是自动安装的,不再需要: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 update
Run Code Online (Sandbox Code Playgroud)

使用包信息加载composer存储库更新依赖项(包括require-dev)[RuntimeException]
无法在http://packagist.org中加载包rmrevin/yii2-fontawesome :[UnexpectedValueException]无法解析版本约束v4.1.:无效的版本字符串"v4.1. "
[UnexpectedValueException]
无法解析版本约束v4.1.:无效的版本字符串"4.1版. "

有关如何解决此问题的任何想法?

我的php版本是:

php --version
Run Code Online (Sandbox Code Playgroud)

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

我的作曲家版本是:

composer --version
Run Code Online (Sandbox Code Playgroud)

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

Waq*_*leh 20

根据@JimL评论,我能够通过以下方式自我更新作曲家:

  • 从包管理器(apt)卸载Composer.
  • 我根据官方文档安装了它

现在它按预期工作.

  • 这对我有用,虽然"官方文档"有点令人困惑. (4认同)

A1G*_*ard 20

安装最新版本

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

sudo apt-get remove composer
Run Code Online (Sandbox Code Playgroud)

现在,前往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') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { 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');"
Run Code Online (Sandbox Code Playgroud)

经过一段时间后,您可以更新,并且不需要使用sudo前缀:

composer self-update
Run Code Online (Sandbox Code Playgroud)


Man*_*olo 14

正如@Waqleh所说,您必须卸载composer并重新安装。首先执行:

sudo apt-get remove composer

然后,执行以下命令(来自 https://getcomposer.org/download/):

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Run Code Online (Sandbox Code Playgroud)

现在,将composer.phar移至您路径中的目录(fom https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx):

sudo mv composer.phar /usr/local/bin/composer
Run Code Online (Sandbox Code Playgroud)

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

PS:如果您使用的是PHPStorm(或其他IDE),则必须将其关闭并再次打开。

  • 在最后一个取消链接步骤之后,我做了: sudo php Composer-setup.php --install-dir=/usr/bin --filename=composer (6认同)
  • 对于最新版本的 Composer 来说,校验和不正确。 (5认同)
  • **快速提示**:复制[文档](https://getcomposer.org/download/) 中的命令,而不是答案。 (4认同)
  • 您确实需要遵循文档中的命令,因为每个新版本都会有不同的散列(命令的第二行),并且此答案中的命令将失败 (2认同)

小智 9

它对我有用(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
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,您需要将其移至“sudo mvcomposer.phar /usr/bin/composer” (7认同)

小智 8

如果您有旧版本的 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
Run Code Online (Sandbox Code Playgroud)