Я использую Laravel 4.2.
Сегодня мне пришлось переустановить один из моих плагинов, и теперь весь мой проект был разрушен.
вот мой файл composer.json:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "4.2.*",
"barryvdh/laravel-debugbar": "~1.8",
"mews/captcha": "dev-master",
"prologue/alerts": "dev-master",
"yangqi/htmldom": "dev-master",
"scalia/sphinxsearch": "dev-master"},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/libraries",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"],
"post-create-project-cmd": [
"php artisan key:generate"]
},
"config": {
"preferred-install": "dist"},
"minimum-stability": "dev"}
Все, что я хотел сделать, это заменить плагин mews / captcha чем-то другим.
После реализации моего нового плагина капчи, я попытался обновить проект с помощью composer, используя «composer update».
Тогда я понял, что пролог / оповещения больше не поддерживают laravel 4.2, согласно ошибкам github и composer.
Problem 1
- Conclusion: don't install laravel/framework 4.2.x-dev
- Conclusion: don't install laravel/framework v4.2.17
- Conclusion: don't install laravel/framework v4.2.16
- Conclusion: don't install laravel/framework v4.2.15
- Conclusion: don't install laravel/framework v4.2.14
- Conclusion: don't install laravel/framework v4.2.13
- Conclusion: don't install laravel/framework v4.2.12
- Conclusion: don't install laravel/framework v4.2.11
- Conclusion: don't install laravel/framework v4.2.10
- Conclusion: don't install laravel/framework v4.2.9
- Conclusion: don't install laravel/framework v4.2.8
- Conclusion: don't install laravel/framework v4.2.7
- Conclusion: don't install laravel/framework v4.2.6
- Conclusion: don't install laravel/framework v4.2.5
- Conclusion: don't install laravel/framework v4.2.4
- Conclusion: don't install laravel/framework v4.2.3
- Conclusion: don't install laravel/framework v4.2.2
- Installation request for prologue/alerts dev-master -> satisfiable by prologue/alerts[dev-master].
- Conclusion: don't install laravel/framework v4.2.1
- Conclusion: don't install laravel/framework v4.2.0
- prologue/alerts dev-master requires illuminate/session ~5 -> satisfiable by laravel/framework[5.0.x-dev], illuminate/session[5.0.x-dev, 5.1.x-dev, v5.0.0, v5.0.22, v5.0.25, v5.0.26, v5.0.28, v5.0.4].
- Can only install one of: laravel/framework[v4.2.0-BETA1, 5.0.x-dev].
- don't install illuminate/session 5.0.x-dev|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session 5.1.x-dev|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.0|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.22|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.25|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.26|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.28|don't install laravel/framework v4.2.0-BETA1
- don't install illuminate/session v5.0.4|don't install laravel/framework v4.2.0-BETA1
- Installation request for laravel/framework 4.2.* -> satisfiable by laravel/framework[4.2.x-dev, v4.2.0, v4.2.0-BETA1, v4.2.1, v4.2.10, v4.2.11, v4.2.12, v4.2.13, v4.2.14, v4.2.15, v4.2.16, v4.2.17, v4.2.2, v4.2.3, v4.2.4, v4.2.5, v4.2.6, v4.2.7, v4.2.8, v4.2.9].
Я не могу удалить плагин / плагин оповещений. Все, что я хочу, это восстановить мой проект, у меня есть старые коммиты / резервные файлы. Но композитор не позволяет мне.
Кроме того, попытался удалить пролог / оповещения из composer.json и другие свойства из app.php, но composer по-прежнему мне не помогает.
Ошибка «Класс« Пролог \ Alerts \ AlertsServiceProvider »не найден», что означает, что композитор пытался установить более новую версию пролога / предупреждений?
Заранее спасибо.
Ваша общая проблема заключается в том, что вы используете ветки вместо версий. В филиалах есть две основные проблемы:
Ответ @milz указывает на правильное направление, но вы должны пройти весь путь: для каждого используемого вами пакета замените каждую ссылку на ветку версией выпуска или диапазоном версий.
мяукает / CAPTCHA, — выпущенные версии 1.0.1, 2.0.0 и 2.0.1 — только 1.0.1 совместима с Laravel 4. Возможно, вы захотите использовать 1.0.*
исправлять ошибки, хотя вряд ли они произойдут.
Пролог / оповещения — версии выпуска 0.1.0, 0.1.1, 0.2.0, 0.3.0 и 0.4.0. Версии 0.1 и 0.2 требуют Laravel 4.0, 0.3.0 допускает ЛЮБОЙ 4.x и 0.4.0 переходят на любую версию Laravel 5.0. Выбирать 0.3.*
,
Янци / htmldom — нет выпущенных версий. Как бы трудно это ни было: вы должны избегать использования этого пакета, если сопровождающие не помечают версию выпуска. Он также не правильно указывает свои зависимости — он имеет зависимость от Laravel для поставщика услуг. Попросите сопровождающих пометить выпуск или переключиться на другой пакет. Этот пакет, вероятно, повторяет страдание, которое вы испытываете сейчас.
Scalia / sphinxsearch — Версии 0.1, 0.1.1 и 0.2 совместимы с Laravel 4 — pick 0.2.*
,
Обратите внимание, что для всех версий вы можете подумать не только об исправлении ошибок, но и о совместимых обновлениях. Это изменит требование к версии с x.y.*
в ~x.y
, Я бы порекомендовал это.
Также обратите внимание, что в зависимости от того, какую версию главной ветки вы использовали, переключившись на помеченный релиз, вы можете вернуться к некоторым коммитам. Это может вернуть исправления ошибок, которые были переданы мастеру, но никогда не были помечены как релиз. Если вы обнаружите, что в пакете, который вы используете, есть невыпущенные исправления, вы должны также попросить сопровождающих выпустить эти исправления.
В зависимости от их скорости реакции и разрешения вашего запроса, вы можете принять решение продолжить использование этого пакета или переключиться на что-то другое.
Ну, вы можете взглянуть на список prologuephp / оповещения релизы. Если вы посмотрите на composer.json
от v0.3.0 в 0.4.0-beta.1 вы увидите, что зависимости меняются от:
"illuminate/config": "~4",
"illuminate/session": "~4",
"illuminate/support": "~4",
Для того, чтобы:
"illuminate/config": "~5",
"illuminate/session": "~5",
"illuminate/support": "~5"
Итак, если ваш проект использует Laravel 4, вам просто нужно использовать правильную версию. В вашем composer.json
, вместо "prologue/alerts": "dev-master",
использование "prologue/alerts": "0.3.0"
.
Вот что я сделал до сих пор:
Возможно, это не лучшее решение, но мне удалось восстановить мой проект без неподдерживаемых плагинов.