우선 운영체제마다 설치하는 법이 다른데 나의 경우 ec2안에 mosquitto를 설치하여 이를 broker로 사용하고자 하였다.
1. 버전확인하기
터미널을 열어 아래와 같은 명령어를 실행하였다.
hostnamectl
2. epel-release 설치하기
: 기업용 리눅스를 위한 추가 패키지, RHEL 이나 CentOS에 기본적으로 탑재되어있지 않는 패키지를 제공하기 위해 이런 패키지 저장소가 필요하다.
내 경우에는 자동으로 설치하는 것들이 다 작동이 안 되어 수동으로 설치하였다.
1) rpm 설치하기
wget <https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm>
2) 다운로드한 rpm 설치하기
sudo rpm -ivh epel-release-latest-7.noarch.rpm
설치를 했는데 아래와 같이 떴다.
그런데 자세히 보면 맨 아래에 —skip-broken 이라는 옵션을 쓰면 설치되지 못한 패키지를 스킵해준다고 되어 있어서 위의 명령어에 해당 옵션만 추가하여 다시 설치해주었다.
sudo rpm -ivh epel-release-latest-7.noarch.rpm --skip-broken
그랬더니 제대로 설치되었다.
2-1)
만약 위의 방법이 안되면 아래의 방법을 이용한다.
sudo yum install epel-release --skip-broken
3. mosquitto 설치하기
sudo yum -y install mosquitto --skip-broken
mosquitto를 설치해준다.
3-1)
위의 방법이 안 될 경우에 아래의 방법을 적용한다.
1. 소스코드 다운로드 및 추출
wget <https://mosquitto.org/files/source/mosquitto-1.6.10.tar.gz>
tar xvzf mosquitto-1.6.10.tar.gz
cd mosquitto-1.6.10
2. 컴파일 및 설치
sudo make
sudo make install
3. 작동하고 있는지 확인
sudo systemctl status mosquitto
내 경우 계속 status가 failed로 떴는데 이를 무시하고
mosquitto_sub -d -t my-topic
topic이 날려지는지 확인하였다. 그랬더니 잘 안되어서 해당 오류를 해결하고자 하였다.
4. 오류 해결하기
1) Mosquitto 라이브러리가 설치되어 있는지 확인
sudo yum list installed | grep mosquitto
설치되지 않았다면 다시 설치해준다.
sudo yum install mosquitto
2) libmosquitto.so.1 파일 찾기
sudo find / -name "libmosquitto.so.1"
3) 라이브러리 캐시 업데이트하기
sudo ldconfig
시스템이 새로 설치된 라이브러리를 인식하지 못할 수 있으므로, 라이브러리 캐시를 업데이트하여 새 라이브러리를 포함시킨다.
4) 심볼릭 링크 생성하기
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib64/libmosquitto.so.1
libmosquitto.so.1예상한 것과 다른 디렉토리에서 발견된 경우 mosquitto_sub, 발견된 실제 위치에 대한 심볼릭 링크를 만든다.
위에서 출력된 find로 발견된 파일 위치를 가져와 /usr/local/lib/libmosquitto.so.1에서 발견된 파일 위치로 변경하여 적용해준다.
5) mosquitto_sub명령 확인
mosquitto_sub --help
이 명령을 실행하면 도움말 정보가 표시되어 mosquitto_sub해당 명령이 이제 필요한 라이브러리를 찾을 수 있음을 나타낸다.
👇🏻 참고 사이트
https://dabeen.medium.com/epel-2e630beba5f9
https://gsk121.tistory.com/416
https://1mini2.tistory.com/127