Чому після оновлення композитора не встановлено директорію постачальника?


1

Я В.М. з наступним composer.json файл в /vagrant:

{
    "require": {
        "drush/drush": "dev-master"
    }
}

тоді, коли я біжу composer update у цій папці завантажує вимоги, але до /vagrant/vendor, замість очікувалося локальний каталог HOME як звичайно ( ~/.composer/vendor ).

Чи є причина, чому і як це виправити?

Я використовую:

Composer version 1.0-dev (15face5432d7b7334db6ac69fac0190971cafa6e) 2015-09-23 17:46:25

на Ubuntu 15.04.

Відповіді:


2

Так працює композитор. Якщо ви хочете щось додати ~/.composer/vendor, тоді ви повинні поставити його ~/.composer/composer.json. За замовчуванням каталог постачальника буде розміщено поруч із composer.json файл.

Тут є кілька варіантів. Найкраще, можливо, просто обійтися /vendor/composer.jsonі просто запустіть composer global require "drush/drush": "dev-master" замість цього. Це додасть drush/drush до ~/.composer/composer.jsonі встановіть його. Потім у вас буде символьна посилання на каталог Drush у ~/.composer/vendor/bin, що, я підозрюю, що ви прагнете.


0

Що стосується обхідного шляху, використовувати файл JSON, в якому немає ~/.composer/composer.json, шлях постачальника може бути вказаний в config / vendor-dir, наприклад:

{
    "config": {
        "vendor-dir": "~/.composer/vendor"
    },
    "require": {
        "drush/drush": "dev-master"
    }
}

які повинні встановити drush в ~/.composer/vendor/drush/drush/drush, тоді необхідно зробити відповідну зміну до змінної PATH, наприклад,

ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc

Щоб зробити його глобальним (запустивши як root ), Я вважаю /var/lib/vendor можна використовувати для vendor-dir, і або додавати правильний шлях до змінної PATH в одному з глобальних файлів, наприклад /etc/bash.bashrc або /etc/profile, альтернативно вказати bin-dir у файлі JSON, наприклад:

{
    "config": {
        "vendor-dir": "/var/lib/vendor",
        "bin-dir": "/usr/local/bin"
    },
    "require": {
        "drush/drush": "dev-master"
    }
}

яка буде встановлена drush глобально з мінімальним головним болем /usr/local/bin має бути вже в PATH.


Або якщо ви не хочете жорстко кодувати шлях у файлі JSON (щоб його можна було використовувати спільно між різними службами), існує навіть набагато простіший спосіб, як це запропонував jonathan , наприклад:

  • Спосіб VM (як кореневий):

    COMPOSER_HOME=/var/lib/composer COMPOSER_BIN_DIR=/usr/local/bin COMPOSER_VENDOR_DIR=/var/lib/composer/vendor composer -nqq install --no-interaction --optimize-autoloader
    
  • Шлях Травіса КІ:

    COMPOSER_BIN_DIR=~/bin composer -nqq install --no-interaction --optimize-autoloader --prefer-source
    

Замість installВи також можете використовувати update.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.