리눅스는 설치를 위한 모든 코드를 외부에 공개한다. 따라서 특정 애플리케이션을 설치하고자 한다면 소스코드를 다운로드하고 파일을 컴파일한 뒤 이를 설치하는 과정을 거쳐야 한다. 컴파일을 위해서는 설치위치, 필요한 옵션 등을 수동으로 지정할 수 있어 전문가나 익숙한 사람들에게는 좋은 방법이 될 수 있으나 초보자나 클라우드 환경과 같이 빠른 설치가 필요한 곳에서는 어려운 일이 될 수 있다.
이를 해결하기 위하여 윈도우의 exe와 비슷한 파일을 RedHat 에서 만들었는데, 이를 RPM이라고 부른다. 또는 패키지라 칭한다.
rpm -e 패키지이름
[root@srv7 ~]# rpm -e gedit
ge[root@srv7 ~]# gedit a.text
bash: gedit: command not found...
https://www.rpmfind.net/ 에서 설치하고자 하는 것 search해서 rpm 파일 다운
기본설치방법
rpm -ivh 패키지이름.rpm : install한다. 단, 동일 패키지가 설치되어 있다면 오류 발생
rpm -Uvh 패키지이름.rpm : 기존에 설치된 것이 있는지 확인하고, 기존 설치된 버전보다 지금 설치하고자 하는 버전이 최근 버전이라면 업그레이드 설치를 진행. 만약 설치되어있지 않다면 정상적인 install을 진행
“v” : 설치과정 확인
“h” : #를 이용하여 확인
[root@srv7 ~]# rpm -Uvh gedit-3.28.1-3.el7.x86_64.rpm
gedit는 그래픽 환경에 의존성을 갖는다.
예를들어 wireshark를 설치할때 다음 에러가 뜨는데, 의존성 문제때문에 해당 4가지 파일이 있어야 설치할 수 있다.
[root@srv7 ~]# rpm -Uvh wireshark-gnome-1.10.14-25.el7.x86_64.rpm
error: Failed dependencies:
libwireshark.so.3()(64bit) is needed by wireshark-gnome-1.10.14-25.el7.x86_64
libwiretap.so.3()(64bit) is needed by wireshark-gnome-1.10.14-25.el7.x86_64
libwsutil.so.3()(64bit) is needed by wireshark-gnome-1.10.14-25.el7.x86_64
wireshark = 1.10.14-25.el7 is needed by wireshark-gnome-1.10.14-25.el7.x86_64
yum은 인터넷이나 회사내에 다수의 패키지를 저장소에 보관하고 사용자가 필요한 패키지를 요청했을 때 해당 패키지, 의존성 해결을 위한 패키지를 묶어 사용자에게 전달해주는 방식이다.
만약 패키지가 epel에서 제공하는 패키지라면 CentOS에서는 설치할 수 없다. 이 경우에는 epel 목록을 설치하여 해결할 수 있다.
yum -y install test.rpm
test.rpm을 설치하면서 해결해야할 의존성 패키지는 yum으로 연결하여 다운로드 설치한다.
yum check-update
dnf vs yum
dnf
centos → rpm
rpm -Uvh test.1.0.rpm : 설치가 되어있지 않다면 기본설치, 이미 설치되어 있다면 새로운 버전으로 업데이트 설치 진행
v : 확인
h - #를 이용해 확인
rpm -qa | grep httpd : 설치여부 확인가능
rpm -qi httpd : 설치된 패키지의 상세 정보 확인
rpm의 의존성 문제를 해결하기 위한 방법 : yum → dnf(메모리 적게 사용하면서 필요한 버전설치 가능. yum은 설치시 함께 설치된 의존성 해결 패키지를 remove할 때 지우지 않지만, dnf는 의존성 해결 패키지도 함께 삭제해준다.)
yum이나 dnf는 저장소를 이용하여 필요한 패키지를 요청하면 저장소에서는 해당 패키지와 의존성 해결을 위한 패키지를 묶어 다운로드시켜준다.
도커에서 httpd, nginx를 설치할 때에는 rpm과 같은 패키지를 이용하여 설치할 때와 설치되는 경로가 달라진다.
가령 도커 컨테이너를 이용하여 CentOS 컨테이너를 생성하고 해당 컨테이너 내에서 httpd를 설치하면 기본 경로는 /var/www/html 이지만, 하지만 컨테이너로 httpd 이미지를 사용하면 /var/www/html이 아니다. /usr/local/apache2/htdocs/가 된다.
yum -y install httpd : httpd 설치를 위한 저장소를 검색해 목록에 접속해봄. 의존성을 해결하기 위한 파일들을 묶어 던져줌
yum grouplist → yum -y groupinstall “Server with GUI” : 한꺼번에 Server with GUI를 설치하기 위한 패키지를 한꺼번에 묶어서 설치해줌