Composerで単一のライブラリを更新するにはどうすればよいですか?


311

SF2ディストリビューション(DoctrineFixtures)にインストールする必要があるパッケージは1つだけです。

私が走るとき

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から1つのライブラリのみを更新/インストールする方法を教えてください。


あなたは正しいコマンドを使用しています。見せてもらえますcomposer.jsonか?
cheesemacfly 2013年

私の回答で提供されているコマンドで試してください。それ以外の場合は、取得したエラーの説明を提供してください(つまり、composerが不平を言っている場合のcomposerの出力)
NicolaiFröhlichMay

composer.jsonがプロジェクトの代替フォークを参照している可能性があります。
iconoclast 14

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、2015年

2
requireは別のパッケージの更新をトリガーしますか?
hakre 2015

1
正確に何を知りたいですか?もっと具体的にしていただけますか?コマンドをrequire実行すると、別のパッケージ(依存関係の前に明示的にダウンロードされたか、依存関係として以前にダウンロードされたパッケージ)が自動的に更新されるかどうかを知りたいcomposer require <package>:<version-constraint>@<stability-flag>ですか?
NicolaiFröhlich、2015

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-sourcesource可能な場合はパッケージをインストールします。
  • --prefer-distdist可能な場合はパッケージをインストールします。
  • --ignore-プラットフォームREQS:無視phphhvmlib-*および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自動読み込みをクラスマップに変換します。これは特に本番環境で推奨されますが、実行に少し時間がかかる可能性があるため、現在デフォルトでは実行されていません。
  • - ロック:ロックファイルのハッシュのみを更新して、ロックファイルが古くなっているという警告を抑制します。
  • -依存関係あり:ホワイトリストに登録されたパッケージのすべての依存関係もホワイトリストに追加します。
  • --ptable-stable:依存関係の安定したバージョンをします。
  • --prefer-lowest:依存関係の最も低いバージョンを優先します。一般的にで使用される、要件の最小バージョンのテストに役立ちます--prefer-stable

ZSHのユーザーが自分をラップする必要があるかもしれないことにしてください注vendor/*:引用符でcomposer update "vendor/*"
ZeroThe2nd

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十分です。その後にinstallを呼び出す必要はありません
Adam

1
まさに私が探しているもの。よく説明しました。upvoted
カピタン

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

次に、Returnキーを押すだけです。ターミナルは別のパッケージを要求します。別のパッケージをインストールしたくない場合は、単にReturnキーを押すだけで完了です。


6

次のコマンドを使用して、モジュールをその依存関係で更新できます

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

5

composerが、composer.jsonで設定したバージョン制約内の最後のバージョンにすでにインストールされている1つのパッケージを確実に更新するには、パッケージをベンダーから削除してから、次を実行します。

php composer.phar update vendor/package

4
この提案は、github.com / composer / composer / issues / 3112にもあります。PS:説明なしの反対票はとても簡単で役に立たない。
Tsounabe 2016年

5

使うだけ

composer require {package/packagename}

お気に入り

composer require phpmailer/phpmailer

パッケージがベンダーフォルダーにない場合.. composerがパッケージをインストールし、パッケージが存在する場合、composerが最新バージョンにパッケージを更新します。


2

特定のパッケージをインストールしたかったので、「SF2ディストリビューション(DoctrineFixtures)には1つのパッケージのみをインストールする必要があります。」

php composer.phar require package/package-name:package-version 十分でしょう

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.