[Linux/CentOS] 프로그램 설치 - RPM, DNF
System/OS - Linux

[Linux/CentOS] 프로그램 설치 - RPM, DNF

728x90

RPM

(Redhat Package Manger)

Windows의 setup.exe처럼 프로그램 설치 후 바로 실행할 수 있는 설치 파일

>> *.rpm (확장명)  '패키지'라고 부른다.

설치하려는 rpm 파일이 DVD에 있거나 인터넷에서 미리 다운로드한 후 설치해야 함


rpm 파일 형식

패키지이름-버전-릴리즈번호.CnetOS버전.아키텍쳐.rpm

 

(예시) gzip 패키지

패키지 이름 gzip 패키지(프로그램)의 이름; 이름에 하이픈(-)이 포함되어 있을 수 있기 때문에 버전 바로 앞까지를 패키지 이름으로 생각하고 봐야한다.
버전 1.9 대부분 2~3자리 수
릴리즈 번호 4 문제점을 개선할 대마다 붙히는 번호
CentOS 버전 el8 CentOS 8에서 배포할 때 붙여진다. (Redhat enterprise Linux 8)
아키텍쳐 x86_64 파일을 설치할 수 있는 CPU (x86계열 64bit CPU)
더보기

아키텍쳐

- i386, i486, i586, i686; 인텔 또는 AMD 계열의 32bit CPU (구형 CPU)

- x86_64: 인텔 또는 AMD 계열의 64bit CPU (가장 보편적으로 쓰이는 CPU)

- alpha/sparc/ia64: RISC 설계 방식의 CPU (잘 사용하지 않는 CPU)

- src: 소스 파일 패키지 → 설치 후 별도 컴파일 필요

- noarch = NO ARCHitecture (모든 CPU에 설치 가능)


rpm 명령어 사용법

설치 관련

# rpm -i[옵션] 패키지.rpm

또는

# rpm -U[옵션] 패키지.rpm
-U 기존에 패키지가 설치되어있지 않을 땐느 일반적인 설치 진행 / 패키지가 설치되어 있다면 업그레이드 진행 -i install 옵션; 패키지를 설치하기 위한 기본 옵션
-v 설치 과정 확인 -h '#'를 달고 설치 진행과정을 화면에 출력
-nodeps 의존성을 무시하고 설치
의존성 있는 패키지가 설치되지 않았을 때 관련 질문을 하지 않고 통과
--force 강제로 패키지를 설치

매뉴얼을 확인했을 때 설치 옵션으로 i옵션을 디폴트로 두고 설명했지만, 이미 설치되어 있는 패키지의 경우 i 옵션을 주었을 때 오류가 발생하기 때문에 그럴 경우 업그레이드를 시키겠다면 U 옵션을 사용하는 것이 더 편하다.

 

삭제 관련

# rpm -e[옵션] 패키지
-e (erase) rpm 패키지 파일을 삭제하기 위한 필수 옵션 --nonscripts  
--nodeps 의존성을 검사하지 않고 패키지를 제거 --test 실제로 파일을 삭제하지 않고 삭제를 테스트
(--vv옵션과 함께 사용)

 

질문 옵션

# rpm -q[옵션] 패키지
-q 패키지 조회를 위한 필수 옵션 -a + 패키지 이름 시스템 내에 패키지가 설치되어있는지 확인
-p 설치되지 않은 패키지에 대해서도 조회 -f + 파일절대경로 이미 설치된 파일이 어느 패키지에 포함된 것인지 확인 → 파일이 저장되어 있는 절대경로를 인자로 전달
-R 입력한 패키지가 의존하고 있는 패키지 목록 출력 -l + 패키지 이름 특정 패키지에 포함되어 있는 파일들 조회
-s 패키지 안의 파일들의 상태 출력 -i + 패키지 이름 설치된 패키지의 상세 정보
패키지의 설치 여부도 확인 가능
-d 문서 파일만 출력 -c 설정 파일들만 출력

- 설치되지 않은 패키지 조회

# rpm -qlp 패키지이름.rpm  // 패키지 파일에 어떤 파일들이 포함되었는지 확인

# rpm -qip 패키지이름.rpm  // 패키지 파일의 상세 정보 출력 (기능 확인 가능)


실습

rpm 명령어는 DVD에 다운로드 되어있는 패키지를 설치한다. 따라서, 반드시 DVD가 마운트되어있어야 하고 설치할 때에는 해당 디렉터리로 이동해 설치를 진행해야 한다.

 

mc 패키지 설치 (의존성 문제 X)

 

1. mc 패키지가 설치되어있는지 확인

# rpm -qi mc

 

2. mc 패키지의 상세 정보 확인 (기능 확인 목적)

# cd /run/media/root/CentOS[Tab]/AppStream/Packages

>> AppStream 디렉터리에는 주로 X 윈도 응용 프로그램 등의 추가 설치 패키지가 들어있다. 대다수 추가 설치 패키지이기 때문에 따로 설치를 해주지 않았을 경우 설치되지 않은 패키지들이다. mc 패키지가 있는 디렉터리로 이동한 후에 설치해야 한다.

(+) BaseOS 디렉터리: 주로 기본 설치 패키지가 저장되어 있다.

 

# ls -l mc-*

>> mc 패키지의 풀 네임을 확인하기 위해 mc-*으로 찾는다.

 

-qip

# rpm -qip mc-[Tab]

>> 아직 설치되어 있지 않은 mc 패키지에 대한 정보를 출력할 수 있다. Summary의 내용으로 해당 패키지의 요약된 기능을 확인할 수 있다.

 

3. 설치

-Uvh

# rpm -Uvh mc-[Tab]

>> U옵션으로 설치명령을 실행하도록 하고 v 옵션을 사용해 설치되는 과정을 출력하게 했다. h 옵션으로 설치되는 과정(?)을 #으로 보여준다.

-qi

# rpm -qi mc

>> mc 패키지의 세부정보를 설치후에 다시 확인해본다. 이번엔 설치를 한 후 정보출력을 하는 것이니까 p 옵션을 쓰지 않아도 된다. 내용은 Installation Date가 작성되었다는 것을 제외 모두 설치 전과 같다.

-ql

# rpm -ql mc

>> mc 패키지에 포함되어 있는 파일들을 절대경로명으로 모두 출력해 보여준다.

-qf

# rpm -qf /usr/share/mc/hints/mc.hint.eu

>> # rpm -ql mc 로 mc에 포함되어 있는 파일들을 확인했고, 그 중 하나의 파일을 qf 옵션으로 확인해봤다. 해당 파일이 속해있는 패키지의 이름을 정확하게 보여주는 것을 확인했다.

-qa

# rpm -qa mc

>> mc 패키지가 설치되어있는지 확인한다. 만약 설치되어 있지 않다면 아무것도 출력하지 않는다. 설치되어 있을 경우 패키지 파일의 형식을 모두 갖춘 채로 출력한다.

-qR

# rpm -qR mc

>> mc 패키지가 의존하고 있는 다른 패키지들을 모두 출력한다.

 

4. 패키지 실행

마우스 또는 화살표 키를 통해 파일 선택이 가능하다.

Function 키나 Tab 키 등등의 키들을 이용해 여러가지를 수행할 수 있다.

exit 명령을 입력해 mc를 종료한다.

 

5. 패키지 삭제

-e --test

# rpm -e --test mc

>> mc 파일을 진짜로 삭제하는 게 아니라 테스트 용도로 삭제하는 척 한다. 아마 의존성 문제 등을 확인할 때 사용할 듯 하다.

-e

# rpm -e mc

>> mc 패키지를 삭제한다.

패키지를 제거할 때는 패키지 파일이 필요하지 않다. 따라서 ~~~~/AppStream/Packages/ 디렉터리가 아닌 다른 디렉터리에서 삭제해도 된다.

 


mysql-errmsg 패키지 설치 (의존성 문제 O)

1. 패키지 설치

# rpm -Uvh mysql-err[Tab]

>> 의존성 문제로 설치되지 않는다.

 

2. 의존성 관련 정보 확인

# rpm -qRp mysql-err[Tab]

>> mysql-errmsg 패키지가 의존하고 있는 패키지들을 출력한다. 출력된 패키지들이 설치되어 있어야 rpm명령어로 mysql-errmsg 패키지를 설치할 수 있다. 

그러나 출력된 패키지들도 다른 패키지들에 의존하고 있을 수 있기 때문에 의존성의 문제가 발생하는 rpm의 치명적인 단점이 있다.


DNF

(Dandified yum) YUM 명령의 개선된 버전

rpm 명령의 패키지 의존성 문제 해결 → 설치하려는 rpm 파일 + 해당 파일과 의존성이 있는 다른 rpm 파일 자동 설치 (인터넷을 통해 의존성있는 파일들을 알아내기 때문에 인터넷 연결이 되어있어야한다.)


DNF 사용법

기본 설치

# dnf -y install 패키지이름

# dnf install 만 했을 때는 패키지를 다운로드한 후 사용자에게 해당 패키지파일들을 설치할 지 여부를 묻는 부분이 나온다. 이 때 -y 옵션을 써주면 yes라고 질문에 답한 것으로 간주하고 자동으로 넘어가 편리하다.

그리고 패키지 이름만 적어줘야한다. 즉, 위의 실습을 예로 들면 mc 만 적어야한다. rpm패키지 파일 형식의 이름을 적으면 인터넷으로 다운로드하고 패키지를 설치하는 것이 아니라 로컬에 있는 rpm파일을 설치하려고 시도하게 된다.

이미 설치되어 있는 패키지의 경우 업데이트 필요 여부를 확인하고 필요 시 업데이트를 진행한다.

 

rpm 파일 설치

# dnf install rpm패키지파일이름.rpm

# rpm -UVh rpm패키지파일이름.rpm 명령과 동일하다. 그러나 rpm 명령은 의존성 문제에서 걸릴 수 있지만 dnf 명령을 사용할 때는 의존성 문제를 바로 해결할 수 있기 때문에 편리하다.

 

기존 저장소 목록 지우기

# dnf clean all

기존에 다운로드한 패키지 목록을 지운다. 지우고 # dnf install 패키지이름 하면 패키지 목록을 다시 다운로드한다.

 

업데이트 가능 목록 확인

# dnf check-update

시스템에 설치된 패키지 중 업데이트가 가능한 패키지의 목록을 출력한다. 이 전에 #dnf clean all 명령을 실행해주는 게 좋다.

 

업데이트

# dnf update 패키지이름

패키지이름을 지정하지 않고 # dnf update 으로 실행할 경우 업데이트 가능한 모든 패키지를 업데이트한다.

 

삭제

# dnf remove 패키지이름

기존에 설치된 패키지를 삭제한다.

 

정보 확인

# dnf info 패키지이름

패키지의 요약정보를 보여준다.

 

패키지 그룹 설치

# dnf groupinstall "패키지그룹이름"

패키지 그룹에 포함되는 패키지들을 통째로 설치한다.  패키지 그룹의 이름은 큰 따옴표 안에 쓴다.

# dnf grouplist

패키지 그룹의 종류를 확인한다.

 

패키지 리스트 확인

# dnf list 패키지이름

CentOS 에서 제공하는 패키지 리스트를 보여준다. 

 

# dnf list all    모든 패키지 목록을 보여준다.

# dnf list available      현재 설치 가능한 목록을 모두 보여준다.

 

특정 파일이 속한 패키지이름 확인

# dnf provides 파일 이름

특정파일이 어느 패키지에 속해 있는지 확인한다.

 

GPG 키 검사 생략

# dnf install --nogpgcheck rpm파일이름.rpm

(GPG 키: 깨진 파일인지 확인하는 일종의 인증 키) CentOS 8 에서 인증되지 않은 rpm 파일을 설치하려고 할 때 # dnf install 로 설치되지 않는 경우 "--nogpgcheck" 옵션을 사용해 GPG 키 인증을 생략하고 설치할 수 있다.

 


실습

mysql-errmsg 패키지 설치 (의존성의 문제로 rpm 명령으로 설치할 때 실패했음)

1.  패키지 정보 확인

# dnf info mysql-errmsg

>> CentOS repository에 접속하느라 시간이 조금 걸린다. 

 

2. 패키지 설치

# dnf -y install mysql-errmsg

>> Installing: mysql-errmsg 패키지

종속성 설치 (Installing for depndencies = 의존성 있는 패키지들)에 대한 메시지가 나오고 그 이후 필요한 패키지들을 모두 설치한다.

 

3. 패키지 삭제

# dnf -y remove mysql-errmsg

>> 패키지 삭제를 하고, 이 때 install과 마찬가지로 패키지 삭제가 확실한지 확인하는 질문에 yes를 입력하는 것으로 간주하고 삭제한다.

 

텍스트 모드에서 dnf 명령으로 X 윈도우가 작동하도록 설치

1. Workstation 설치

# dnf -x rpm -y groupinstall Workstation

>> -x rpm 옵션: 설치 시 충돌 문제 때문에 rpm 패키지를 제외시킨다. groupinstall로  Workstation 패키지 그룹을 설치한다. 이 때 패키지그룹이름에 띄어쓰기가 없기때문에 굳이 ""를 써 줄 필요는 없다.

설치가 완료된 후  

# reboot

# startx

하면 x 윈도우 창이 실행된다.

 

 

참고도서: 이것이 리눅스다 with RedHat CentOS 8 (개정판) _우재남 (한빛미디어)

 

 

 

 

 

 

 

 

SMALL