Как использовать Composer для установки пакета без версии (только master)

Я новичок в композиторе, и я пытаюсь установить эту следующую библиотеку через обновление композитора

https://github.com/neitanod/forceutf8

так как я понимаю мой composer.json выглядит так

{
    "config": {
        "vendor-dir": "libs/vendor"
    },
    "require": {
        "raven/raven": "0.7.1",
        "monolog/monolog": "1.7.*",
        "smarty/smarty": "3.1.16",
        "forceutf8/forceutf8": "master"
    }
}

Bt по какой-то причине (я думаю, у forceutf8 нет версии) он останавливается с ошибкой, все остальные установлены правильно, ошибка, которую я получаю,

Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested package forceutf8/forceutf8 could not be found in any version, there may be a typo in the package na
me.

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. 

я попробовал следующую версию тоже, но все равно не повезло

{
    "config": {
        "vendor-dir": "libs/vendor"
    },
    "name": "career/skillquest",
    "repositories": [
      {
        "type": "vcs",
        "url": "https://github.com/neitanod/forceutf8"
      }
    ],
    "require": 
      {
        "forceutf8/forceutf8": "dev-master",
        "raven/raven": "0.7.1",
        "monolog/monolog": "1.7.*",
        "smarty/smarty": "3.1.16"
      }
}

Проблема была, это должно быть

"neitanod/forceutf8": "dev-master"

НЕ

"forceutf8/forceutf8": "master"

Ответ 1

В composer.json:

{
    "name": "example/example-app",
    "repositories": [
      {
        "type": "vcs",
        "url": "https://github.com/neitanod/forceutf8"
      }
    ],
    "require": 
      {
        "neitanod/forceutf8": "dev-master",
        "raven/raven": "0.7.1",
        "monolog/monolog": "1.7.*",
        "smarty/smarty": "3.1.16"
      }
}

Ответ 2

Прежде всего, у вас неправильное имя: forceutf8/forceutf8 Правильное имя: neitanod/forceutf8

Composer добавляет префикс "dev-" к каждому имени ветки, который не похож на номер версии, и суффикс "-dev" для имен ветвей, которые выглядят как номера версий.

Пример: ветвь "master" называется "dev-master", функция ветки "feature" называется "dev-feature". Филиал "1.0.x" называется "1.0.x-dev".

Итак, эта часть неверна:

"require": {
    "raven/raven": "0.7.1",
    "monolog/monolog": "1.7.*",
    "smarty/smarty": "3.1.16",
    "forceutf8/forceutf8": "master"
}

Правильная версия:

"require": {
    "raven/raven": "0.7.1",
    "monolog/monolog": "1.7.*",
    "smarty/smarty": "3.1.16",
    "neitanod/forceutf8": "dev-master"
}

Теперь требуются ветки без помеченных версий, это не лучшая вещь, потому что эта информация довольно нестабильна - любая новая фиксация может сломать вещи, и не так просто указать именно на фиксацию, которую вы хотели использовать. Чтобы защитить вас снова, Composer по умолчанию не загружает эту ветку разработки, но будет загружать только стабильные версии. Вы должны включить загрузку версий разработки:

"require": {
    "raven/raven": "0.7.1",
    "monolog/monolog": "1.7.*",
    "smarty/smarty": "3.1.16",
    "neitanod/forceutf8": "[email protected]"
}

Флаг "@dev" позволяет загружать версии версии упомянутой версии (которая в этом случае является ветвью, но "[email protected]" будет работать одинаково, разрешая всем (включая dev) версии 1.0.0, как "1.0.0-alpha", но также стабильный "1.0.0" ).

Обратите внимание, что вы также можете разрешить версию разработки для ВСЕХ зависимостей, используя "минимальную стабильность", но это не рекомендуется, так как она будет загружать версии для ПО для ВСЕГО в соответствии с требованиями к версии. В вашем случае вы бы захватили последнюю версию dev только monolog 1.7, но этого может быть достаточно, чтобы привести некогда стабильное программное обеспечение в разбитое состояние.

Ответ 3

Это просто! Вы должны ввести консоль:

composer require [email protected] dev-master

Ответ 4

Вы должны указать имя версии в файле composer.json. Просто найдите любой пакет, который можно установить с помощью Composer по адресу: https://packagist.org/

Найдите имя пакета там, вы найдете имя версии. И вот ссылка на нужный пакет: https://packagist.org/packages/neitanod/forceutf8