리눅스
yum 동작원리 및 명령어
미도반
2022. 5. 17. 09:34
yum 동작 방식 및 저장소 관리
yum과 관련된 설정 파일은 /etc/yum.conf와 /etc/yum.repos.d/ 디렉터리를 참조합니다. yum.conf 파일의 경우 특별히 설정할 것이 없고 /etc/yum.repos.d/ 디렉터리 하위에 있는 파일들이 중요 설정 파일입니다. 이 디렉토리 안에 패키지 저장소 서버 정보가 담겨있기 때문입니다.
yum 동작 흐름
yum install 명령을 실행한 직후부터의 동작 흐름은 다음과 같은 절차로 이루어집니다.

1. yum install 로 패키지 설치 명령을 실행합니다.
2. /etc/yum.repos.d/ 디렉터리의 여러 설정파일들 및 CentOS-Base.repo 파일을 참고하여 인터넷상의 패키지 저장소 서버 주소를 얻습니다.
3 ~ 4. 패키지 목록을 저장소 서버로부터 얻습니다.(실제 패키지는 받지 않고 목록만 가져옴)
5. 가져온 패키지 목록을 터미널에 출력하고 설치할 것인지 여부(Y/N)를 묻습니다.
6. Y를 입력하면 패키지를 다운로드하여 자동으로 설치합니다. 만약 yum install -y 옵션을 사용했다면 여부를 묻지 않고 모든 과정을 자동으로 진행합니다.
CentOS-Base.repo 설정 파일 및 패키지 저장소 설명
지금까지 살펴봤듯이 패키지를 다운받는 패키지 저장소 서버는 etc/yum.repos.d/CentOS-Base.repo 파일에 주소가 명시되어 있다는 사실을 알 수 있습니다.
내용을 확인하기 위해 에디터로 설정 파일 CentOS-Base.repo 을 열어 봅니다.
vi /etc/yum.repos.d/CentOS-Base.repo
|
cs |
CentOS-Base.repo 파일은 다음과 같은 구조를 지니고 있습니다.
[base]
name=CentOS-$releasever - Base
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
...생략...
#additional packages that may be useful
[extras]
...생략...
#additional packages that extend functionality of existing packages
[centosplus]
...생략...
enabled=0
크게 [base], [updates], [extras], [centosplus] 로 공백줄로 구분하여 나뉘는데, 각 항목은 패키지 저장소의 위치를 나타냅니다. 글 위쪽으 yum 동작 흐름의 그림에서 패키지 저장소를 보면 원본 패키지, 업데이트 패키지, 추가 패키지가 있는것을 볼 수 있습니다.
[base]
여기서 [base] 항목은 원본 패키지 저장소를 의미합니다. 원본 패키지는 CentOS가 릴리즈 되는 시점에 제작된 버전의 패키지를 의미하며 원본 패키지 저장소에 패키지들이 저장되어 있습니다. 우리가 배포판을 처음 설치할때 같이 설치되는 패키지들이 이곳에 저장된 원본 패키지이며 DVD 이미지에 담겨있습니다.
[updates]
이후 버그 수정이나 기능 수정 등으로 인해 업데이트 된 패키지의 경우 업데이트 패키지 저장소에 별도 저장관리되며 [updates] 항목에 URL을 설정할 수 있습니다. yum은 패키지를 설치할 때 기본적으로 [base] 저장소가 아닌 [updates] 저장소를 이용하며, 이 항목을 주석처리하게 되면 yum 명령어로 패키지를 설치할때 업데이트 버전을 설치하는 것이 아닌 원본패키지 저장소의 패키지를 설치하게 됩니다.
[extras], [centosplus]
추가로 배포된 패키지인 추가패키지 저장소 설정은 [extras] 항목에서 관리하며, [centosplus] 항목이 있지만 기본적으로 enabled=0 으로 설정이 꺼져있고 사용되지 않습니다.
CentOS-Base.repo 설정 구성
바로 위에서 저장소에 관한 설명을 했고 여기서는 설정 항목에 대해서 알아보도록 합니다.
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
저장소 항목별로 각각 아래에 몇가지 속성들이 있습니다.
name : 저장소의 이름을 명시한 것이며, 아무렇게나 지정해도 상관없습니다.
mirrorlist : baseurl 속성의 값이 생략된 경우 이곳에 명시된 URL을 사용합니다. 기본적으로 CentOS 프로젝트에서 운영하는 공식 서버 URL이 지정 되어 있습니다.
# : 설정에서 #은 주석을 뜻하며 설정이 무시됩니다.
baseurl : 패키지 저장소의 url이며, http://, ftp://, file:// 프로토콜 스킴을 사용할 수 있습니다.
gpgcheck : GPG(GNU Privacy Guard) 키가 들어있는 저장소의 URL을 적습니다. GPG 키는 rpm 패키지를 인증하는데 사용하는 암호화 서명입니다.
enabled : 이 저장소 설정 여부를 사용할것인지 여부를 지정합니다. 기본값은 1이며 1 = 사용, 0 = 미사용 입니다.
CentOS 패키지 저장소 목록
CentOS 패키지 저장는 CentOS 공식 사이트 뿐만 아니라 전 세계적으로 수많은 저장소를 제공하고 있는데, 이러한 저장소 서버들을 미러(mirror) 서버라고 합니다. 전 세계에 퍼져있는 미러 서버 정보는 다음의 링크를 참조합니다. 링크에 접근하여 Ctrl + F를 눌러 korea로 검색하면 카이스트, 카카오, 네이버에서도 미러서버를 제공하고 있는것을 알 수 있습니다.
출처: https://dololak.tistory.com/332 [코끼리를 냉장고에 넣는 방법]
명령어
* yum check-update : 현재 인스톨된 프로그램 중에 업데이트 된 것을 체크해줍니다.
* yum clean all : 캐시 되어 있는 것을 모두 지웁니다.
* yum deplist : yum 패키지에 대한 의존성 테스트합니다.
* yum downgrade 패키지 : yum을 통한 패키지 다운그레이드합니다.
* yum erase 패키지 : yum을 통한 시스템에서 삭제합니다.
* yum groupinfo 그룹 : 그룹패키지의 정보를 보여줍니다.
* yum groupinstall 그룹 : 그룹패키지를 설치합니다.
* yum grouplist 그룹 : 그룹리스트에 관한 정보를 확인합니다.
* yum groupremove 그룹 : 그룹리스트에 관해 삭제합니다.
* yum help : yum의 도움말을 확인합니다.
* yum info 그룹 또는 패키지 : 패키지 또는 그룹의 패키지를 자세하게 확인합니다.
* yum install 패키지 : 시스템으로 패키지의 Install 을 실시합니다.
* yum list : 서버에 있는 그룹 및 패키지의 리스트를 보여줍니다.
* yum localinstall 패키지 : 로컬에 설치합니다.
* yum makecache : 캐쉬를 다시 올립니다.
* yum provides FilePath명 : 파일이 제공하는 패키지 정보 출력합니다.
* yum reinstall 패키지 : 패키지를 재인스톨 합니다.
* yum update 패키지 : 패키지를 업데이트합니다.
* yum upgrade 패키지 : 패키지를 업그레이드 합니다.
* yum search 키워드 : 키워드로 시작하는 패키지를 검색할수 있습니다.
예시
yum list installed 패키지명: 패키지가 설치여부를 확인합니다.
yum install 패키지명1 패키지명2 : 여러개 패키지를 모두 설치합니다.
yum list all: 설치가 가능한 모든 패키지 목록 출력합니다.
yum list updates: 업데이트 목록을 보여줍니다.
옵션 #
- -h, --help : 해당 명령어의 도움말을 보여주고 실행이 종료됩니다.
- -t, --tolerant : 에러를 자동으로 잡아서 설치합니다.
- -C, --cacheonly : 캐시를 업데이트 하지 않고 전체 시스템 캐시 실행합니다.
- -c [config file], --config=[config file] : 파일 위치를 알려줍니다.
- -R [minutes], --randomwait=[minutes] : 최대치의 명령어 실행시 기다립니다.
- -d [debug level], --debuglevel=[debug level] : 최종 결과를 디버깅합니다.
- --showduplicates : 중복요소를 보여줍니다.
- -e [error level], --errorlevel=[error level] : 결과 중 에러를 보여줍니다.
- --rpmverbosity=[debug level name] : rpm에서 결과물을 디버깅합니다.
- --version : Yum 버전을 보여주고 실행이 종료됩니다.
- -y, --assumeyes : 모든 물음에 예를 진행합니다.
- -q, --quiet : 모든 작업이 종료됩니다.
- -v, --verbose : 작업을 장황하게 합니다.
- --installroot=[path] : root권한으로 path위치에 인스톨을 진행합니다.
- --enablerepo=[repo] : 1개 이상의 저장소 위치에 저장시킵니다.
- --disablerepo=[repo] : 1개 이상의 저장소 위치에 저장시키지 않습니다.
- -x [package], --exclude=[package] : 패키지 이름을 제외시킵니다.
- --disableexcludes=[repo] : 이름으로 플러그인을 설치를 중단합니다.
- --obsoletes : 오래된 패키지는 업데이트를 하는 동안 적절히 삭제 및 교체됩니다.
- --noplugins : yum plugin이 없도록 합니다.
- --nogpgcheck : gpg signature를 불가능하게 합니다.
- --skip-broken : 문제 있는 패키지는 자동으로 스킵해서 넘어갑니다.
- --color=COLOR : 컬러가 사용되었을 때 조정합니다.
- --releasever=RELEASEVER : $releasever의 값을 yum config와 repo파일에서 조정합니다.
- --setopt=SETOPTS : 임의로 config와 repo 옵션값을 지정합니다.
- --disablepresto : Presto 플러그인을 중단하고 deltarpm을 다운로드 받지 않습니다.