ChatGPT解决这个技术问题 Extra ChatGPT

无法自我更新 Composer

我正在尝试更新 Composer,但没有任何运气!

我试过的:

$ composer self-update

[InvalidArgumentException] 命令“自我更新”未定义。

$ sudo -H composer self-update

[InvalidArgumentException] 命令“自我更新”未定义。

$ 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)[RuntimeException] 无法在 http://packagist.org 中加载包 rmrevin/yii2-fontawesome:[UnexpectedValueException] 无法解析版本约束 v4.1 .: 无效版本字符串“v4.1”。 [UnexpectedValueException] 无法解析版本约束 v4.1。:无效的版本字符串“v4.1”。

我该如何解决这个问题?

我的 PHP 版本是:

php --version

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

我的作曲家版本是:

composer --version

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

我建议只卸载它并安装 according to the official docs(即不使用 apt 或任何包管理器)
您尝试过什么调试问题?你一开始是如何安装作曲家的?
sudo -H composer self-update 此命令在 Ubuntu 中完美运行以升级 composer 最新版本。

P
Peter Mortensen

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

sudo apt-get remove composer

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

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-setup.php,结果第三个命令失败
您确实需要遵循文档中的命令,因为每个新版本都将具有不同的哈希(命令的第二行),并且此答案中的命令将失败
致编辑和审稿人:"PHP Composer"(大写“C”)是专有名词,而不是普通名词(在此上下文中)。
P
Peter Mortensen

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

老答案:

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

从包管理器 (apt) 中卸载 Composer。

我是按照官方文档安装的

现在它按预期工作。


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

安装最新版本:

删除您当前的 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 使用 vpn 确保不是您的 ISP 问题
不可能。我已经在 VPN 后面,只能通过这个 VPN 访问服务器
你会打开 getcomposer.org 吗?或防病毒软件或任何工作人员阻止了此站点?你确定 php 安装为环境应用程序吗?
最新的哈希可以在 getcomposer.org/download 找到
R
Ryan

它对我有用(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
P
Peter Mortensen

如果您有旧版本的 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
P
Peter Mortensen

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

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

I
Imran Rafiq Rather

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

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

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

https://i.stack.imgur.com/nDMnQ.png


P
Peter Mortensen

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

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


我得到“未找到酿造”
在运行此命令之前,您必须先安装 brew。请参阅docs.brew.sh
N
Nicolas Zanforlini

Debian 上的作曲家 2:

cd /usr/src

sudo apt-get install curl php7.2-cli

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

chmod 777 composer

nano ~/.bashrc

添加:PATH=$PATH/usr/local/bin/

source ~/.bashrc

验证:composer -v


P
Peter Mortensen

通过以下步骤安装最新的 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 不应用于通过包管理器以外的任何其他方式安装的二进制文件

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅