silentvick
@silentvick

Почему зависает composer update?

Вот такой composer.json (взято с Silex Skeleton):
{
    "name": "fabpot/silex-skeleton",
    "description": "A pre-configured skeleton for the Silex microframework",
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.3.3",
        "silex/silex": "~1.1",
        "silex/web-profiler": "~1.0",
        "symfony/browser-kit": "~2.3",
        "symfony/class-loader": "~2.3",
        "symfony/config": "~2.3",
        "symfony/console": "~2.3",
        "symfony/css-selector": "~2.3",
        "symfony/debug": "~2.3",
        "symfony/finder": "~2.3",
        "symfony/form": "~2.3",
        "symfony/monolog-bridge": "~2.3",
        "symfony/process": "~2.3",
        "symfony/security": "~2.3",
        "symfony/translation": "~2.3",
        "symfony/twig-bridge": "~2.3",
        "symfony/validator": "~2.3",
        "doctrine/dbal": "2.2.*"
    },
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "extra": {
        "branch-alias": {
            "dev-master": "1.1.x-dev"
        }
    },
    "minimum-stability": "dev"
}


Добавил doctrine/dbal Но при запуске composer update процесс зависает. Пишет:

Loading composer repositories with package information
Installing dependencies (including require-dev)


И больше ничего не происходит. Оставлял почти на 20 минут, результат тот же.
Версия composer последняя, машина - Ubuntu 12.04 x64
  • Вопрос задан
  • 7565 просмотров
Решения вопроса 1
silentvick
@silentvick Автор вопроса
В общем, с помощью флага --profile удалось установить причину. Все упиралось в недостаток памяти. Увеличил объем RAM до 1Гб (было 384Мб) и update успешно завершился. Пик использования памяти при этом был равен 569.84Мб.

Дополнительно, для тех, кто в будущем столкнется с подобной проблемой, на github я обнаружил еще одну возможную причину такого зависания. Суть ее, как я понял, заключается в том, что при большом количестве зависимостей composer может "зависать" из-за большого количества их возможных комбинаций. Такое случается очень редко, но теоретически возможно. Решение в данном случае: задать требования более строго. Например, использовать более конкретные рамки версий, или вообще указать точную версию.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
hell0w0rd
@hell0w0rd
Просто разработчик
Последняя версия композера - после selfupdate? Попробуйте поставить последний релиз, без обновления, если это так
Ответ написан
iliacmd
@iliacmd
Так же зависание может быть если используется bower, но в системе он не установлен. ( + банально может блокировать подключение firewall )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы