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
можно указать платформу в конфиге
{
"config": {
"preferred-install": "dist",
"platform": {
"php": "7.1"
}
},
"require": {
"php": ">=5.4"
}
}
Спасибо за ответ, возможно он и правильный, но признаюсь — я не понял его.
Ведь никакого файла конфига нет.
Есть директория в которой лежит файл composer.phar
Обращение к нему через командную строку в windows
А та же самая команда, но сделанная в терминале linux — устанавливает версию 4,3.
Именно версия 4,3 актуальна в репозитории packagist.org/ и в ветке master на github
Сначала я думал, что дело в устаревшем файле composer.phar но после команды --self-update все было также. После скачивания с офф сайта последней версии файла — все было так же.
Просто хотелось для саморазвития понять что может быть тому причиной.
Ведь никакого файла конфига нет.
Есть директория в которой лежит файл 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 все было также. После скачивания с офф сайта последней версии файла — все было так же.
Просто хотелось для саморазвития понять что может быть тому причиной.
указать версию?
symfony/website-skeleton=4.3
я не знал что так можно, спасибо. Сейчас попробую.
Не помогло, к сожалению (грешу наверное много.)
Попытка указать конкретную версию выдала ошибку, что такая версия не найдена.
drive.google.com/file/d/1SXcyWbdV_rPBZWUiU0amUDpnUeiDbCcS/view?usp=sharing
А вот если убрал указание версии, в очередной раз установилась старая версия 3,4
drive.google.com/file/d/1MCtl2_8P3oPAo2MDDLh2Xh186qhVijKi/view?usp=sharing
ps — уже который месяц не могу воспользоваться файлохранилищем на этом сайте, при переходе пишет Авторизоваться, при нажатии просто перезагружается страница.
Не помогло, к сожалению (грешу наверное много.)
Попытка указать конкретную версию выдала ошибку, что такая версия не найдена.
drive.google.com/file/d/1SXcyWbdV_rPBZWUiU0amUDpnUeiDbCcS/view?usp=sharing
А вот если убрал указание версии, в очередной раз установилась старая версия 3,4
drive.google.com/file/d/1MCtl2_8P3oPAo2MDDLh2Xh186qhVijKi/view?usp=sharing
ps — уже который месяц не могу воспользоваться файлохранилищем на этом сайте, при переходе пишет Авторизоваться, при нажатии просто перезагружается страница.
Пошел на packagist.org/packages/symfony/symfony
посмотрел какая точно версия — 4,3,1
Пробовал указать ее — результат тот же — не найдено.
посмотрел какая точно версия — 4,3,1
Пробовал указать ее — результат тот же — не найдено.
Продолжу свой монолог.
Проверив какая-же точно версия у
packagist.org/packages/symfony/website-skeleton
и увидев что 4,3,1,5
и задав ее руками мне все же удалось увидеть ошибку уже не о том, что версия не найдена, а о том, что моя версия PHP 7.0.2 не подходит.
Ну и получается, что я узнал для себя совершенно новый функционал composer
Он проверяет текущую версию программ на моей машине и скачивает ту версию, которая под них подходит. Наверное поэтому он мне все время подсовывал версию 3,4.
Проверив какая-же точно версия у
packagist.org/packages/symfony/website-skeleton
и увидев что 4,3,1,5
и задав ее руками мне все же удалось увидеть ошибку уже не о том, что версия не найдена, а о том, что моя версия PHP 7.0.2 не подходит.
Ну и получается, что я узнал для себя совершенно новый функционал composer
Он проверяет текущую версию программ на моей машине и скачивает ту версию, которая под них подходит. Наверное поэтому он мне все время подсовывал версию 3,4.
Дело тут в нативной версии PHP которая ставиться на определённую ОС. Скажем на Ubuntu 14 ставится по дефолту PHP 7.0, на Ubuntu 16 по дефолту ставится PHP 7.1 и исходя из версии нативной PHP ставится композером лара, симфония и прочее. Увы обычным редактированием конфига при смене PHP композер будет работать на нативной версии и ставить версии продуктов, которые имеют прямую совместимость с нативным PHP.
Да, я примерно к этому выводу и пришел.
Совершенно этого не знал, думал какую версию укажешь устанавливаемого приложения, такую и скачает.
А может composer проверяет и другие характеристики сервера? К примеру версию сервера базы данных? Что-то еще?
Но это рождает во мне новый вопрос.
Получается что для переноса проекта с одного сервера на другой нужно воссоздать на новом сервере совершенно идентичные условия иначе composer install может установить совершенно другие версии зависимостей. И это немного странно. Ну разрабатывал я проект например с версией php 7.2, ну установил нужные мне зависимости (установились актуальные для версии 7,2 версии) потом я переношу проект на рабочий сервер, там версия php 7.0 и мне лично это совсем не критично, я знаю что мой проект будет работать и на этой версии чудесно, но получается меня ждет сюрприз. Либо установятся более старые версии зависимостей либо если я в настройках указывал версии — я получу ошибки о том что такие версии недоступны.
Я правильно понимаю?
И вот начиная с этого момента я начинаю понимать, зачем придумали следующие костыли — такие как докер, чтобы подпирать им костыли придуманные ранее)
Совершенно этого не знал, думал какую версию укажешь устанавливаемого приложения, такую и скачает.
А может composer проверяет и другие характеристики сервера? К примеру версию сервера базы данных? Что-то еще?
Но это рождает во мне новый вопрос.
Получается что для переноса проекта с одного сервера на другой нужно воссоздать на новом сервере совершенно идентичные условия иначе composer install может установить совершенно другие версии зависимостей. И это немного странно. Ну разрабатывал я проект например с версией php 7.2, ну установил нужные мне зависимости (установились актуальные для версии 7,2 версии) потом я переношу проект на рабочий сервер, там версия php 7.0 и мне лично это совсем не критично, я знаю что мой проект будет работать и на этой версии чудесно, но получается меня ждет сюрприз. Либо установятся более старые версии зависимостей либо если я в настройках указывал версии — я получу ошибки о том что такие версии недоступны.
Я правильно понимаю?
И вот начиная с этого момента я начинаю понимать, зачем придумали следующие костыли — такие как докер, чтобы подпирать им костыли придуманные ранее)
А как должно быть? Если у пакета указана версия 7.2, а ты устанавливаешь на 7.0, то вылезет ошибка. Логично?
Могу тебе ещё голову поломать :) Представь, что ты ставишь свой проект на машину с аналогичным окружением через какое-то время, а у тебя зависимости поставились с новой мажорной версией и не робит. А как оставить зависимости с работающего проекта?
Могу тебе ещё голову поломать :) Представь, что ты ставишь свой проект на машину с аналогичным окружением через какое-то время, а у тебя зависимости поставились с новой мажорной версией и не робит. А как оставить зависимости с работающего проекта?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.