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


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.