当我试图更新单个软件包时,作曲家的行为让我感到困惑。
根据docs和Stack Overflow的回答,我应该能够使用如下命令更新单个包
composer update somevendor/somepackage
当我这样做时,我的期望是我的vendor
文件夹和composer.lock
应该保持不变,除了somevendor/somepackage
及其依赖项。然而,情况并非如此。相反,我在composer.lock
中看到一些与我正在更新的包无关的包的散列。事实上,即使我试图通过捣碎键盘来更新一个不存在的包:
composer update adsfiodfsa/dsafiodsafio
...即使作曲家告诉我没有什么可更新的:
$ composer update adsfiodfsa/dsafiodsafio
Package "adsfiodfsa/dsafiodsafio" listed for update is not installed. Ignoring.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files
Generating optimized class loader
...我还是看到composer.lock
变了!更奇怪的是,文件夹(我添加到我的Git回购的目的是测试这个)没有被修改,即使锁文件似乎声称我现在有一些包的不同版本:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: composer.lock
no changes added to commit (use "git add" and/or "git commit -a")
这是故意的行为,还是一个bug?如果它是正确的,有人能解释为什么我的composer.lock
文件在没有更新的情况下仍在更改吗?如果有帮助,在更新后(不修改供应商文件夹)在mycomposer.lock上运行
git diff
,会产生以下差异,这似乎清楚地表明某些包已更改:
diff --git a/composer.lock b/composer.lock
index e2f65b9..e6c9a95 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1,7 +1,7 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
- "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "3d8098978270f73f9829e9d1138edef9",
@@ -583,7 +583,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/9e7954694971a5fab6ebabb38f9ffeec49d0d2ad",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/a0a43c0eb15ed66e71f8160b6bb25f4071ed22ca",
"reference": "9e7954694971a5fab6ebabb38f9ffeec49d0d2ad",
"shasum": ""
},
@@ -879,7 +879,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/firebase/firebase-token-generator-php/zipball/61691f56372d32515350dd5522c78be64a0e8d60",
+ "url": "https://api.github.com/repos/firebase/firebase-token-generator-php/zipball/1044f9f5ec8b270dc6c073c7bf2fe67081dbfbb2",
"reference": "61691f56372d32515350dd5522c78be64a0e8d60",
"shasum": ""
},
@@ -1076,7 +1076,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/dbbb91d7f6c191e5e405e900e3102ac7f261bc0b",
+ "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/9465032ac5d6beaa55f10923403e6e1c36018d9c",
"reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b",
"shasum": ""
},
@@ -1425,7 +1425,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bf2bff61743f20a13dc46ff1e3bbd0f19c997d2b",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/77aef55318035d37dbd4e87ea0c37a191f3e766e",
"reference": "bf2bff61743f20a13dc46ff1e3bbd0f19c997d2b",
"shasum": ""
},
@@ -2027,7 +2027,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/bf2c13de4300e227d7b2fd08027673a79c519987",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/9e45edca52cc9c954680072c93e621f8b71fab26",
"reference": "bf2c13de4300e227d7b2fd08027673a79c519987",
"shasum": ""
},
@@ -2211,7 +2211,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/ac8b475454c120bfb31f5bef475233dd4fb6b626",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/21b7eb31c51d98e9da0543527a0242875f3d92b9",
"reference": "ac8b475454c120bfb31f5bef475233dd4fb6b626",
"shasum": ""
},
@@ -2744,7 +2744,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/7b1632cf2bdbc69c59a44942b70d5aae91034304",
+ "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/31652385d94eafc2103a98435d6d5bd7eea61736",
"reference": "7b1632cf2bdbc69c59a44942b70d5aae91034304",
"shasum": ""
},
@@ -3405,7 +3405,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/phpspec/zipball/73d0335bf8473be8bcfab5a9d66adce8d0db3857",
+ "url": "https://api.github.com/repos/phpspec/phpspec/zipball/147ff359413be67781d1dd1f3be5d7a4d4af769a",
"reference": "73d0335bf8473be8bcfab5a9d66adce8d0db3857",
"shasum": ""
},
@@ -3483,7 +3483,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/5a355f91730c845301a9e28f91c8a5053353c496",
"reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
"shasum": ""
},
@@ -3543,7 +3543,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9ef4b8cbf3e839a44a9b375d8c59e109ac7aa020",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/688b6a58acb19c1899dc887b1efb6403dc6dc0bd",
"reference": "9ef4b8cbf3e839a44a9b375d8c59e109ac7aa020",
"shasum": ""
},
@@ -3861,7 +3861,7 @@
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/74ffb87f527f24616f72460e54b595f508dccb5c",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5034a3d9f2057a7b7d6ad03a984509dadfdda3cc",
"reference": "74ffb87f527f24616f72460e54b595f508dccb5c",
"shasum": ""
},
自述文件部分将指示您已经更新了自锁文件创建以来的作曲家版本,从而导致更新锁的基本元数据。
白名单在安装程序中的工作方式是,每个未被白名单的包都将约束更新为安装的确切版本。
因此,正在发生的是,在技术上,每个包都被考虑在缺少包的情况下进行安装,并正确地发现和解决白名单包的依赖关系。这就好比您临时更改了您的composer.json
,以便为您没有列入白名单的每个包声明显式版本,并执行完整的更新。
重新生成锁文件时,Composer\Package\Locker
将迭代考虑安装的所有软件包,并将它们传递给Composer\Package\Dumper\ArrayDumper
,后者将为每个软件包吐出源
和dist
元数据以创建输出。
当您安装的软件包中包含一个哈希引用,该哈希引用相当于该版本的#9e7954694971a5fab6ebab38f9ffeec49d0d2ad
。正如stof在composer/composer#1458中指出的那样,版本的显式哈希处理是在安装程序级别完成的,并且不知道如何为其生成正确的dist url,这是在vcs驱动程序级别完成的。散列时用于为锁文件创建dist url的元数据来自dev master
,这就是api url将更新的原因。
安装程序不使用dist url来安装包,安装时使用的dist url来自在解算器使用的池中提供包的存储库。
医生总结(查看所有细节,运行): 颤动(频道稳定,v1.12.13 修补程序.8,在微软视窗(版本 10.0.18363.720)和区域设置 en-US) Android工具链 - 针对Android设备开发(Android SDK 版本 29.0.3)。 Android X 许可证状态未知。 请尝试重新安装或更新您的Android SDK 管理器。 请参阅Android Studio下载内容或访
我有一个程序在Tomcat中运行得非常好。然而,我们希望将其转换为Weblogic。然而,当我尝试部署它时,会收到以下错误消息: IllegalStateException:AnnotationTransactionAttribute资源仅在java 1.5及更高版本上可用 问题是,我运行的是Java 1.8。我读到Spring 2.5可能会导致类似的问题(它显然无法识别1.7以上的任何内容),但
在我的项目中,我有一些经过手动编辑的作曲家供应商库;我的目的是在我的开发机器上将它们恢复到原始状态。 不幸的是,我触发了一个,因此我没有正确的编写器。不再锁定(已更新)。我找到了作曲家。来自我们的生产系统的锁(与旧的developmentcomposer.lock具有相同的库版本)。 在更换了新的作曲家之后。使用旧的锁,我应该执行什么来确保拥有与以前相同的环境?
问题内容: 目前我在下面安装了rvm 如何将rvm移到该位置? 我尝试使用rvmrc文件来解决此问题(根据此处的rvm文档:https ://rvm.io/workflow/rvmrc/ ),但是没有运气,我在下面找到了一个文件 我可以遵循任何分步说明吗? 问题答案: 通过在线研究找出自己,希望这可以帮助某人: 假设您要从移至 更新您或更新为: 找到您的under ,如果找不到,创建一个并在其中添
我正在使用Mac。我的pip安装路径是。如何将其更改为? 通常情况下,我的jupyter笔记本找不到pip安装的软件包,这就是我想更改路径的原因。 我感谢你的帮助。欢迎使用其他正确安装软件包的解决方案。
问题内容: 我在大型代码中发现了一个错误,并将问题简化为以下情况。 尽管在每一步中我都只更改,但是在每一步中我都打印时,它也会更改,因为在第一循环的结尾我将它们分配为相等。我读过这篇文章,但是写了一些,以防我能解决问题,但事实并非如此 问题答案: 问题是,当您将值从分配回时,您实际上并没有将值从传递给,而是实际上是将两个变量指向 同一对象 。 您遇到的问题 解决方案 相反,您将需要复制 值 。使用