1. ホーム
  2. composer-php

[解決済み】Composer:古い依存関係を更新せずに別の依存関係をインストールするにはどうすればいいですか?

2022-04-07 12:11:16

質問

あるプロジェクトにいくつかの依存関係があり、別の依存関係をインストールしたいのですが、他の依存関係はそのままにしておきたいと考えています。そこで、私は composer.json を実行すると composer install と表示され、次のような出力が得られます。

Installing dependencies from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
Your requirements could not be resolved to an installable set of packages.

Problem 1
    - laravel/framework dev-master requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    - laravel/framework dev-master requires ext-mcrypt * -> the requested PHP extension mcrypt is missing from your system.
    - Installation request for laravel/framework dev-master -> satisfiable by laravel/framework dev-master.

まず最初に、私はmcryptをインストールしているので、なぜそこで文句を言われるのかわかりません。

では、この新しい依存関係をインストールするにはどうすればよいのでしょうか?

私のcomposer.jsonです。

{
    "require": {

        "opauth/opauth": "*",
        "opauth/facebook": "*",
        "opauth/google": "*",
        "opauth/twitter": "*",

        "imagine/Imagine": "dev-develop",

        "laravel/framework": "4.*",
        "loic-sharma/profiler": "dev-master"
    },
    "autoload": {
        "classmap": [
            "app/libraries",
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/tests/TestCase.php"
        ]
    },
    "minimum-stability": "dev"
}

解決方法は?

新しいパッケージとそれだけをインストールするには、2つの方法があります。

  1. を使用すると require コマンドを実行するだけです。

    composer require new/package
    
    

    Composer は、使用するのに最適なバージョン制約を推測し、そのパッケージをインストールし、それを composer.lock .

    また、実行することで明示的なバージョン制約を指定することができます。

    composer require new/package ~2.5
    
    

-または

  1. を使用することで update コマンドで、新しいパッケージを手動で composer.json を実行します。

    composer update new/package
    
    

Composer が "要件をインストール可能なパッケージ群に解決できなかったと不満を述べた場合は、フラグ --with-dependencies . これは、インストール/更新しようとしているパッケージのすべての依存関係をホワイトリストに登録します (ただし、他の依存関係は登録しません)。

質問者のLaravelとmcryptの問題について:CLIのphp.iniで適切に有効化されているかどうか確認してください。もし php -m が表示されない場合は、mcryptが欠落しています。

重要です。 を忘れずに指定してください。 new/package を使用する場合 composer update ! この引数を省略すると、すべての依存関係、および composer.lock が更新されます。