Composer로 단일 라이브러리를 업데이트하는 방법은 무엇입니까?


311

SF2 배포판 (DoctrineFixtures)에 하나의 패키지 만 설치하면됩니다.

내가 달릴 때

php composer.phar update

나는 얻다

  - Updating twig/twig (dev-master 39d94fa => v1.13.0)
    The package has modified files:
    M CHANGELOG
    M doc/filters/batch.test
    M doc/filters/index.rst
    M doc/filters/url_encode.rst
    M doc/functions/index.rst
    M doc/tags/index.rst
    M doc/tests/index.rst
    M lib/Twig/Autoloader.php
    M lib/Twig/Compiler.php
    M lib/Twig/CompilerInterface.php
-10 more files modified, choose "v" to view the full list

마지막 개발자가 공급 업체 내부에서 많은 파일을 편집 한 것으로 보입니다.

이 문제를 해결하기 위해 시도했습니다.

php composer.phar update <package_name>

그러나 그것은 작동하지 않는 것 같습니다. composer.json에서 하나의 라이브러리 만 업데이트 / 설치할 수 있습니까?


올바른 명령을 사용하고 있습니다. 당신은 우리에게 당신을 보여줄 수 composer.json있습니까?
cheesemacfly

내 대답에 제공된 명령으로 시도하십시오. 그렇지 않으면 오류에 대한 설명을 제공하십시오 (예 : 작곡가가 불평하는 경우 작곡가 출력)
Nicolai Fröhlich

composer.json은 프로젝트의 대체 포크를 참조 할 수 있습니다.
iconoclast

내 laravel 프로젝트에서 특정 종속성을 업데이트하고 명시 적으로 설치할 특정 구성 요소를 지정했습니다 : composer update laravelcollective / html. 작동하는 것 같았습니다.
marko

답변:


526

doctrine/doctrine-fixtures-bundle버전 2.1.*및 최소 안정성으로 설치하려면 다음을 @dev사용하십시오.

composer.phar require doctrine/doctrine-fixtures-bundle:2.1.*@dev

이 단일 패키지 만 업데이트하려면 다음을 수행하십시오.

composer.phar update doctrine/doctrine-fixtures-bundle

9
(모드 VERBOSE : composer.phar 갱신 -vvv 패키지 / 패키지) -vvv로 설치 / 업데이트를 실행 : 때때로 그렇지 않으면 숨겨져있을 수있는 표시됩니다 더 나은로 가끔 대화 형 프롬프트 될 수 있습니다 도움이 될 수있다
timhc22

1
다른 패키지에 오류가 있으면 어떻습니까? (제 경우에는 설치가 중지되었습니다).
Thomas Decaux

2
요구 사항은 다른 패키지의 업데이트를 유발합니까?
hakre

1
정확히 무엇을 알고 싶습니까? 좀 더 구체적으로 할 수 있습니까? 명령을 require실행할 때 명시 적 으로 지정된 이전에 또는 이전에 종속성으로 다운로드 된 다른 패키지 가 자동으로 업데이트 될 수 있다는 것을 알고 싶 composer require <package>:<version-constraint>@<stability-flag>습니까?
Nicolai Fröhlich

7
> composer.phar update doctrine / doctrine-fixtures-bundle은 다른 모든 패키지도 함께 업데이트합니다 ((
podarok

184

모든 패키지가 아닌 일부 패키지 만 업데이트하려는 경우 다음과 같이 나열 할 수 있습니다.

php composer.phar update vendor/package:2.* vendor/package2:dev-master

와일드 카드를 사용하여 한 번에 여러 패키지를 업데이트 할 수도 있습니다.

php composer.phar update vendor/*
  • --prefer-source : source가능한 경우 패키지를 설치합니다 .
  • --prefer-dist : dist사용 가능한 경우 패키지를 설치합니다 .
  • --ignore-플랫폼 REQS는 : 무시 php, hhvm, lib-*ext-*요구 사항 및 로컬 컴퓨터가이를 이행하지 않는 경우에도 설치를 강제로. platform config 옵션 도 참조하십시오 .
  • --dry-run : 실제로 아무 것도하지 않고 명령을 시뮬레이션합니다.
  • --dev :에 나열된 패키지를 설치합니다 require-dev(기본 동작).
  • --no-dev :에 나열된 패키지 설치를 건너 뜁니다 require-dev. 오토로더 생성은 autoload-dev규칙을 건너 뜁니다 .
  • --no-autoloader : 오토로더 생성을 건너 뜁니다.
  • --no-scripts : composer.json에 정의 된 스크립트 실행을 건너 뜁니다.
  • --no-plugins : 플러그인을 비활성화합니다.
  • --no-progress : 백 스페이스 문자를 처리하지 않는 일부 터미널 또는 스크립트를 망칠 수있는 진행률 표시를 제거합니다.
  • --optimize-autoloader (-o) : PSR-0 / 4 자동 로딩을 클래스 맵으로 변환하여 더 빠른 자동 로더를 얻습니다. 이것은 특히 프로덕션에 권장되지만 실행하는 데 약간의 시간이 걸릴 수 있으므로 현재 기본적으로 수행되지 않습니다.
  • --lock : 잠금 파일이 오래되었다는 경고를 표시하지 않도록 잠금 파일 해시 만 업데이트합니다.
  • --with-dependencies : 화이트리스트 패키지의 모든 종속성을 화이트리스트에 추가합니다.
  • --prefer-stable : 안정적인 버전의 종속성을 선호합니다.
  • --prefer-lowest : 가장 낮은 버전의 종속성을 선호합니다. 와 함께 사용되는 최소 버전의 요구 사항을 테스트하는 데 유용합니다 --prefer-stable.

vendor/*composer update "vendor/*"
ZSH

51

설치, 업데이트 및 요구 사항의 차이

다음 시나리오를 가정하십시오.

composer.json

"parsecsv/php-parsecsv": "0.*"

composer.lock 파일

  "name": "parsecsv/php-parsecsv",
            "version": "0.1.4",

최신 릴리스는 1.1.0입니다. 최신 0.*릴리스는0.3.2

설치: composer install parsecsv/php-parsecsv

0.1.4잠금 파일에 지정된 버전이 설치 됩니다.

최신 정보: composer update parsecsv/php-parsecsv

패키지가로 업데이트됩니다 0.3.2. composer.json과 관련하여 가장 높은 버전입니다. 의 항목 composer.lock이 업데이트됩니다.

필요합니다 : composer require parsecsv/php-parsecsv

최신 버전이 업데이트되거나 설치됩니다 1.1.0. 귀하의 composer.lock파일 및 composer.json파일도 업데이트됩니다.


굉장, 그래서 제한된 버전 내에서 하나의 패키지를 새로 고친 composer update author/package다음composer install author/package
윌리엄 Randokun

@WilliamRandokun 만약 당신이 전에 그것을 설치했다면, 그것 composer update package만으로도 충분할 것입니다. 그 후 설치를 호출 할 필요가 없습니다
Adam

1
내가 찾는 것만 정확히 잘 설명했다. upvoted
kapitan

14

기본적으로 다음 중 하나를 수행하여 새 패키지를 설치할 수 있습니다.

php composer.phar require

그러면 터미널에서 검색 할 패키지 이름을 입력하라는 메시지를 표시합니다.

$ Search for a package []: //Your package name here

그런 다음 터미널은 패키지 버전을 묻습니다 (최신 버전을 원하면 비워 두십시오)

$ Enter the version constraint to require (or leave blank to use the latest version) []: //your version number here

그런 다음 리턴 키를 누르면됩니다. 다른 패키지를 설치하지 않으려는 경우 터미널은 다른 패키지를 요구합니다. 리턴 키를 누르면 완료됩니다.


6

다음 명령을 사용하여 종속성이있는 모듈을 업데이트 할 수 있습니다

composer update vendor-name/module-name --with-dependencies

5

composer.json에서 설정 한 버전 제약 조건 내에서 마지막 버전으로 이미 설치된 하나의 패키지를 composer가 업데이트하도록하려면 패키지를 공급 업체에서 제거하고 다음을 실행하십시오.

php composer.phar update vendor/package

4
이 게시물에서 동일한 제안을 찾을 수 있습니다 : github.com/composer/composer/issues/3112 . 추신 : 설명없이 투표를하기가 너무 쉽고 쓸모가 없습니다.
Tsounabe

5

그냥 사용

composer require {package/packagename}

처럼

composer require phpmailer/phpmailer

패키지가 벤더 폴더에없는 경우.


2

특정 패키지를 설치하려고했기 때문에 "SF2 배포판 (DoctrineFixtures)에 하나의 패키지 만 설치하면됩니다."

php composer.phar require package/package-name:package-version 충분할 것이다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.