이 글은 2019년 7월 4일에 1일 1식 라라벨에 발행된 글입니다. 일부 시점이나 버전 정보가 블로그 발행시점과 다를 수 있습니다. 8월호 구독자를 모집하고 있습니다. 월 1만원으로 최신 라라벨 소식을 받아보세요.
며칠 전에 라라벨 5.8.27이 나왔다. 새로 설치하는 사람이라면 특별한 이유가 없는 한 최신 버전을 설치하는게 좋다. 메뉴얼에서 안내하는 대로 설치하면 자연히 최신 버전이 설치된다. 하지만 어떠한 이유에서건 과거의 버전을 설치할 필요가 생길 수 있다.
구글에서 laravel install specific version 으로 검색하면 특정 버전의 라라벨을 설치하는 방법을 어렵지 않게 찾을 수 있다.
문제는 저 글들이 공통적으로 알려주는 방법으로는 내가 원하는 정확한 버전을 설치할 수 없다는 점이다. 위 이미지에 나온 검색 결과 중 첫번째 글의 베스트 답변은 컴포저로 버전을 명시해서 설치하라는 것이다.
그럼 이 방법으로 직전 버전인 5.8.26을 설치해보자.
composer create-project laravel/laravel="5.8.26" myProject
5.8.26 버전의 패키지를 찾을 수 없다! 그렇다면 두번째 베스트 답변은 어떨까?
--5.8.26
이라는 옵션은 존재하지 않는다며 설치 실패! 두 방법 모두 내가 원하는 버전이 설치 안되는 수준이 아니라 아예 설치 자체가 안된다.
laravel/laravel과 laravel/framework
왜일까? 위의 컴포저 명령문을 다시 한 번 자세히 살펴보면 laravel/laravel 패키지를 설치를 시도한다는걸 알 수 있다. laravel/laravel의 깃헙 저장소에 가서 릴리즈 내역을 보면 최신 버전이 5.8.17이다. 5.8.27은 어디로 간거지?
5.8.17로 설치해보면? 설치된다.
버전을 확인해볼까?
5.8.27!??
이런 현상이 벌어지는 이유는 라라벨의 구조 때문에다. 라라벨은 laravel/laravel과 laravel/framework 패키지를 가지고 있다. laravel/framework가 라라벨 코어 프레임워크이고 laravel/laravel은 laravel/framework를 이용한 뼈대(skeleton) 애플리케이션이다. 즉 laravel/laravel은 일종의 퀵스타트 예제인 셈이다. laravel/laravel과 laravel/framework의 관계는 appkr님의 글에도 잘 정리되어 있으니 참고하자.
laravel/laravel의 composer.json
을 살펴보면 다음과 같이 laravel/framework에 의존하는 것을 확인할 수 있다.
"require": { "php": "^7.1.3", "fideloper/proxy": "^4.0", "laravel/framework": "5.8.*", "laravel/tinker": "^1.0" },
“laravel/framework”: “5.8.*” 식으로 의존하기 때문에 5.8의 최신 버전이 설치된다. 따라서 특정 버전의 라라벨을 설치하는 방법은 간단하다. laravel/laravel을 clone 혹은 내려받기한 다음 composer.json에 laravel/framework의 정확한 버전을 지정한 뒤 composer install로 설치하는 것이다.
laravel/laravel clone 혹은 내려받기(설치 아님)
내려받기는 설명할게 없으니 git clone
으로 진행해보자.
git clone git@github.com:laravel/laravel.git myProject
laravel/laravel에 기여하려고 클론한 것은 아니니 깃 정보를 제거하자.
cd myProject rm -rf .git
composer.json
을 열고 "laravel/framework": "5.8.*"
을 "laravel/framework": "5.8.26"
으로 바꾼다.
"require": { "php": "^7.1.3", "fideloper/proxy": "^4.0", "laravel/framework": "5.8.26", "laravel/tinker": "^1.0" },
컴포저로 의존 패키지들을 설치한다.
composer install
설치가 완료되면 버전을 확인해보자.
php artisan
5.8.26이 설치되었다.
컴포저에 익숙하신 분이라면 별 내용 아닐 수 있는데, 의외로 검색결과에 제대로 된 답변들이 없어서 정리해봤습니다. 필요할 때 도움이 되면 좋겠네요~ 🙂
2019년 7월 4일
1일 1식 라라벨