Composerでインストール済みのパッケージを更新・削除する
Composerはパッケージ管理ツールです。
目的のライブラリに関連(依存)するパッケージを、
一緒に一括のインストールしてくれて便利です。
既にインストールされているパッケージの更新や削除もcomposer.jsonの変更で行えます。
Composerでインストール済みのパッケージを更新・削除する
Composerでインストール済みのパッケージから、
要らなくなったパッケージを削除したり更新したりするには、
composer.jsonを変更して行います。
まだパッケージのインストールなどを行っていない場合は以下を参照ください。
さて、現在の「composer.json」の状態です。
composer.json変更前
1 2 3 4 5 6 7 8 |
{ "require-dev": { "phpunit/phpunit": "4.5.*", "phpunit/phpunit-skeleton-generator": "*", "phpdocumentor/phpdocumentor": "2.*", "phpmd/phpmd" : "@stable" } } |
4つのパッケージのインストールが既に済んでいます。
ここから「composer.json」の状態を変更して、
一部のパッケージを削除します。
composer.json変更後
1 2 3 4 5 6 7 |
{ "require-dev": { "phpunit/phpunit-skeleton-generator": "*", "phpdocumentor/phpdocumentor": "2.*", "phpmd/phpmd" : "@stable" } } |
「phpunit/phpunit」を削除しています。
updateの実行(削除)
「composer.json」の状態に合せてcomposerに更新を指示します。
コマンドプロンプトを開き、Composerのインストールディレクトリに移動します。
>cd C:\composer
次に、以下コマンドを実行します。
>composer update
以下のように「phpunit」関連のパッケージが削除されていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
C:\composer>composer update Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 0 installs, 0 updates, 18 removals - Removing symfony/yaml (v3.3.16) - Removing sebastian/resource-operations (1.0.0) - Removing sebastian/recursion-context (2.0.0) - Removing sebastian/object-enumerator (2.0.1) - Removing sebastian/global-state (1.1.1) - Removing sebastian/exporter (2.0.0) - Removing sebastian/environment (2.0.0) - Removing sebastian/diff (1.4.3) - Removing sebastian/comparator (1.2.4) - Removing sebastian/code-unit-reverse-lookup (1.0.1) - Removing phpunit/phpunit-mock-objects (3.4.4) - Removing phpunit/phpunit (5.7.27) - Removing phpunit/php-token-stream (1.4.12) - Removing phpunit/php-timer (1.0.9) - Removing phpunit/php-file-iterator (1.4.5) - Removing phpunit/php-code-coverage (4.0.8) - Removing phpspec/prophecy (1.7.6) - Removing myclabs/deep-copy (1.7.0) Package herrera-io/json is abandoned, you should avoid using it. Use kherge/json instead. Package herrera-io/phar-update is abandoned, you should avoid using it. No repla cement was suggested. Package kherge/version is abandoned, you should avoid using it. No replacement w as suggested. Package phpunit/phpunit-skeleton-generator is abandoned, you should avoid using it. No replacement was suggested. Writing lock file Generating autoload files C:\composer> |
コマンドプロンプトが入力待ちになれば、アンインストール完了です。
上記では、Removing phpunit/phpunit (5.7.27)と既にバージョン5になっていますが、
既に一度Updateを実行してしまっていた為です。
アンインストールはする必要なく、composer.jsonの書き換えだけで、
新しいバージョンに更新する事ができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
c:\composer>composer update Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 4 installs, 10 updates, 0 removals - Updating symfony/yaml (v2.8.39 => v3.3.16): Downloading (100%) - Installing sebastian/resource-operations (1.0.0): Downloading (connecting... Downloading (100%) - Updating sebastian/recursion-context (1.0.5 => 2.0.0): Downloading (connecti Downloading (100%) - Installing sebastian/object-enumerator (2.0.1): Downloading (100%) - Updating sebastian/exporter (1.2.2 => 2.0.0): Downloading (100%) - Updating sebastian/environment (1.3.8 => 2.0.0): Downloading (connecting...) Downloading (100%) - Updating phpunit/phpunit-mock-objects (2.3.8 => 3.4.4): Downloading (connect Downloading (100%) - Updating phpunit/php-file-iterator (1.3.4 => 1.4.5): Downloading (connecting Downloading (100%) - Installing sebastian/code-unit-reverse-lookup (1.0.1): Downloading (connecti Downloading (100%) - Updating phpunit/php-code-coverage (2.2.4 => 4.0.8): Downloading (connecting Downloading (100%) - Installing myclabs/deep-copy (1.7.0): Downloading (100%) - Updating phpunit/phpunit (4.5.1 => 5.7.27): Downloading (100%) - Updating zendframework/zend-serializer (2.8.1 => 2.9.0): Downloading (connec Downloading (100%) - Updating symfony/dependency-injection (v3.1.10 => v3.2.14): Downloading (con Downloading (100%) Package herrera-io/json is abandoned, you should avoid using it. Use kherge/json instead. Package herrera-io/phar-update is abandoned, you should avoid using it. No repla cement was suggested. Package kherge/version is abandoned, you should avoid using it. No replacement w as suggested. Package phpunit/phpunit-skeleton-generator is abandoned, you should avoid using it. No replacement was suggested. [ErrorException] file_put_contents(./composer.lock): failed to open stream: Permission denie d update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no -suggest] [--with-dependencies] [--with-all-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [-- ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [-i|--interactive] [-- root-reqs] [--] [<packages>]... c:\composer> |
updateの実行(再インストール)
アンインストール後に、再びjsonを編集して、
「phpunit」のバージョンアップをして導入します。(既に5が入っていましたが削除しています)
1 2 3 4 5 6 7 8 |
{ "require-dev": { "phpunit/phpunit": "5.*", "phpunit/phpunit-skeleton-generator": "*", "phpdocumentor/phpdocumentor": "2.*", "phpmd/phpmd" : "@stable" } } |
同様に実行するとインストールが実行されます。
- Installing phpunit/phpunit (5.7.27): Loading from cache
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
C:\composer>composer update Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 18 installs, 0 updates, 0 removals - Installing symfony/yaml (v3.3.16): Loading from cache - Installing sebastian/resource-operations (1.0.0): Loading from cache - Installing sebastian/recursion-context (2.0.0): Loading from cache - Installing sebastian/object-enumerator (2.0.1): Loading from cache - Installing sebastian/global-state (1.1.1): Loading from cache - Installing sebastian/exporter (2.0.0): Loading from cache - Installing sebastian/environment (2.0.0): Loading from cache - Installing sebastian/diff (1.4.3): Loading from cache - Installing sebastian/comparator (1.2.4): Loading from cache - Installing phpunit/phpunit-mock-objects (3.4.4): Loading from cache - Installing phpunit/php-timer (1.0.9): Loading from cache - Installing phpunit/php-file-iterator (1.4.5): Loading from cache - Installing sebastian/code-unit-reverse-lookup (1.0.1): Loading from cache - Installing phpunit/php-token-stream (1.4.12): Loading from cache - Installing phpunit/php-code-coverage (4.0.8): Loading from cache - Installing phpspec/prophecy (1.7.6): Loading from cache - Installing myclabs/deep-copy (1.7.0): Loading from cache - Installing phpunit/phpunit (5.7.27): Loading from cache sebastian/global-state suggests installing ext-uopz (*) phpunit/phpunit suggests installing phpunit/php-invoker (~1.1) Package herrera-io/json is abandoned, you should avoid using it. Use kherge/json instead. Package herrera-io/phar-update is abandoned, you should avoid using it. No repla cement was suggested. Package kherge/version is abandoned, you should avoid using it. No replacement w as suggested. Package phpunit/phpunit-skeleton-generator is abandoned, you should avoid using it. No replacement was suggested. Writing lock file Generating autoload files C:\composer> |
これで新しいバージョンのインストールが行えました。
このように「composer.json」の変更だけで、
簡単にパッケージのインストールやアンインストールが行え、
依存関係にある他のパッケージも併せてインストールされますので、
安心してパッケージの利用を開始する事ができます。
例えばphpunitで言えば、以下の様な依存関係に基づいて、
関連のパッケージが導入されていることが分かります。
requires
- php: >=5.3.3
- phpunit/php-text-template: ~1.2
- sebastian/version: ~1.0
- symfony/console: ~2.4
requires (dev)
- phpunit/phpunit: ~4.0
- mikey179/vfsstream: ~1.2
suggests
None
逆に言えば「phpunit」を利用するには、
別途、これだけのライブラリが必要という事になります。
手でソースのインストールを行ってすべてバージョンを合わせて揃えるのは、
かなり面倒なことだという事が分かります。
単にコマンドプロンプトからphpunitを実行するだけであれば、
phpunitのソース(phar)だけで実行もできます。
ですが、MakeGoodを利用する場合は、
Composerによるインストールでなければ正しく動作させることができませんでした。
MakeGoodなら実質Composerによるインストールが必須と思ってもいいと思います。
尚、本投稿は以下一連作業の一つになります。
当サイト内のコンテンツおよび画像を含むすべてにおいて、管理人アルゴリズンが著作権を保持しております。
当サイトでご紹介しております写真等につきましては著作権の放棄はしませんが、
ライセンスフリーでご利用いただいて構いません。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
サイト内コンテンツを引用される際には、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
公開日: