proudmore
@proudmore

По какой причине composer не может разрешить зависимости?

Здравствуйте. Прошу помощи у сообщества.
Есть структура приватных пакетов, которая выглядит следующим образом:
Схема
8bF_QaHVDq8.jpg

На словах: есть пакет basis, который нужен пакету common. Эти два пакета - нужны всем пакетам ниже, которые, как правило, требуют только basis и common + иные зависимости из публичных пакетов.
В чем проблема: по отдельности каждый модуль спокойно устанавливает для себя пакеты basis и common, но как только эти модули загружаются как зависимость конечного приложения, возникает проблема:
Схема
f7rOjXuWO-0.jpg


Ошибка:

Problem 1
- Installation request for vendor/letters dev-master -> satisfiable by vendor/letters[dev-master].
- vendor/letters dev-master requires vendor/common dev-master -> no matching package found.
Problem 2
- Installation request for vendor/tasks dev-master -> satisfiable by vendor/tasks[dev-master].
- vendor/tasks dev-master requires vendor/common dev-master -> no matching package found.
Problem 3
- Installation request for vendor/contractors dev-master -> satisfiable by vendor/contractors[dev-master].
- vendor/contractors dev-master requires vendor/common dev-master -> no matching package found.
Problem 4
- Installation request for vendor/filestorage dev-master -> satisfiable by vendor/filestorage[dev-master].
- vendor/filestorage dev-master requires vendor/common dev-master -> no matching package found.
Problem 5
- Installation request for vendor/partners dev-master -> satisfiable by vendor/partners[dev-master].
- vendor/partners dev-master requires vendor/common dev-master -> no matching package found.
Problem 6
- Installation request for vendor/userauth dev-master -> satisfiable by vendor/userauth[dev-master].
- vendor/userauth dev-master requires vendor/common dev-master -> no matching package found.
Problem 7
- vendor/keys dev-master requires vendor/common dev-master -> no matching package found.
- vendor/keys dev-master requires vendor/common dev-master -> no matching package found.
- Installation request for vendor/keys dev-master -> satisfiable by vendor/keys[dev-master].

Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see for more details.
- It's a private package and you forgot to add a custom repository to find it



composer.json приложения
{
	"type" : "project",
	"minimum-stability" : "dev",
	"require" : {
		"php" : ">=7.2.0",
		"yiisoft/yii2" : "~2.0.6",
		"yiisoft/yii2-bootstrap" : "~2.0.0",
		"yiisoft/yii2-swiftmailer" : "~2.0.0 || ~2.1.0",
		"yiisoft/yii2-httpclient" : "~2.0.0",
		"mustache/mustache" : "*",
		"2amigos/yii2-ckeditor-widget" : "*",
		"kartik-v/yii2-mpdf" : "dev-master",
		"vendor/letters": "dev-master",
		"vendor/tasks": "dev-master",
		"vendor/contractors": "dev-master",
		"vendor/filestorage": "dev-master",
		"vendor/partners": "dev-master",
		"vendor/keys": "dev-master",
		"vendor/documents": "dev-master",
		"vendor/userauth": "dev-master"
	},
	"require-dev" : {
		"yiisoft/yii2-debug" : "~2.0.0",
		"yiisoft/yii2-gii" : "~2.0.0",
		"yiisoft/yii2-faker" : "~2.0.0",
		"codeception/base" : "^2.2.3",
		"codeception/verify" : "~0.3.1"
	},
	"config" : {
		"process-timeout" : 1800,
		"fxp-asset" : {
			"enabled" : false
		}
	},
	"repositories" : [
		{
			"type" : "composer",
			"url" : "https://asset-packagist.org"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/letters.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/keys.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/tasks.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/filestorage.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/userauth.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/partners.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/documents.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/keys.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/documents.git"
		},
		{
			"type": "git",
			"url": "git@gitlab.com:vendor/contractors.git"
		}
	]
}


Все файлы composer.json приложу в комментариях, т.к. тостер запрещает создавать вопросы объемом более 10к символов.
  • Вопрос задан
  • 250 просмотров
Решения вопроса 1
@Flying
Могу предположить что причина проблемы в том что в разделе "repositories" основного composer.json у вас не указано где искать пакеты vendor/basis и vendor/common. Поскольку эти репозитории приватные и не находятся через публичный индекс пакетов - Composer должен получить информацию о том где они находятся (по аналогии с остальными приватными пакетами). Могу предположить что ради оптимизации Composer разбирает только основной описатель на предмет определения местонахождения пакетов.

Также есть вариант того что пакеты vendor/basis и vendor/common нужно будет добавить напрямую в основной composer.json приложения. По крайней мере когда я последний раз сталкивался с такой ситуацией - помогло именно это.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы