Composer create-project устанавливает разные версии проекта

Господа и дамы.
Сразу предупрежу что ничего конкретно о MODX здесь нет.
Для собственного развития хочу прояснить такой вопрос
— почему композер в различных операционных системах устанавливает разные версии проектов? Ну то есть что я имею ввиду.
Скачиваю самый свежий файл composer.phar с офф сайта. В операционке Windows. Устанавливаю проект Symfony через create-project. Устанавливается версия 3,4.
Проделываю все тоже самое в среде linux — скачивается версия 4,3
Как это воспринимать? Как глюк? Как умение composer определять операционную систему и на основании этого смотреть в разные репозитории? Умение composer отпределять версию php и на основании ее выбирать наиболее подходящий вариант?
Александр Мельник
23 июня 2019, 13:03
modx.pro
1 783
0

Комментарии: 9

Володя
24 июня 2019, 10:11
0
можно указать платформу в конфиге
{
  "config": {
    "preferred-install": "dist",
    "platform": {
      "php": "7.1"
    }
  },
  "require": {
    "php": ">=5.4"
  }
}
    Александр Мельник
    24 июня 2019, 11:09
    0
    Спасибо за ответ, возможно он и правильный, но признаюсь — я не понял его.
    Ведь никакого файла конфига нет.
    Есть директория в которой лежит файл composer.phar
    Обращение к нему через командную строку в windows
    php composer.phar create-project symfony/website-skeleton my-project
    устанавливает версию 3,4 фреймворка
    А та же самая команда, но сделанная в терминале linux — устанавливает версию 4,3.
    Именно версия 4,3 актуальна в репозитории packagist.org/ и в ветке master на github
    Сначала я думал, что дело в устаревшем файле composer.phar но после команды --self-update все было также. После скачивания с офф сайта последней версии файла — все было так же.
    Просто хотелось для саморазвития понять что может быть тому причиной.
      Володя
      24 июня 2019, 13:05
      0
      указать версию?
      symfony/website-skeleton=4.3
        Александр Мельник
        24 июня 2019, 13:49
        0
        я не знал что так можно, спасибо. Сейчас попробую.
        Не помогло, к сожалению (грешу наверное много.)
        Попытка указать конкретную версию выдала ошибку, что такая версия не найдена.
        drive.google.com/file/d/1SXcyWbdV_rPBZWUiU0amUDpnUeiDbCcS/view?usp=sharing
        А вот если убрал указание версии, в очередной раз установилась старая версия 3,4
        drive.google.com/file/d/1MCtl2_8P3oPAo2MDDLh2Xh186qhVijKi/view?usp=sharing
        ps — уже который месяц не могу воспользоваться файлохранилищем на этом сайте, при переходе пишет Авторизоваться, при нажатии просто перезагружается страница.
          Александр Мельник
          24 июня 2019, 13:55
          0
          Пошел на packagist.org/packages/symfony/symfony
          посмотрел какая точно версия — 4,3,1
          Пробовал указать ее — результат тот же — не найдено.
            Александр Мельник
            24 июня 2019, 14:06
            0
            Продолжу свой монолог.
            Проверив какая-же точно версия у
            packagist.org/packages/symfony/website-skeleton
            и увидев что 4,3,1,5
            и задав ее руками мне все же удалось увидеть ошибку уже не о том, что версия не найдена, а о том, что моя версия PHP 7.0.2 не подходит.

            Ну и получается, что я узнал для себя совершенно новый функционал composer
            Он проверяет текущую версию программ на моей машине и скачивает ту версию, которая под них подходит. Наверное поэтому он мне все время подсовывал версию 3,4.
    SEQUEL.ONE
    29 июня 2019, 13:06
    0
    Дело тут в нативной версии PHP которая ставиться на определённую ОС. Скажем на Ubuntu 14 ставится по дефолту PHP 7.0, на Ubuntu 16 по дефолту ставится PHP 7.1 и исходя из версии нативной PHP ставится композером лара, симфония и прочее. Увы обычным редактированием конфига при смене PHP композер будет работать на нативной версии и ставить версии продуктов, которые имеют прямую совместимость с нативным PHP.
      Александр Мельник
      29 июня 2019, 15:52
      0
      Да, я примерно к этому выводу и пришел.
      Совершенно этого не знал, думал какую версию укажешь устанавливаемого приложения, такую и скачает.
      А может composer проверяет и другие характеристики сервера? К примеру версию сервера базы данных? Что-то еще?
      Но это рождает во мне новый вопрос.
      Получается что для переноса проекта с одного сервера на другой нужно воссоздать на новом сервере совершенно идентичные условия иначе composer install может установить совершенно другие версии зависимостей. И это немного странно. Ну разрабатывал я проект например с версией php 7.2, ну установил нужные мне зависимости (установились актуальные для версии 7,2 версии) потом я переношу проект на рабочий сервер, там версия php 7.0 и мне лично это совсем не критично, я знаю что мой проект будет работать и на этой версии чудесно, но получается меня ждет сюрприз. Либо установятся более старые версии зависимостей либо если я в настройках указывал версии — я получу ошибки о том что такие версии недоступны.
      Я правильно понимаю?
      И вот начиная с этого момента я начинаю понимать, зачем придумали следующие костыли — такие как докер, чтобы подпирать им костыли придуманные ранее)
        Сергей Шлоков
        01 июля 2019, 10:32
        0
        А как должно быть? Если у пакета указана версия 7.2, а ты устанавливаешь на 7.0, то вылезет ошибка. Логично?

        Могу тебе ещё голову поломать :) Представь, что ты ставишь свой проект на машину с аналогичным окружением через какое-то время, а у тебя зависимости поставились с новой мажорной версией и не робит. А как оставить зависимости с работающего проекта?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9