我在私有github存储库中有一个包。
当我运行composer require my_vendor/my_package
时,程序包将添加到composer.json中,并显示在供应商目录中。
当我运行composer remove my_vendor/my_package
时,它会警告我:
未安装列出用于更新的软件包“ my_vendor / my_package”。 忽略。
所以当我运行composer prohibits my_vendor/my_package
时,它会说
在您的项目中找不到软件包“ my_vendor / my_package”
如果我运行composer show
(在需要软件包后),则它不会显示在列表中。
此软件包具有一个依赖项(lexik / authenticationbundle),可以正确安装,删除并显示在已安装的软件包列表中(但由于它是不存在的软件包的依赖项,因此未在树状视图中列出)... >
我不知道什么可以解释这种行为。
有什么建议吗?
编辑(添加composer.json内容)
{
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"api-platform/api-pack": "^1.1",
"composer/composer": "^1.6",
"symfony/console": "^4.1",
"symfony/flex": "^1.0",
"symfony/framework-bundle": "^4.1",
"symfony/lts": "^4@dev",
"symfony/orm-pack": "^1.0",
"symfony/web-server-bundle": "^4.1",
"symfony/yaml": "^4.1"
},
"require-dev": {
"symfony/dotenv": "^4.1"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/my_repo/my_package.git"
}
],
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"assets:install %PUBLIC_DIR%": "symfony-cmd",
"cache:clear": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-package-install": [
"App\\Utility\\Bootstrap\\Setup::execute",
"@auto-scripts"
],
"pre-package-uninstall": [
"App\\Utility\\Bootstrap\\Demolish::execute",
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"id": "01C1K60FQVPP7FCAC3YB6639RZ",
"allow-contrib": true
}
}
}
此外,创建一个新项目并要求该软件包正确地将其添加到已安装软件包的列表中,这样就可以正常工作。然后,我尝试删除锁定文件并运行作曲家更新,最终我尝试要求/删除它,但是没有运气。
答案 0 :(得分:0)
看来,阻止作曲家正确配置所需软件包的原因是die()
脚本中的post-package-install
。
删除该语句即可解决问题。