2013-05-24 44 views
164

Tôi chỉ cần cài đặt 1 gói cho bản phân phối SF2 của mình (DoctrineFixtures).Làm thế nào để cập nhật một thư viện với Composer?

Khi tôi chạy

php composer.phar update 

tôi nhận được

- 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 

Có vẻ các nhà phát triển cuối cùng sửa rất nhiều file bên nhà cung cấp.

Để làm được việc này, tôi đã cố gắng

php composer.phar update <package_name> 

nhưng điều đó dường như không làm việc.

Làm cách nào để cập nhật/cài đặt chỉ 1 thư viện từ composer.json?

+0

của bạn đang sử dụng lệnh ngay . Bạn có thể chỉ cho chúng tôi 'composer.json' của bạn không? – cheesemacfly

+0

hãy thử với các lệnh được cung cấp trong câu trả lời của tôi nếu không, vui lòng cung cấp mô tả lỗi bạn nhận được (tức là đầu ra của nhà soạn nhạc nếu nhà soạn nhạc đang khiếu nại) – nifr

+0

Composer.json của bạn có thể tham chiếu đến ngã ba thay thế của dự án. – iconoclast

Trả lời

292

Để cài đặt doctrine/doctrine-fixtures-bundle với phiên bản 2.1.* và tối thiểu ổn định @dev sử dụng này:

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

sau đó để cập nhật chỉ gói duy nhất này:

composer.phar update doctrine/doctrine-fixtures-bundle 
+4

Có thể hữu ích: chạy cập nhật/cài đặt với -vvv (chế độ tiết: gói composer.phar cập nhật -vvv/gói) đôi khi có thể tốt hơn vì thỉnh thoảng một dấu nhắc tương tác sẽ xuất hiện có thể bị ẩn khác – timhc22

+0

Còn nếu có lỗi các gói khác? (Trong trường hợp của tôi cài đặt dừng lại). –

+0

Điều gì về yêu cầu kích hoạt bản cập nhật của một gói khác? – hakre

92

Nếu bạn chỉ muốn cập nhật một vài gói và không tất cả, bạn có thể liệt kê chúng như vậy:

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

Bạn cũng có thể sử dụng ký tự đại diện để cập nhật một loạt các gói cùng một lúc:

php composer.phar update vendor/* 
  • --prefer nguồn: Cài đặt gói từ source when available.
  • --prefer-dist: Cài đặt gói từ dist nếu có.
  • --ignore-platform-reqs: bỏ qua php, hhvm, lib-*ext-* yêu cầu và buộc các cài đặt ngay cả khi máy tính cục bộ không đáp ứng này. Xem thêm platformconfig option.
  • - chạy-chạy: Mô phỏng lệnh mà không thực sự làm bất cứ điều gì.
  • --dev: Cài đặt các gói được liệt kê trong require-dev (đây là hành vi mặc định).
  • --no-dev: Bỏ qua cài đặt các gói được liệt kê trong require-dev. Trình tự động tải bỏ qua các quy tắc autoload-dev.
  • --no-autoloader: Bỏ qua việc tạo trình tự động tải.
  • --no-scripts: Bỏ qua việc thực thi các tập lệnh được xác định trong composer.json.
  • --no-plugins: Tắt plugin.
  • --no-progress: Xóa màn hình tiến trình có thể gây rối với một số đầu cuối hoặc tập lệnh không xử lý các ký tự backspace.
  • --optimize-autoloader (-o): Tự động tải PSR-0/4 thành bản đồ lớp để có trình tải tự động nhanh hơn. Điều này được khuyến khích đặc biệt cho sản xuất, nhưng có thể mất một chút thời gian để chạy vì vậy nó hiện không được thực hiện theo mặc định.
  • --lock: Chỉ cập nhật băm tệp khóa để chặn cảnh báo về tệp khóa đã lỗi thời.
  • --với phụ thuộc: Thêm tất cả phụ thuộc của các gói thuộc danh sách trắng vào danh sách cho phép.
  • - ổn định hơn: Ưu tiên phiên bản ổn định của phụ thuộc.
  • --prefer-thấp nhất: Ưu tiên các phiên bản phụ thuộc thấp nhất. Hữu ích để thử nghiệm các phiên bản yêu cầu tối thiểu, thường được sử dụng với --prefer-stable.
4

Về cơ bản, bạn cũng có thể làm theo sau để cài đặt gói mới.

php composer.phar require 

thì thiết bị đầu cuối sẽ yêu cầu bạn nhập tên gói để tìm kiếm.

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

Sau đó, thiết bị đầu cuối sẽ yêu cầu phiên bản của gói (Nếu bạn muốn có phiên bản mới nhất chỉ để trống)

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

Sau đó, bạn chỉ cần nhấn phím Enter. Thiết bị đầu cuối sẽ yêu cầu một gói khác, nếu bạn không muốn cài đặt một gói khác, chỉ cần nhấn phím trả về và bạn sẽ hoàn thành.

2

Để đảm bảo rằng nhà soạn nhạc cập nhật một gói đã được cài đặt lên phiên bản mới nhất trong các khó khăn phiên bản mà bạn đã thiết lập trong composer.json loại bỏ các gói từ nhà cung cấp và sau đó thực hiện:

php composer.phar update vendor/package 
+3

Bạn sẽ tìm thấy gợi ý tương tự trong bài đăng này: https://github.com/composer/composer/issues/3112. PS: Bỏ phiếu xuống mà không có giải thích là dễ dàng như vậy để làm và vì vậy vô ích. – Tsounabe

Các vấn đề liên quan