2023. 10. 7. 06:41ㆍ리눅스/CentOS
rpm
- redhat package manager; 패키지를 이용한 프로그램/서비스 관리
* 패키지 : 프로그램을 나눠놓은 조각
- Linux는 kernel부터 시작하여 모든 구성이 패키지로 이루어져 있고
패키지는 다른 패키지와 의존 관계에 놓여있는 경우가 많다
> 패키지 설치/삭제 과정에서 의존성 관련 오류가 굉장히 많이 나온다
- rpm은 redhat에서 처음 만들어서 도입했고, redhat 기반의 Linux에서는 rpm 명령어 사용
> debian 기반의 Linux에서는 rpm이 아닌 dpkg 명령어 사용
- 형식
설치 : rpm -i[설치]v[출력]h[해시;진행도] 패키지명-버전.아키텍처.rpm
확인 : rpm -qa | grep 패키지명
삭제 : rpm -e 패키지명[-버전.아키텍처]
- 패키지 이름 구조
vim-filesystem-7.4.629-7.el7.x86_64 | ||
vim-filesystem | -7.4.629-7.el7 | .x86_64 |
패키지명 | 버전 | 아키텍처 |
1. 패키지명
패키지의 이름은 한 단어이거나 '-' 기호를 이용하여 여러 단어의 조합으로 구성되어 있다
(이때 숫자만 단독으로 나오는 경우가 없기 때문에 버전과 구별이 가능)
한 단어이면 해당 패키지로 설치되는 프로그램 or 서비스이 이름을 나타낸다
여러 단어라면 첫 단어가 설치되는 프로그램 or 서비스이 이름이고
뒤에 이어지는 단어들이 세부 역할을 의미
2. 버전
여러가지 세부 버전으로 구성
7 : major
4 : minor
629 : patch
7 : release
el7 : OS
* OS 버전 표현 방식
el7 : CentOS 7버전 전체
el7_9 : CentOS 7.9버전
centos : CentOS 모든 버전
<생략> : 모든 운영체제
3. 아키텍처
i386, i586, i686 : 32bit CPU
x86_64 : 64bit CPU
noarch : 32bit CPU와 64bit CPU 혼용
- 의존성 오류
1. 확인 방법
A is needed by B : B에게 A가 필요하다
1) 설치할 때
B를 설치하기 위해 A를 먼저 설치해야 한다
2) 삭제할 때
B에게 A가 필요하기 때문에 A를 지울 수 없다
2. 해결 방법
1) 의존성 오류 메세지를 읽고 해당 내용 해결
설치할 때는 A를 먼저 설치하고 B를 설치
삭제할 때는 B를 먼저 삭제하고 A를 삭제
2) 의존성 오류를 무시하는 보조 옵션 --nodeps 사용
설치할 때는 A를 찾을 수 없을 때, 삭제할 때는 B를 삭제할 수 없을 때 의존성 오류를 무시한다
3. 의존성 오류 메세지에 패키지명이 아닌 다른 내용이 출력되면?
1) 파일의 절대 경로
패키지에 해당 파일이 포함되어 있는 경우(일반적으로 삭제할 때 출력)
파일명을 패키지 이름으로 바꿔서 읽으면 된다
2) lib~~~.so.숫자(~~~)
~~~ 부분이 패키지를 의미(설치/삭제할 때 전부 출력)
해당 의존성 오류를 검색하여 패키지명 확인
3) pkgconfig(~~~)
~~~ 부분이 패키지를 의미(일반적으로 설치할 때 출력)
해당 의존성 오류를 검색하여 패키지명 확인
- 패키지 파일 구하는 방법
1. 설치 CD에 있는 패키지 파일 사용
2. 인터넷에서 패키지 파일을 다운로드 받아 사용
- 패키지 관리 시 주의 사항
1. 의존성 오류는 가급적이면 무시하지 않느다
> 의존성 오류를 전부 무시하게 되면 작게는 프로그램부터 크게는 운영체제에 문제가 생길 수 있다
2. 패키지들은 버전과 아키텍처를 맞추어 주어야 정상적인 동작이 가능하다
+ 의존성 오류에 버전 정보가 나오면 버전까지 체크해서 의존성 오류 해결이 필요하다
> 패키지명 = 버전 : 해당 버전의 패키지
패키지명 > 버전 : 해당 버전보다 높은 버전의 패키지
3. 모든 작업은 눈에 보이는 순서대로 진행(누락 방지)
단, main 패키지가 존재하는 경우에는 main 패키지를 최우선으로 진행
* 세부 역할이 없으면 main 패키지
4. 패키지 설치 시 * 기호를 사용하여 모든 패키지를 한 번에 설치 x
> 의존성 오류 발생 시 패키지 의존 관계 파악이 힘들어진다
실습
문제
<실습>
rpm 명령어를 이용하여 mariadb로 시작하는 패키지 전체 설치
* 아키텍처 확인( CentOS 7 버전은 64bit 운영체제)
* 의존성 무시( --nodeps) 사용 x
* 필요한 패키지는 사이트 내에서 전부 확인 가능
(이름이 비슷한 것을 찾아서 설치해보거나 구글링을 통해 패키지명 확인)
* 업로드 한 패키지 파일 삭제하지 마세요 - 설치 후 확인할 때 사용합니다
* 다운그레이드 : rpm -Uvh --oldpackage 패키지명-버전.아키텍처.rpm
(다운그레이드가 필요한 실습은 아니기 때문에 참고만 하세요)
확인 사항 : 패키지 설치 완료된 결과 + 업로드 한 패키지 목록