Как установить вендорский пакет БЕЗ композитора (корпоративная сеть)

Прежде всего, я не могу использовать композитор, потому что я нахожусь в корпоративной сети. Я перепробовал все, чтобы заставить композитора работать:

  • HTTP_PROXY, HTTPS_PROXY, HTTPS_FULLURI... Ничего не работает. Диаграмма Composer дает статус OK для http packagist, но НЕ СДЕЛАЕТ для подключения https. Это дает мне ошибку:

SSL: тайм-аут рукопожатия.

Но это не мой вопрос, я потратил много времени, пытаясь заставить композитора работать (но если у вас есть решение, вы сделаете мой день)

Мой реальный вопрос заключается в следующем: Как установить пакеты вручную

Я хочу установить этот пакет: http://knpbundles.com/pierredup/MenuBundle.

Что я сделал, чтобы попробовать установить пакет:

  • Регистрация пакета в appKernel.php:

new \CS\MenuBundle\CSMenuBundle()

  • Пытался добавить его в autoload.php:

$loader->add('CS', __ DIR __.'/../vendor/CS/CSMenuBundle.php');

(Не знаю, как правильно добавить PHP-код...)

Но это не работает, получил следующую ошибку:

Попытка загрузить класс "CSMenuBundle" из пространства имен "CS\MenuBundle". Вы забыли оператор use для другого пространства имен?

И затем, даже если это не очень хорошая практика, я попытался добавить его в autoload_namespaces.php и после этого сделал dump-autoload:

'CS \ MenuBundle' => массив ($vendorDir. '/CS/')

У меня все еще есть ошибка, но не точно такая же:

Попытка загрузить класс "CSMenuBundle" из пространства имен "CS\MenuBundle". Вы забыли оператор use для CS\MenuBundle\CSMenuBundle?

Теперь я немного расстраиваюсь, я видел много постов (не в стеке), где люди кричат, потому что мы должны использовать composer для управления зависимостями. Я полностью согласен с этим, но я не могу, поэтому я пытаюсь найти другой путь, и, поскольку я не могу найти никакого четкого учебника, который объясняет, как устанавливать производителей без композитора, я здесь.

1 ответ

Решение

Обратите внимание, что я прокомментировал проблемы, которые я вижу с вашим подходом к вашему вопросу напрямую.

Тем не менее, я посмотрел на пакет, который вы хотите использовать, чтобы увидеть, есть ли ЛЮБОЙ шанс установить его каким-либо образом (предпочитая Composer). Я не думаю, что это возможно или возможно.

composer require customscripts/menubundle:dev-master - это было бы простой командой для Composer, чтобы сделать все. Однако есть проблемы:

  1. Пакет, который вы хотите использовать, не зарегистрирован на packagist.org, поэтому невозможно просто использовать Composer на компьютере, правильно подключенном к Интернету, захватить пакеты, сжать их и перенести в нужное вам место.

  2. Чтобы обойти это, вы должны вручную добавить хранилище в composer.json файл - это может на самом деле работать (однако это занимает слишком много времени на моей виртуальной машине). Вы получите код, который последний раз редактировался в 2012 году!

  3. Зависимости этого кода, скорее всего, больше не будут работать. composer.json из этого списка пакетов "require": {"knplabs/knp-menu-bundle": "dev-master", "symfony/framework-bundle": ">=2.0,<2.3-dev", "jms/di-extra-bundle": "1.1.*"} - даже первый "knplabs/knp-menu-bundle" никогда не будет работать. Помните, что код этого пакета относится к 2012 году - сейчас мы находимся в 2016 году, поэтому "knp-menu-bundle" четыре года развивался в основной ветке. Просто НЕ НУЖНО знать, какой коммит был использован в этом пакете. Вам придется перепроектировать эту потерянную информацию.

  4. Кроме того, вы понимаете, почему Composer великолепен, а делать это вручную - плохо: в дополнение к желаемому пакету вы должны загрузить три дополнительных пакета, упомянутых здесь.

  5. Но обнаружение пакетов, которые нужно добавить, является рекурсивной задачей: knp-menu-bundle зависит от knp-menu (без дополнительных зависимостей) и symfony / framework-bundle (уже добавлено). Сам symfony / framework-bundle зависит еще от 9 пакетов Symfony и доктрины / общего... и так далее. Вы должны обнаружить каждый пакет этого и загрузить правильную версию вручную, если вы не можете использовать Composer.

Пропустив исходный пакет, поскольку эта установка не заканчивалась, пока я набирал ответ, я попытался установить knp-menu-bundle, чтобы посмотреть, сколько пакетов будет установлено. Composer установил 20 пакетов, некоторые из них использовали Symfony в 2.8 (он ДОЛЖЕН быть совместим с Symfony 2.2, не так ли) - и я просто запустил composer require knplabs/knp-menu-bundle:1.1.1 чтобы получить аналогичную старую версию knp-menu-bundle 2012 года.

Преимущество использования Composer заключается в том, что он поддерживает быструю разработку, позволяя быстро обновлять и надежно понижать версию (если вы фиксируете composer.lock файл и всегда использовать теговые версии), и просто позволяя добавлять новые пакеты мгновенно. Неспособность использовать Composer является очень серьезным ограничением для вас как разработчика PHP. Поговорите со своим боссом или руководителем группы о ситуации в вашей компании с HTTPS-прокси и найдите решение для использования Composer. Альтернатива состоит в том, чтобы разработать все с нуля самостоятельно или тратить много часов, пытаясь возиться с ручными загрузками, которые не подходят друг другу легко.

Другие вопросы по тегам