0

Поскольку Zend постоянно публикует версии своих основных пакетов ZF3, у меня проблемы с работой моего старого приложения ZF2.Composer install не может разрешать зависимости для проекта ZF2 больше

Если я бегу composer install с действительным composer.lock на месте я получаю follwing предупреждения с большинством зависимостей ZF:

- Installing zendframework/zend-stdlib (2.7.7) 
    Downloading: 100%   
    Failed to download zendframework/zend-stdlib from dist: The checksum verification of the file failed (downloaded from https://packages.zendframework.com/composer/zendframework-zend-stdlib-2.7.7-19d9a4.zip) 
    Now trying to download from source 
- Installing zendframework/zend-stdlib (2.7.7) 
    Cloning baa65aec7bc75260254b5f03447f0c16360f9e59 

Поскольку у меня есть много зависимостей, как, что, установить/Клонирование принимает навсегда и никогда не заканчивается, потому что у моей виртуальной машины заканчивается память.

Теперь я попытался либо запустить composer update, либо удалить композитор.lock и снова запустить composer install. Я даже попытался удалить package.zendframework.com repo из composer.json, поскольку Zend говорит, что он больше не нужен.

Однако из-за новой версии ZF3 я получаю неразрешимые требования.

Пример:

Loading composer repositories with package information 
Updating dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 

    Problem 1 
    - jhuet/zdt-logger-module dev-master requires zendframework/zend-developer-tools ^1.1.0 -> satisfiable by zendframework/zend-developer-tools[1.2.x-dev, 1.1.x-dev]. 
    - Can only install one of: zendframework/zend-developer-tools[dev-master, 1.2.x-dev]. 
    - Conclusion: don't install zendframework/zend-servicemanager 2.7.7 
    - Conclusion: don't install zendframework/zend-servicemanager 3.1.1 
    - Conclusion: don't install zendframework/zend-servicemanager 3.1.0 
    - Installation request for zendframework/zend-developer-tools dev-master -> satisfiable by zendframework/zend-developer-tools[dev-master]. 
    - Conclusion: don't install zendframework/zend-servicemanager 2.7.6|install zendframework/zend-servicemanager 3.1.0 
    - Installation request for zfcampus/zf-apigility-admin ~1.0 -> satisfiable by zfcampus/zf-apigility-admin[1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.1.0, 1.1.1, 1.1.2, 1.2.0, 1.2.1, 1.2.2, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7]. 
    - Installation request for jhuet/zdt-logger-module dev-master -> satisfiable by jhuet/zdt-logger-module[dev-master]. 
    - Installation request for zf-commons/zfc-rbac ~2.0 -> satisfiable by zf-commons/zfc-rbac[2.0.0, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.3.0, 2.3.1, 2.4.0, 2.4.1, 2.4.2, v2.5.0, v2.5.1, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6]. 
    - jhuet/zdt-logger-module dev-master requires zendframework/zend-servicemanager 3.* -> satisfiable by zendframework/zend-servicemanager[3.0.0, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1]. 
    - Can only install one of: zendframework/zend-servicemanager[3.0.0, 2.7.5]. 
    - Can only install one of: zendframework/zend-servicemanager[3.0.1, 2.7.5]. 
    - Can only install one of: zendframework/zend-servicemanager[3.0.2, 2.7.5]. 
    - zendframework/zend-developer-tools 1.1.x-dev requires zendframework/zend-servicemanager ^2.7.5 || ^3.0.3 -> satisfiable by zendframework/zend-servicemanager[2.7.5, 2.7.6, 2.7.7, 3.0.3, 3.1.0, 3.1.1]. 
    - Conclusion: don't install zendframework/zend-servicemanager 3.0.3 

Последствия: Я не в состоянии получить мое ZF2 приложение в рабочем состоянии больше. Как я могу это исправить?

Это мой composer.json:

{ 
    "name": "myapp", 
    "description": "My app", 
    "version": "1.5.0", 
    "require": { 
     "php": "~7.0", 
     "ext-intl": ">=1.1.0", 
     "ext-mbstring": "*", 
     "zendframework/zendframework": "~2.5", 
     "zf-commons/zfc-user": "~1.0", 
     "zf-commons/zfc-rbac": "~2.0", 
     "zendframework/zendoauth": "~2.0", 
     "zfcampus/zf-apigility": "~1.0", 
     "zfcampus/zf-development-mode": "~2.0", 
     "aws/aws-sdk-php-zf2": "~2.0", 
     "goalio/goalio-forgotpassword": "~1.0", 
     "maglnet/magl-markdown": "~1.4", 
     "ocramius/proxy-manager": "~1.0" 
    }, 
    "require-dev": { 
     "zfcampus/zf-apigility-admin": "~1.0", 
     "zfcampus/zf-apigility-documentation": "~1.0", 
     "zendframework/zend-developer-tools": "dev-master", 
     "jhuet/zdt-logger-module": "dev-master", 
     "bjyoungblood/bjy-profiler": "dev-master" 
    } 
} 

Я надеюсь, что это решаемая как-то не очень много ручной работы.

ответ

2

Это проблемы, с которыми вы всегда можете столкнуться, когда вам требуется что-то вроде dev-master. Лучшей практикой было бы придерживаться семантических номеров версий, и если сопровождающий пакета следует за семантическим версированием, вы не должны столкнуться с необходимостью пакетов с нарушениями.

В вашем случае вы полагаетесь на версию dev-master «jhuet/zdt-logger-module». Этот недавно обновлен для поддержки ZF3. Если вы удалите "jhuet/zdt-logger-module": "dev-master",, это сработает для меня.

Чтобы оставить этот пакет вам это необходимо: "jhuet/zdt-logger-module": "^0.3". Это гарантирует, что он не загружает новый пакет 1.0.0, для которого требуется ZF3.