Composer create-project устанавливает разные версии проекта
Господа и дамы.
Сразу предупрежу что ничего конкретно о MODX здесь нет.
Для собственного развития хочу прояснить такой вопрос
— почему композер в различных операционных системах устанавливает разные версии проектов? Ну то есть что я имею ввиду.
Скачиваю самый свежий файл composer.phar с офф сайта. В операционке Windows. Устанавливаю проект Symfony через create-project. Устанавливается версия 3,4.
Проделываю все тоже самое в среде linux — скачивается версия 4,3
Как это воспринимать? Как глюк? Как умение composer определять операционную систему и на основании этого смотреть в разные репозитории? Умение composer отпределять версию php и на основании ее выбирать наиболее подходящий вариант?
Сразу предупрежу что ничего конкретно о MODX здесь нет.
Для собственного развития хочу прояснить такой вопрос
— почему композер в различных операционных системах устанавливает разные версии проектов? Ну то есть что я имею ввиду.
Скачиваю самый свежий файл composer.phar с офф сайта. В операционке Windows. Устанавливаю проект Symfony через create-project. Устанавливается версия 3,4.
Проделываю все тоже самое в среде linux — скачивается версия 4,3
Как это воспринимать? Как глюк? Как умение composer определять операционную систему и на основании этого смотреть в разные репозитории? Умение composer отпределять версию php и на основании ее выбирать наиболее подходящий вариант?
Комментарии: 9
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Ведь никакого файла конфига нет.
Есть директория в которой лежит файл composer.phar
Обращение к нему через командную строку в windows
устанавливает версию 3,4 фреймворка
А та же самая команда, но сделанная в терминале linux — устанавливает версию 4,3.
Именно версия 4,3 актуальна в репозитории packagist.org/ и в ветке master на github
Сначала я думал, что дело в устаревшем файле composer.phar но после команды --self-update все было также. После скачивания с офф сайта последней версии файла — все было так же.
Просто хотелось для саморазвития понять что может быть тому причиной.
Не помогло, к сожалению (грешу наверное много.)
Попытка указать конкретную версию выдала ошибку, что такая версия не найдена.
drive.google.com/file/d/1SXcyWbdV_rPBZWUiU0amUDpnUeiDbCcS/view?usp=sharing
А вот если убрал указание версии, в очередной раз установилась старая версия 3,4
drive.google.com/file/d/1MCtl2_8P3oPAo2MDDLh2Xh186qhVijKi/view?usp=sharing
ps — уже который месяц не могу воспользоваться файлохранилищем на этом сайте, при переходе пишет Авторизоваться, при нажатии просто перезагружается страница.
посмотрел какая точно версия — 4,3,1
Пробовал указать ее — результат тот же — не найдено.
Проверив какая-же точно версия у
packagist.org/packages/symfony/website-skeleton
и увидев что 4,3,1,5
и задав ее руками мне все же удалось увидеть ошибку уже не о том, что версия не найдена, а о том, что моя версия PHP 7.0.2 не подходит.
Ну и получается, что я узнал для себя совершенно новый функционал composer
Он проверяет текущую версию программ на моей машине и скачивает ту версию, которая под них подходит. Наверное поэтому он мне все время подсовывал версию 3,4.
Совершенно этого не знал, думал какую версию укажешь устанавливаемого приложения, такую и скачает.
А может composer проверяет и другие характеристики сервера? К примеру версию сервера базы данных? Что-то еще?
Но это рождает во мне новый вопрос.
Получается что для переноса проекта с одного сервера на другой нужно воссоздать на новом сервере совершенно идентичные условия иначе composer install может установить совершенно другие версии зависимостей. И это немного странно. Ну разрабатывал я проект например с версией php 7.2, ну установил нужные мне зависимости (установились актуальные для версии 7,2 версии) потом я переношу проект на рабочий сервер, там версия php 7.0 и мне лично это совсем не критично, я знаю что мой проект будет работать и на этой версии чудесно, но получается меня ждет сюрприз. Либо установятся более старые версии зависимостей либо если я в настройках указывал версии — я получу ошибки о том что такие версии недоступны.
Я правильно понимаю?
И вот начиная с этого момента я начинаю понимать, зачем придумали следующие костыли — такие как докер, чтобы подпирать им костыли придуманные ранее)
Могу тебе ещё голову поломать :) Представь, что ты ставишь свой проект на машину с аналогичным окружением через какое-то время, а у тебя зависимости поставились с новой мажорной версией и не робит. А как оставить зависимости с работающего проекта?