1. 问题
erater / speech-rater / queue ,在 composer.lock 的 source url 为 gitlab.sample.com.git (该地址已废弃)
如果直接安装其他包,比如rabc ,会报错 erater 的地址不对,不能读取remote repository 。 安装失败
如何解决composer.lock 中已经失效的源呢?
错误信息
$ composer require rbac
...
[RuntimeException]
Failed to execute git clone --no-checkout 'git@gitlab.sample.com:core/lib/ets-speech-rater.git' '/app/sample/vendor/ets/speech-rater' && cd '/app/sample/vendor/ets/speech-rater' && git remote add composer 'git@gitlab.sample.com:core/lib/ets-speech-rater.git' && git fetch composer
ssh: Could not resolve hostname gitlab.sample.com: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
...
对使用失效源的包进行处理
- 先删除,再安装 (其他包版本不会更改)
$ composer remove ets/speech-rater
$ composer require ets/speech-rater
...
Executing command (CWD): git clone --no-checkout 'git@git.sample.com:samplecore_lib/ets-erater.git' '/app/sample/vendor/ets/e-rater' && cd '/app/sample/vendor/ets/e-rater' && git remote add composer 'git@git.sample.com:samplecore_lib/ets-erater.git' && git fetch composer
Executing command (/app/sample/vendor/ets/e-rater): git branch -r
Executing command (/app/sample/vendor/ets/e-rater): git checkout '1.0.2' --
Executing command (/app/sample/vendor/ets/e-rater): git reset --hard 'fe872f6ddd977e61dfbc5119410f8c8225b799d4' --
REASON: Required by the root package: Install command rule (install ets/e-rater 1.0.0|install ets/e-rater 1.0.1|install ets/e-rater 1.0.2)
...
- 使用 update 更新该包 (其他包版本会更改 - 依赖的包版本同步更改?)
$ composer update ets/speech-rater -vvv
- 使用 require 更新该包 (其他包版本不会更改; 推荐,也可以指定更新的版本)
$ composer require ets/e-rater -vvv
...
- Installing ets/e-rater (1.0.2): Cloning fe872f6ddd977e61dfbc5119410f8c8225b799d4
Executing command (CWD): git clone --no-checkout 'git@git.sample.com:samplecore_lib/ets-erater.git' '/app/sample/vendor/ets/e-rater' && cd '/app/sample/vendor/ets/e-rater' && git remote add composer 'git@git.sample.com:samplecore_lib/ets-erater.git' && git fetch composer
Executing command (/app/sample/vendor/ets/e-rater): git branch -r
Executing command (/app/sample/vendor/ets/e-rater): git checkout '1.0.2' --
Executing command (/app/sample/vendor/ets/e-rater): git reset --hard 'fe872f6ddd977e61dfbc5119410f8c8225b799d4' --
REASON: Required by the root package: Install command rule (install ets/e-rater 1.0.2|install ets/e-rater 1.0.0|install ets/e-rater 1.0.1|install ets/e-rater 1.0.2)
...
- 执行完后
开发目录, 安装 composer require sample/laravel-rbac -vvv 包
“content-hash”: “b939e11498c726ffb2f4c17f2b24e9d0”
发生更改;
增加 sample/laravel-rbac , sample/rbac 安装内容
- 代码上传到 测试环境,
composer.json 和 composer.lock 和 开发环境一致
vendor 为之前的文件
composer require sample/laravel-rbac -vvv
成功安装rbac