`composer update` 不会更新到最新版本
Posted
技术标签:
【中文标题】`composer update` 不会更新到最新版本【英文标题】:`composer update` doesn't update to the latest version 【发布时间】:2018-04-16 19:39:48 【问题描述】:在我的composer.json
我有
"require":
. . .
"unisharp/laravel-filemanager": "~1.8"
目前,最新版本是v1.8.2.2,在运行composer update
命令后,我将它安装在我的本地主机项目中(一切正常)。
我已将 (git push origin master
) 从 localhost 推送到 Bitbucket 上的远程仓库,并通过 SSH 连接到 Web 服务器并从该远程仓库克隆 (git clone ...
)。
现在,当我运行 composer update
(在网络服务器上)时,它会安装 v1.8.0,它有一些 bug。之后,当我再次尝试运行 composer update
- 我得到:
Nothing to install or update
...但它仍然是 v1.8.0(不像在本地主机上的 v1.8.2.2)。
所以,我在我的本地主机和实时服务器上有相同的 composer.json 项目,但由于某种原因,本地主机有最新版本的包,而实时版本有旧版本的错误,composer update
没有不要更新它。
你知道为什么会这样吗?我该如何解决?
【问题讨论】:
您应该在本地运行composer update
并将您的 composer.lock
文件提交给您的版本控制。然后,您应该在您的服务器上运行 composer install
以提取 composer.lock
文件中详细说明的依赖项。
跑完composer update
,你跑php artisan vendor:publish
了吗?
php artisan vendor:publish
将如何更新包版本?
@Jonathon 我犯了一个错误,因为我没有先运行install
,而是update
(看起来是composer.json,而不是composer.lock)。现在当我第一次做composer install
时 - 一切都很好。如果可以 - 将您的评论发布为 answer 以便我查看。
没问题,现在添加。
【参考方案1】:
我只花了两个小时调试这个。原来问题在于 composer.json 文件中有一个“版本”标签。
当那里有版本标签时,该版本将优先于您应用的任何 git 标签版本。
【讨论】:
【参考方案2】:您应该在本地运行composer update
。这将使用您已安装的所有软件包的版本更新composer.lock
。您应该将您的 composer.lock
文件提交给您的版本控制。
在您的服务器上,一旦您更新了文件,您应该运行 composer install
,以便 Composer 可以更新其依赖项以匹配您在 composer.lock
文件中指定的那些。
【讨论】:
以上是关于`composer update` 不会更新到最新版本的主要内容,如果未能解决你的问题,请参考以下文章
锁定文件不是最新的 composer.json 中的最新更改
Laravel - 在我运行 composer update CLI artisan 之后出现问题
尝试通过 Composer 将 Laravel/Nova 更新到最新版本时出现 INVALID CREDENTIALS 错误