"설치 가능한 패키지 세트로 요구 사항을 해결할 수 없습니다"오류를 어떻게 해결할 수 있습니까?


84

실행하면 composer update유선 출력이 수신됩니다.

여기에 이미지 설명 입력

내 composer.json은 다음과 같습니다.

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.", "keywords": ["framework", "laravel"],
    "license": "MIT",
    "repositories": [{
        "type": "vcs",
        "url": "https://github.com/Zizaco/ardent.git"
    }],
    "require-dev": {
        "phpunit/phpunit": "4.3.*"
    },
    "require": {
        "laravel/framework": "4.2.*", 
        "laravelbook/ardent": "dev-master as 2.4.0", 
        "zizaco/entrust": "dev-master", 
        "sebklaus/profiler": "dev-master", 
        "doctrine/dbal": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations", "app/database/seeds", "app/tests",
            "app/libraries"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled", 
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled", 
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

어떻게 수정합니까?


8
이봐 요, composer.json 이미지를 composer.json의 텍스트 내용으로 바꿔주세요. 이를 통해 문제를 재현하고 해당 파일을 편집 할 수 있습니다. 감사.
— Jens A. Koch

2
@ JensA.Koch. 내가 할 수 있으면 좋겠다. StackOverflow는 저와 같은 낮은 담당자를 위해 많은 코드를 게시하지 못하도록합니다. 죄송합니다. 그 제한이 없었 으면 좋겠습니다.
— cyber8200 2015 년

3
아, 맞아. 내 잘못은 당신의 요점을 고려하지 않았습니다. 당신이 좀 더 얻을 수 있도록 upvote에 것인가 ...
— 옌스 A. 코흐

답변:


40

소프트웨어 종속성에 호환되지 않는 버전 충돌이 있습니다.

동시에 라 라벨 4.2.x 버전과 마스터 브랜치에서 "zizaco / entrust"를 설치하려고합니다. 그리고 그 마스터 브랜치는 적어도 라 라벨 5.0 (대략적으로 말하면)이 필요합니다.

문제는 지점에 대한 의존성에서 비롯됩니다. zizaco / entrust 패키지는 한때 마스터 브랜치에서 Laravel 4.2를 사용하고 있었고 그날 의존성을 설치할 수 있었을 것입니다. 하지만이 브랜치가 호환되지 않는 버전 요구 사항으로 업데이트되는 순간, 절대 실행할 수 없습니다.composer update 업데이트 된 종속성 하고 가져올 .

항상 태그 된 버전을 사용하십시오! 이상적으로는 호환 가능한 업데이트를 허용하는 완화 된 버전 요구 사항을 사용합니다. 이것은 물결표 2 자리 버전 요구 사항으로 표현되어야합니다.~1.2 1.2.0 이상 (예 : 1.2.99 또는 1.2.100) 및 1.3 이상을 설치합니다. 특정 패치 릴리스가 필요한 경우 : Caret-three-number 버전 ^1.2.10은 1.2.10 이상, 1.3 이상을 설치합니다.

대신이 버전 요구 사항 dev-master을 사용하면 마스터 브랜치에서 불안정한 상태 대신 릴리스 된 버전을 사용할 수 있으며 Laravel 4.2에서 여전히 작동하는 최신 버전을 처리 할 수 ​​있습니다. 나는 zizaco / entrust 버전 1.3.0이 될 것이라고 생각하지만 버전 1.2도 자격이 있습니다. 로 이동합니다 "zizaco/entrust": "~1.2".


7
이 게시물에 대한 핵심 대답은"zizaco/entrust": "~1.2"
— cyber8200

오류 메시지의 어떤 부분이 Laravel 5.0에서 필요 하다고 생각했는지 아는 것이 도움이 될 것입니다 zizaco/entrust.
— quant

글쎄, 내가 올바르게 기억한다면 언급 된 라이브러리를보고 있고 composer.json의 요구 사항을 보았습니다. 그리고 명시적인 요구 사항이 없었지만 일부 구성 요소가 있기 때문에 내가 본 것을 의역했습니다. 오류 메시지에서에 illuminate/support ^5.0의해 요구되는 것을 볼 수 있으며 zizaco/entrust"Laravel"과 "Illuminate"가 기본적으로 동일한 것을 알고 있다면 결론이 정확해야합니다.
— Sven


40

나는 같은 문제에 직면하고 있습니다. 'Lumen'마이크로 서비스 프레임 워크를 사용하고 있습니다. 최근에 두 개의 패키지를 설치하여 동일한 문제를 해결했습니다.

  1. sudo apt-get install php7.0-mbstring ,
  2. sudo apt-get install php7.0-xml 또는 sudo apt-get install php-xml

이것을 설치 한 후 다음 명령을 실행해야합니다. composer update

희망, 문제가 해결 될 것입니다. 내 시스템에서 작업합니다.


사람들은 프로덕션에서 작곡가 업데이트를 사용해서는 안됩니다. 이로 인해 문제가 발생할 수 있습니다. composer install은 설치하기에 적합한 명령입니다. 나는 당신을 비추천했지만 1과 2가 정확하기 때문에 나는 찬성합니다.
— Marcelo Agimóvel

내 상황에서는 php-gd를 설치하는 것이 트릭을 수행했습니다. Composer는 verbose (-vvv) 플래그가 켜진 상태에서도 실패 출력에서이를 언급하지 않았습니다.
— Brad

1
Ubuntu 20.04에서 작업 중입니다. 이 명령 만 실행하면 충분합니다.sudo apt-get install php-xml
— Loïch

8

그 있었 dev-master들에 자동으로 추가? '적합한 버전'을 사용 "*"하거나 "@dev"개발 패키지에 신경 쓰지 않는다면 불필요한 버전 제약으로 피하십시오 . 내 생각 엔 Entrust가 잠재적 인 문제의 원인이라고 생각합니다.

또한 "minimum-stability": "stable"추가 제약을 부과하고

"minimum-stability": "dev",
"prefer-stable": true

갈등이 없습니다. 경험의 법칙이라고 생각하세요.


문제는 불안정한 개발 버전의 사용입니다. (안정적인 것을 선호하더라도) 맹목적으로 허용하는 것이 유지 관리 할 수없는 혼란의 열쇠입니다.
— Sven

@Sven 대답은 dev-master제약 인 문제를 직접 해결합니다 . 느슨한 버전 제약이 좋다고 말하지 않습니다. 아마도 엉망이 될 것입니다. 이것은 개발자의 양심에 달려 있습니다. 태그에 대한 답변이 의견이 없다는 사실이 틀린 것은 아닙니다. 그건 그렇고, 나는 반대 투표에 감사드립니다. 이웃 답변에 반대 투표를하는 것은 매우 윤리적입니다.
— Estus Flask

질문 한 내용에 따라이 답변이 정확하다는 데 동의합니다. 그것은 또한 나를 위해 일했습니다. 투표했습니다!
— tmarois

2

'laravel/framework'종속성 버전을에서 "^8.0"으로 설정하는 동일한 문제를 해결 했습니다 "^7.0".

그 실행 후 composer update --ignore-platform-reqs단순히 작동

composer.json


오늘 현재 최신 라 라벨 프레임 워크 버전은 7.10입니다. 그렇다면 의존성은 어떻게 8.0까지 올라 갔습니까?
— Digvijay

라 라벨을 처음 접했기 때문에 솔직히 잘 모르겠습니다. composer.json 파일을 엉망으로 만든 새로운 설치였습니다
— nicolasDevDes

1

composer.json 내부 배열 "barryvdh/laravel-cors": "^0.7.3"끝에 추가require

composer.json을 저장하고 실행 composer update

완료되었습니다!


2
사람들은 컴포저 업데이트를 사용하여 종속성을 설치해서는 안됩니다. composer 설치를 사용해야합니다. Composer 업데이트는 모든 종속성을 업데이트하므로 치명적일 수 있습니다.
— Marcelo Agimóvel

0

Laravel 5.8에서이 문제가 발생했습니다. composer require 각 라이브러리와 올바르게 설치된 모든 위치에 대해 하는 .

이렇게 :

composer.json 파일에 추가하거나 버전을 지정하는 대신 :

composer require msurguy/honeypot: dev-master

대신 버전을 지정하지 않고 수행했습니다.

composer require msurguy/honeypot

도움이 되었기를 바랍니다. 감사합니다.



0

"zizaco/entrust": "*"대신 에 추가하여 동일한 오류를 해결 했습니다 "zizaco/entrust": "~1.2".


-1

원인:

프로젝트 폴더가 루트 사용자의 소유이기 때문에 오류가 발생합니다.

해결책

소유권을 루트 사용자가 아닌 현재 로그인 한 사용자로 변경하십시오. 단독 사용자로 루트 만있는 경우 루트 권한이있는 다른 사용자를 만듭니다.

$ sudo chown -R current_user / my / project / directory /

그때

$ composer 설치


-7

php.ini 파일에서 curl을 활성화하십시오.

;extension=php_curl.dll

...에

extension=php_curl.dll

그런 다음 작곡가 설치


버전 불일치 (Laravel 4.x 대 Laravel 5.x)에 대해 php_curl.dll을 활성화하면 어떤 작업이 수행되는지 잘 모르겠습니다. 이것이 질문을 어떻게 해결하는지 설명해 주시겠습니까?
— Chris Forrence 17.07.13

위에서 설명한 문제가 있었기 때문에 컬을 활성화하고 문제가 해결되었습니다. 작곡가 또는 laravel이이 PHP 확장을 사용하여 패키지를 다운로드한다고 생각합니다. 제 경우에는 laravel 패키지와 정확히 호환되지 않는 것이 아니라 작곡가가 패키지를 다운로드하는 것이 어려울 것입니다.
— Gideao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.