APM(Apache2 + PHP + MySQL)을 apt로 설치했었는데, 소스설치로 진행해보려한다.
기존 프로그램을 삭제하지 않고, 같은 프로그램에대해 소스설치를 진행하면 같은 포트를 점유하려하기때문에 문제가 생길 수 있다고 한다.
따라서 기존에 설치했던 APM을 삭제해야한다!
구글링을 통해 찾아보면서 진행하였는데, 진행하며 이해되지 않았던 부분들이 있었고, 블로그에 나온 방법들은 설명이 충분하지 않았기에 공부할 겸 기록한다.
먼저 여기를 참고하여
$ sudo apt-get purge apache2 php mysql-server mysql-client
$ sudo apt-get purge php7.0*
$ sudo apt-get autoremove
$ sudo dpkg -P mysql-common mysql-server-5.7 apache2 apache2-bin php-common
위 명령어들을 순서대로 진행하였다.
무작정 따라하기보다, 이 명령어들의 가장 기본적인 동작을 파헤쳐보자!
apt-get
Debian 계열의 리눅스에서 패키지를 설치하거나 삭제하는데 사용한다.
여기서, apt
는 apt-get
의 업데이트 된 버전이기 때문에, apt
를 사용하는것이 좋다.
대부분 명령어는 호환이 되기 때문에 기존 명령어와 동일한 방식으로 사용하면 된다.
-> apt-get , apt, 둘의 차이에 대한 내용은 이후에 자세히 다루도록 하겠다.
purge
프로그램 삭제시키는 쉘 명령어.
패키지와 그 패키지의 환경설정을 모두 삭제한다.
--auto-remove
옵션을 주면, 패키지를 삭제하면서 불필요한 의존성 패키지들도 함께 삭제한다.
remove
명령어와 거의 같지만, 환경설정도 삭제한다는 차이가 있다.
autoremove
예전에 다른 패키지의 의존성때문에 설치되었지만, 지금은 사용되지 않는 패키지를 삭제한다.
dpkg
패키지를 설치, 삭제, 조회할 때 사용한다.
dpkg -P 패키지이름
을 하면 패키지뿐만 아니라, 설정파일까지 삭제한다.
위의 명령어를 다 실행했지만 apache2 -v
로 apache2의 버전을 확인해보니 삭제하기 전처럼 버전이 정상적으로 잘 나온다...
삭제하면 찾을 수 없다는 메시지나 그런류의 에러가 떠야하는거 아닌가?!
그런데 또 sudo service apache2 start
를 하면, apache2.service를 찾을 수 없다고 뜬다.
(아, 이건 내가 단순히 apache2를 service로 등록해두지 않았기 때문일까? 여러 블로그들을 참고하며 apt로 apache2를 설치했기때문에, 설정을 어떻게했었는지까지는 기억나지 않는다...)
그리고 Apache2 server로 접속(http://localhost)했을 때, 연결할 수 없다는 창이 뜬다..
다른 블로그에서 이 창은 제대로 삭제되었으면 뜬다는데... 연결할 수 있는 파일은 지워졌어도, 어딘가 쓰레기가 남아있는 것 같다.
하지만 이대로 넘어가서 소스설치를 진행했다가는 마지막에 낭패를 볼 수도 있기때문에, 진행당시에 뿌리까지 뽑아버리려고한다!!
따라서 한꺼번에 정리된 'APM삭제'를 참고하지않고, 개별 삭제를 진행했다.
Apache2 완전삭제를 참고하였는데, 내가 진행할 때에는 부족한 정보가 있었기에 꼼꼼히 추가정리한다.
우선 완전삭제를 위한 명령어들이다.
$ sudo service apache2 stop
$ sudo apt-get remove apache2
$ sudo apt-get autoremove --purge
$ whereis apache2
$ sudo rm -rf [whereis apache2의 결과]
이 게시글의 위에있는 (가장 처음에 진행했던) 4가지 명령어를 순서대로 진행하였다면, 여기서 진행하는 3번째 명령어까지는 결과를 보았을 때, 삭제된 개수가 0개로 뜰 것이다.
하지만 문제는 지금부터다.
분명 다 삭제를 한 것 같은데, whereis apache2
를 하면 정보가 뜨는 것이다!
이는 아까 수상하게 여겼던 apache2 -v
와도 관련이 있는것으로 보인다.
따라서 이렇게 뜨는 결과들을 rm -rf
를 이용해서 하나씩 삭제해준다.
여기서 잠깐!
rm? remove의 약어로서 파일이나 디렉토리를 삭제하는 명령어
-r? 비어있지 않은 디렉토리는 -r 옵션없이는 삭제할 수 없다.
-f? 삭제할 때, 삭제확인과정을 거치지않는다.
나의 경우로 예를 들어보겠다.
우선, 아래는 whereis apache2
를 하면 뜨는 결과이다.
왜인지는 모르겠지만, 총 4군데에 apache2가 분포해있는것 같다.
나는 apache2를 완전 다 삭제하고싶기때문에, 이것들을 각각 삭제하도록 한다.
sudo rm -rf /usr/sbin/apache2
를 진행해서 첫번째 디렉토리를 삭제하고, sudo rm -rf /usr/lib/apache2
로 두 번째 디렉토리를 삭제하고, ... 이렇게 총 4개의 디렉토리를 삭제한다.
다 진행한 후, 다시 whereis apache2
를 해보면 아래와 같이 잘 삭제 된 것을 볼 수 있다.
또한, 가장 찝찝했던 apache2 -v
를 해보면...
드디어! 버전이 정상적으로 뜨지않고, 찾을 수 없다는 결과를 볼 수 있다.
위의 명령어를 다 실행했지만 php -v
로 php의 버전을 확인해보니 삭제하기 전처럼 버전이 정상적으로 잘 나온다...
이것도 마찬가지로 개별적으로 완전삭제를 진행하자!
이곳을 참고하여 진행하였다
$sudo apt remove php*
$sudo apt-get purge 'php*'
$sudo apt-get purge php.*
이 세가지 명령어를 차례대로 진행하면, 제대로 삭제가 안됐었는지 용량을 비울거냐는 메시지가 나온다. 계속 y(yes)를 해주면서 진행하면된다.
이렇게 세가지를 완료한 후, whereis php
를 해보면 잘 비어있는것을 볼 수 있다.
그리고 php -v
를 해보니, 전에는 정상적으로 잘 뜨던 버전이 삭제되어 php를 찾을 수 없다고 하는것을 볼 수 있다.
위의 명령어를 다 실행했지만, service -status-all
을 하니 mysql서비스가 중지된 상태로 존재하고 있음을 알 수 있었다.
이것또한 개별 완전삭제를 진행하도록 하자!
여기를 참고하여 진행하였다
sudo apt-get remove --purge mysql*
을 했을때에는 특별히 제거되는 것들이 없었지만,
dpkg -l | grep mysql
를 하니까 아직 남아있는것들이 보였다.
쓰레기가 남아있으니 이를 개별적으로 제거해주자.
sudo apt-get remove --purge {쓰레기}
를 해주면 되는데, 예를 들어 나같은 경우는 sudo apt-get remove --purge php-mysql
과 sudo apt-get remove --purge php7.4-mysql
을 해주었다.
마지막으로 다른 모든 것들을 청소하기위해
$sudo rm -rf /etc/mysql /var/lib/mysql
$sudo apt-get autoremove
$sudo apt-get autoclean
을 차례대로 수행한다.
이후에 다시 dpkg -l | grep mysql
를 해보면, 남아있던 쓰레기들이 잘 삭제 된 것을 볼 수 있다.
또한, whereis mysql
을 해봐도 제대로 삭제되어 존재하지 않는것을 알 수 있다.
고맙습니다