Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何强制composer重新安装库?_Php_Zend Framework2_Composer Php - Fatal编程技术网

Php 如何强制composer重新安装库?

Php 如何强制composer重新安装库?,php,zend-framework2,composer-php,Php,Zend Framework2,Composer Php,我使用的是ZF2 skeleton应用程序,它有一个.gitignore,可以防止外部库提交到git。在调试过程中,我喜欢在库的源代码中到处更改内容,以了解如何工作。如果这些是版本控制的,将很容易将它们恢复到原始状态 如何强制Composer重新安装特定的框架,以便再次获得新的未修改副本 PS:请不要建议删除.gitignore文件,因为它存在是有原因的;它阻止我的第三方库进入我的应用程序存储库。我总是可以在自动部署期间安装它们。您可以使用composer的--preference source

我使用的是ZF2 skeleton应用程序,它有一个.gitignore,可以防止外部库提交到git。在调试过程中,我喜欢在库的源代码中到处更改内容,以了解如何工作。如果这些是版本控制的,将很容易将它们恢复到原始状态

如何强制Composer重新安装特定的框架,以便再次获得新的未修改副本

PS:请不要建议删除.gitignore文件,因为它存在是有原因的;它阻止我的第三方库进入我的应用程序存储库。我总是可以在自动部署期间安装它们。

您可以使用composer的
--preference source
标志签出包含VCS信息的外部软件包(如果有)。您可以简单地恢复到原始状态。此外,如果发出
composer update
命令,composer将检测您在本地所做的任何更改,并询问您是否要放弃这些更改


.gitignore文件与根项目(ZF2骨架)相关,它阻止供应商目录(第三方LIB所在的位置)提交给您自己的VCS。忽略文件与供应商的git回购无关。

首先执行
composer clearcache

然后清除您的供应商文件夹

rm -rf vendor/*
或者更好的方法是删除特定模块,这样会产生问题,从而避免再次下载。

我所做的:

  • 删除了特定库的文件夹
  • composer更新--首选源供应商/库名称

  • 它再次获取库以及它的git repo

    我不想删除
    vendor/
    目录中的所有包,所以我是这样做的:

  • rm-rf供应商/package-i-messed-up
  • composer再次安装

  • 正如user@aaracrr在对另一个答案的评论中指出的,最好的答案可能是重新要求具有相同版本约束的包

    或指定版本约束

    composer require vendor/package:^1.0.0
    

    重新安装依赖项。在Linux上删除供应商文件夹(手动)或通过rm命令(如果您在项目文件夹中,请确保),然后执行以下操作:

    rm -rf vendor/
    
    composer update -v
    

    出于某种原因,没有人提出强制重新安装的明显且最直接的方法:

    > composer remove vendor-name/package-name && composer vendor-name/package-name
    
    请注意此确切命令将安装软件包的最新版本。如果您使用的是旧版本的软件包,并且软件包不具有向后兼容性,则这将阻止版本兼容性。你可以考虑备份你的<代码>作曲家。JSON<代码> > 您可以使用&&&在一个cli命令中执行它:

    composer remove vendor/package && composer require vendor/package:version
    
    详细答案 通过命令删除现有包:

    composer remove vendor/package
    
    这将从/vendor中删除包的文件夹,从composer.json中删除行,从composer.lock中删除包的整个记录,正确地删除未使用的依赖项,并且不删除其他包使用的依赖项

    然后使用以下命令安装首选项:

    composer require vendor/package:version
    
    这将通过向composer.json添加行、向composer.lock添加记录和所有需要的依赖软件包,以正确的方式安装具有所需版本的软件包 如果有多个包中使用的包,则Composer 将尝试使用软件包安装适合所有用户的版本。如果无法解决此问题,它将崩溃并显示相应的错误消息

    链接


    使用Composer安装、卸载和更新模块主题等:

    相关功能请求


    2021-05年,“重新安装”命令修补程序被合并:-它在composer 2.1.0版和所有更高版本中都可用。

    一个选项是删除composer.lock,然后运行composer install最初您的-首选源代码建议没有起作用,直到我意识到我必须删除并重新安装所有库才能按预期工作,然后
    composer状态-v
    给了我更改的信息。@Loenix,解锁它们。我曾经遇到过本地缓存损坏的情况,因此即使在删除供应商目录后,我仍继续重新安装损坏的依赖项
    composer clearcache
    在这种情况下是一个很好的补充。考虑到composer需要重新安装所有软件包,而OP只需要重新安装一个软件包,这似乎是一个非常激进的方法
    composer require vendor/package
    将在更短的时间内完成OP想要做的事情。我有点惊讶,这么多人投票支持这个答案。如果composer clearcache无法工作,您可以删除/home/[username]/.cache目录。这将强制重新下载。如果您除了使用packagist.composer.org外,还使用private composer packagist,并且有人在不添加新标记的情况下进行更改,则此功能非常有用。composer不一定只安装在供应商目录中,因此,即使是一种严厉的方法,它也不能在所有情况下都起作用。或者“composer require vendor/package-i-messed-up”会很好。如果不起作用,您可以先运行
    composer clearcache
    ,以防缓存因某种原因损坏。这是正确的方法。为了澄清这一点,确实需要删除/vendor/,以便composer从锁文件中重新安装它。如果仅删除目录并保留命名目录(例如/vendor//),则不会重新安装。如果不起作用,您可以先运行
    composer clearcache
    ,以防缓存因某种原因损坏。
    composer update
    在这种情况下不应运行,因为这改变了dependencies@NicoHaase仅当
    -w,--with-dependencies
    -w,--with-all-dependencies
    参数传递给编写器时。否,即使“composer update vendor/library name”也会更新该库,而不是将其重置为修改前安装的版本sources@NicoHaase库本身可能会根据给定的版本约束进行更新(在composer.lock中)
    composer require vendor/package:version