정리하는 공간
리눅스) 패키지 (rpm, yum, dnf) 본문
RPM 패키지
패키지란?
특정 프로그램이나 유틸리티 등을 개발하고, 컴파일해서 바이너리 형태로 제작한 후 설치될 파일들의 디렉토리 위치를 미리 지정해 하나의 파일로 묶어놓은 것
(컴파일 : 코딩되어진 것을 실행파일로 만드는 작업)
rpm
레드헷 계열에서 만든 패키지 관리도구
rpm 특징
- 바이너리 파일로 구성되어 있어 컴파일이 필요 없다.
- 패키지 파일들이 관련 디렉터리로 바로 설치된다. (경로 설치 필요X, 때에 따라 있긴 하다.)
- 한 번 설치된 패키지 파일을 일괄적으로 한 번에 삭제 가능
- 기존에 설치된 패키지를 삭제하지 않고 바로 업그레이드 할 수 있다.
- 패키지의 설치 상태를 검증할 수 있다.
- 패키지에 대한 정보를 제공한다.
- 단점 : 패키지 의존성에 따라 관련 패키지가 먼저 설치되어 있지 않으면 설치할 수 없다.
패키지 의존성 : a패키지를 받기 위해선 b, c, d 패키지 설치가 필요하다.
Tip : yum은 저장소에서 의존성에 상관없이 알아서 필요한 파일을 받는다.
P.S
- rpm은 저장소 개념이 없다.
- rpm –ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 이런식의 로컬을 많이 사용해 다운받는다.
- rpm은 패키지 다운보단 패키지 정보확인으로 많이사용한다. 의존성을 해결하지 못하기 때문이다.
rpm 패키지의 이름 구성
audit-2.3.2-1.fc.19.x86_64.rpm
audit | 2.3.2 | 1.fc.19 | x86_6 | rpm |
패키지 이름 | 패키지 버전 | 패키지 릴리즈 | 아키텍처 | 확장자 |
패키지 버전
해당되는 패키지의 버전 ( 점을 기준으로 3개의 버전으로 나뉨)
major 버전 . minor 버전 . 패치레벨
2.3.2
메이저 버전 : 2
마이너 버전 : 3
패 치 레 벨 : 2
ex) 게임이 패치되면 패치레벨 상승, 캐릭터가 새로 생기면 마이너버전 상승, 게임 프로그램이 바뀌면 메이저 버전 상승
패키지 릴리즈
1.fc19 는 패도라 리눅스 19버전에서 첫 번째로 만들어진 것이다. 라는 뜻을 가진다. (몇 번째 만들어진지 알려줌)
아키텍처
cpu 관련내용으로 x86은 인텔 cpu를 의미하고, 운영체제 64비트이다. 라고 해석한다.
위의 패키지 이름을 해석하면
audit 프로그램은 인텔 cpu 기반에 운영체제 64비트에 맞추어 개발했고, 패도라 19 전형 첫 번째로 나온 패키지이다.
이 첫 번째 패키지 버전은 2.3.2이다.
rpm 명령
Tip : 패키지 설치에 잘 쓰지 않고, 패키지 정보 확인에 많이 쓰인다. (패키지 의존성의 문제로)
rpm --version
rpm 버전 확인
rpm 옵션 패키지명
-i : 패키지 설치
-h : #으로 정보 출력 (###으로 얼마나 설치 됐는지 출력)
-v : 설치 과정에 대해 메시지 출력
-U : 패키지를 업그레이드 하여 설치. (i보다 U를 많이씀)
rpm -ivh 패키지명 : 보통 3가지를 같이 쓴다.
rpm -Uvh
-e : 설치된 패키지 삭제
--replacefiles : 이미 설치된 다른 파일을 덮어 쓰면서라도 패키지를 강제 설치
--replacepkgs : 패키지가 이미 설치되어 있어도 다시 설치한다.
(기존 패키지 파일이 에러가 나 파일 찾기 힘들 때 사용)
해당 경로로 이동해 ls명령어 실행. 다운 받지 않은 패키지들이 나온다.
그 다음 해당 파일을 받아보자.
그럼 이렇게 오류가 생기는데, 이것이 rpm 특성 중 의존성 때문이다.
원래대로라면 위에 나오는 파일을 다 받아줘야한다. 하지만 쉘에 xterm을 입력해 꾸러미를 받자....
다 받고나면 이미 설치되어 있음에 rpm -ivh --replacepkgs xterm 을 해서 다운 받을 수 있다.
rmp -q
함께 쓰는 옵션들이 여러개 있는데 밑에 정리하겠다.
rpm 명령어 정리
rpm -e
rpm 삭제
rpm -p 패키지.rpm
상세정보 확인
rpm –qa
설치된 전체 패키지 목록 출력
rpm –qa | grep bash 이렇게 많이 쓰인다. (패키지가 설치되어 있는지 확인해보시오)
rpm -qf 파일명(절대경로)
특정파일명을 포함한 패키지 확인할 때
rpm –qf /usr/bin/ls
rpm –qi 패키지이름
해당 패키지의 상세정보확인
rpm –qi bash (반듯이 패키지가 설치가 되어져 있어야 확인할 수 있다)
rpm –qip 패키지.rpm(패키지명)
해당 패키지의 상세정보확인 (패키지가 설치가 안되어 있더라도, rpm파일의 상세 정보를 확인할 수 있다)
rpm –qs 패키지이름
해당 패키지의 설치 파일들 정상여부 확인
rpm –qs bash
rpm –ql 패키지이름
해당 패키지가 설치한 파일 목록 확인
rpm –ql bash
rpm –qR 패키지이름
해당 패키지의 의존성을 확인
rpm –qR bash : bash 설치 당시 의존성 걸렸던 파일이 나온다.
rpm –qld 패키지 이름
해당 패키지의 문서파일만의 목록을 보여줌
rpm –qld bash
rpm –qlc 패키지 이름
해당 패키지의 설정 파일만의 목록을 보여준다
rpm –qlc bash
(c, d라는 옵션은 설정파일 옵션 보여달라는 것. 그래서 qc나qlc나결과물의 차이는 없다.)
yum
- 저장소 개념 확립, 그래서 의존성 문제를 다 해결할 수 있다.
- yum은 rpm 기반의 패키지 관리도구이다.
- yum repository는 패키지를 모아놓은 저장소.
yum 특징
- 패키지를 분석해 패키지의 의존성을 해결하고 원격 자동 업데이트와 설치할 수 있다.
- 설치 가능한 패키지에 대한 정보가 담긴 저장소(repository)를 가지고 있다.
- (그래서 rpm처럼 로컬링크를 찾아 다운 받을 필요가 없다)
- 저장소의 정보에 의거해 패키지를 관리한다.
yum 작동 원리
1. /etc/yum.conf 파일을 먼저 확인한다. (yum이 사용하는 환경설정파일)
2. yum 저장소에서 디렉터리 /etc/yum.repo.d를 확인한다.
3. yum 저장소에 해당 패키지 다운로드
4. 리눅스 파일 시스템 (/etc, /usr, /var 등)에 패키지 설치
5. 메타데이터(핵심데이터) rpm 데이터베이스 /var/lib/rpm에 저장
yum repolist
현재 활성화된 yum repository 목록확인
yum repository 파일의 위치는 /etc/yum.repos.d이다. (ls /etc/yum.repos.d 해도 같은 값)
rpm -q에서 메타더이터 rpm 저 파일에 저장 확인.
yum 명령어
yum 옵션 명령 패키지명
-h : 도움말 출력
-y : 설치과정의 모든 질문 yes로 대답
-v : 자세한 메세지 출력 (잘 안 씀)
[rpm과 다르게 명령 아규먼트가 있다.]
명령
install : 패키지 설치
update : 업데이트
check-update : yum 저장소에서 업데이트 할 패키지 확인
remove : 패키지 삭제
list : 패키지 목록 확인
info 패키지명 : 패키지 상세정보 출력 (=rpm -qi)
yum list all
이미 설치되어져 있거나 저장소로부터 설치 가능한 모~든 패키지 목록 출력
yum list available
저장소에 설치 가능한 모든 패키지 목록 출력.
grep 이용해서 내가 저장할 것이 저장소에 있는지 확인도 가능
wc -c는 행이 몇인지 값을 보여줌
yum list updates
저장소에서 설치되어 있는 패키지 중 업데이트가 가능한 패키지 목록 출력
yum list installed
이미 설치된 패키지 리스트 목록 출력
yum list installed 패키지명
특정 패키지가 설치되어 있는지 확인 (rpm –qa | grep 패키지명)
yum update
yum info
메타데이터에 저장해서 메타데이터로부터 yum info curl 상세 값이 나온다.
yum remove 패키지명
의존성이 걸린 파일들은
"오류: 문제: 이 작업으로 인해 다음과 같은 보호 패키지가 제거됩니다. dnf (설치할 수 없는 패키지를 건너 뛰려면 '--skip-broken'을 (를) 추가하십시오. 또는 '--nobest'은/는 최상의 선택된 패키지만 사용합니다)"
이렇게 뜬다.
yum search
패키지명을 서치해준다. 현재 설치된 특정 패키지를 검색할 때사용.(단어 공백 기준, bash tab 이런식으로)
yum repolist
저장소들에 어떤 패키지가 설치되어 있나 확인 가능.
dnf
그냥 이런 것도 있다는 것만 알아두자.
yum 명령어와 비슷하기 때문에 dnf로는 크게 설치할 것들은 없다.
epel, remi 다운
'리눅스 기초' 카테고리의 다른 글
리눅스) 컴파일, 라이브러리 파일, makefile 간단 이론 정리 (0) | 2022.05.12 |
---|---|
리눅스) 파일 아카이브, 압축 (tar, gzip, bzip2) (0) | 2022.05.12 |
리눅스) 디스크 쿼터 설정 (0) | 2022.05.12 |
리눅스) 파일 시스템 관리 (mount), 디스크 관리 (0) | 2022.05.12 |
리눅스 ) 파일 시스템 (0) | 2022.05.12 |