Невозможно обновить symfony / finder 5.1.0 до 5.1.1 через composer - он просто очищает весь каталог - PullRequest
0 голосов
/ 17 июня 2020

Пакет symfony / finder - это транзитивная зависимость в моем приложении. Я попытался сделать composer update и получил следующий результат:

user@host:/var/www$ composer update && composer check
Loading composer repositories with package information
Updating dependencies (including require-dev)         
Package operations: 0 installs, 51 updates, 0 removals
  - Updating symfony/finder (v5.1.0 => v5.1.2): 
In ClassLoader.php line 444:

  [ErrorException]                                                                                                                       
  include(/var/www/vendor/composer/../symfony/finder/Comparator/NumberComparator.php): failed to open stream: No such file or directory  


Exception trace:
  at /var/www/vendor/composer/ClassLoader.php:444
 Composer\Util\ErrorHandler::handle() at /var/www/vendor/composer/ClassLoader.php:444
 include() at /var/www/vendor/composer/ClassLoader.php:444
 Composer\Autoload\includeFile() at /var/www/vendor/composer/ClassLoader.php:322
 Composer\Autoload\ClassLoader->loadClass() at n/a:n/a
 spl_autoload_call() at /var/www/vendor/symfony/finder/Finder.php:125
 Symfony\Component\Finder\Finder->depth() at /var/www/vendor/composer/composer/src/Composer/Util/Filesystem.php:77
 Composer\Util\Filesystem->emptyDirectory() at /var/www/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php:123
 Composer\Downloader\FileDownloader->doDownload() at /var/www/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php:97
 Composer\Downloader\FileDownloader->download() at /var/www/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php:38
 Composer\Downloader\ArchiveDownloader->download() at /var/www/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php:77
 Composer\Downloader\ZipDownloader->download() at /var/www/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php:225
 Composer\Downloader\FileDownloader->update() at /var/www/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php:271
 Composer\Downloader\DownloadManager->update() at /var/www/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php:218
 Composer\Installer\LibraryInstaller->updateCode() at /var/www/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php:120
 Composer\Installer\LibraryInstaller->update() at /var/www/vendor/composer/composer/src/Composer/Installer/InstallationManager.php:193
 Composer\Installer\InstallationManager->update() at /var/www/vendor/composer/composer/src/Composer/Installer/InstallationManager.php:160
 Composer\Installer\InstallationManager->execute() at /var/www/vendor/composer/composer/src/Composer/Installer.php:611
 Composer\Installer->doInstall() at /var/www/vendor/composer/composer/src/Composer/Installer.php:232
 Composer\Installer->run() at /var/www/vendor/composer/composer/src/Composer/Command/UpdateCommand.php:163
 Composer\Command\UpdateCommand->execute() at /var/www/vendor/symfony/console/Command/Command.php:258
 Symfony\Component\Console\Command\Command->run() at /var/www/vendor/symfony/console/Application.php:911
 Symfony\Component\Console\Application->doRunCommand() at /var/www/vendor/symfony/console/Application.php:264
 Symfony\Component\Console\Application->doRun() at /var/www/vendor/composer/composer/src/Composer/Console/Application.php:281
 Composer\Console\Application->doRun() at /var/www/vendor/symfony/console/Application.php:140
 Symfony\Component\Console\Application->run() at /var/www/vendor/composer/composer/src/Composer/Console/Application.php:113
 Composer\Console\Application->run() at /var/www/vendor/composer/composer/bin/composer:62

Я проверил, и оказалось, что каталог /var/www/vendor//symfony/finder просто полностью пуст. Я пробовал обновиться до 5.1.1, и результат был таким же. Запуск composer dump тоже не помог.

Поэтому мне пришлось добавить symfony / finder 5.1.0 в качестве зависимости в мое приложение, чтобы Composer продолжал работать. И это помогло - все остальные пакеты обновлялись без сучка и задоринки. отключен в https://github.com/symfony/finder.

Я запускаю Composer 1.10.7 внутри контейнера Docker. Вот как выглядит composer. json:

{
    "name": "name",
    "type": "project",
    "description": "",
    "license": "proprietary",
    "require": {
        "php": "^7.4.3",
        "ext-decimal": "^1.1",
        "ext-dom": "*",
        "ext-ftp": "*",
        "ext-intl": "*",
        "ext-json": "*",
        "ext-libxml": "*",
        "ext-pdo": "*",
        "ext-redis": "*",
        "ext-simplexml": "*",
        "ext-sync": "*",
        "ext-xhprof": "^2.2",
        "ext-xml": "*",
        "ext-zip": "*",
        "alhimik1986/php-excel-templator": "^1.0",
        "fideloper/proxy": "^4.2",
        "fruitcake/laravel-cors": "^1.0",
        "guzzlehttp/guzzle": "^6.3",
        "laravel/framework": "^7.0",
        "laravel/horizon": "^4.3",
        "laravel/telescope": "^3.2",
        "laravel/tinker": "^2.0",
        "pbweb/xhprof": "^1.0",
        "php-decimal/laravel": "^1.1",
        "php-decimal/php-decimal": "^1.1",
        "phpoffice/phpexcel": "^1.8",
        "phpoffice/phpspreadsheet": "1.12.*",
        "propaganistas/laravel-phone": "^4.2",
        "webmozart/assert": "^1.8"
    },
    "require-dev": {
        "barryvdh/laravel-debugbar": "^3.3",
        "barryvdh/laravel-ide-helper": "^2.7",
        "doctrine/dbal": "~2.10",
        "facade/ignition": "^2.0",
        "friendsofphp/php-cs-fixer": "^2.16",
        "fzaninotto/faker": "^1.9.1",
        "mockery/mockery": "^1.3.1",
        "nunomaduro/collision": "^4.1",
        "nunomaduro/larastan": "^0.6",
        "phpstan/phpstan": "^0.12",
        "phpunit/phpunit": "^9.1",
        "rector/rector": "^0.7",
        "roave/security-advisories": "dev-master",
        "sebastian/phpcpd": "^5.0",
        "squizlabs/php_codesniffer": "^3.5",
        "timacdonald/log-fake": "^1.6"
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true,
        "process-timeout": 0
    },
    "extra": {
        "laravel": {
            "dont-discover": []
        }
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "files": [
            "app/Helpers/system.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ],
        "cs": [
            "./vendor/bin/phpcs --standard=./config/tools/phpcs.xml ./app/ ./tests/"
        ],
        "cs-fix": [
            "php vendor/bin/php-cs-fixer fix"
        ],
        "cpd": [
            "./vendor/bin/phpcpd ./app/ ./resources/views/"
        ],
        "phpstan": [
            "./vendor/bin/phpstan analyse -c /var/www/config/tools/phpstan.neon"
        ],
        "churn": [
            "./vendor/bin/churn run -c ./config/tools/churn.yml ./app/ ./tests/"
        ],
        "check": [
            "./check-code-health.sh"
        ],
        "test:features": [
            "composer test -- --testsuite Feature"
        ],
        "test:features:verbose": [
            "composer test:verbose -- --testsuite Feature"
        ],
        "test:unit": [
            "composer test -- --testsuite Unit"
        ],
        "test:unit:verbose": [
            "composer test:verbose -- --testsuite Unit"
        ],
        "test:unit:coverage": [
            "composer test:coverage -- --testsuite Unit"
        ],
        "test:verbose": [
            "./vendor/bin/phpunit --configuration=./config/tools/phpunit.xml --do-not-cache-result --colors=always --testdox --verbose"
        ],
        "test:coverage": [
            "composer test -- --coverage-html=./storage/coverage"
        ],
        "test": [
            "./vendor/bin/phpunit --configuration=./config/tools/phpunit.xml --do-not-cache-result --colors=always"
        ]
    }
}

1 Ответ

1 голос
/ 18 июня 2020

Проблема оказалась с неверным $PATH. У меня было export PATH="/var/www/vendor/bin:$PATH" в ~/.bashrc, поэтому composer update использовал composer внутри каталога поставщика, который обновлялся.

Запуск php composer.phar update решил проблему, поскольку phar имеет свои зависимости (а именно symfony / finder) в комплекте.

...