♥신뢰할수 있는 뉴스만 전하는♥

Linux : rpm & yum 본문

리눅스

Linux : rpm & yum

모두의유머 2019. 5. 31. 10:57

1. rpm 패키지 관리 도구 (Redhat Package Management)

- 새로운 프로그램을 설치하는 프로그램입니다.

- Windows의 setup.exe와 비슷합니다.

- 프로그램 패키지 (rpm/설치 파일) 형태로 배포하면 rpm명령어를 이용하여 설치가 가능합니다.

 

<예제 1>

RPM명령어 테스트를 위해 CentOs DVD 이미지를 Server-A에 삽입 후

mount -t iso9660 /dev/cdrom /mnt 를 입력하여 마운트 하기 

 

iso9660 : iso 이미지 파일을 마운트 하여 사용하기 위한 타입

 

/mnt 디렉터리로 이동 후 파일/디렉터리 확인하기

# cd Packages

# ls

패키지 일부

CentOS DVD 이미지에서 기본적으로 제공하고 있는 패키지 파일

 

[패키지이름] -[버전] . [릴리즈] . [아키텍처] . [확장자]

① [버전]

253 - Major 버전, 프로그램에 큰 변화가 있을 시 변경되는 숫자

1 - Minor 버전, 프로그램에 작은 변화가 있을 시 변경되는 숫자

② [릴리스]

el6 - Enterprise Linux 6 커널에서 사용할 수 있는 패키지 (CentOS 6버전)

③ [아키텍처]

x86_64 - 64bit 운영체제에서 설치가 가능한 패키지

i386 - 32bit 운영체제에서 설치가 가능한 패키지

 

noarch - 운영체제 아키텍처와 상관없이 설치가 가능한 패키지

 

rpm 패키지 설치 (-ivh)

-i (install) 설치

-v (verbose) 설치 과정 출력

-h (hash) #기호로 설치 과정 출력

 

xterm-253-1.el6.x86_64.rmp

X-Windows 환경에서 동작하는 터미널 프로그램

 

의존성 오류

xterm-253-1.el6.x86_64.rmp 패키지를 설치하려면 밑의 파일들을 먼저 설치해야 xterm패키지를 설치할 수 있습니다.

 

※ 의존성 문제를 모두 해결한 뒤 패키지 설치가 가능합니다.

 

의존성 오류를 무시하고 설치하는 방법

[옵션]

--nodpes 의존성 오류를 무시하고 설치

--force 강제로 패키지 설치

※ 프로그램 정상 동작을 보장하지 않습니다.

 

버전 업그레이드하며 설치하기 (-Uvh)

# rpm -Uvh [패키지명]

 

기존에 설치 되어있는 패키지의 버전과 비교하여 설치하고자 하는 패키지가 있다면 업그레이드,

없다면 설치를 진행하는 명령어를 입력해줍니다.

 

패키지 정보 검색 (-q)

# rpm -q [옵션]

a (시스템에 설치 되어있는) 전체 패키지 목록 확인

f 파일이 포함 되어있는 패키지 명을 출력 (파일 경로)

i 패키지 상세 정보 확인 (패키지 명만 필요)

l 패키지가 설치한 파일의 목록 출력 (패키지 명만 필요)

R 패키지의 의존성 확인 (패키지 명만 필요)

 

<예제 1>

lrzsz 패키지 상세 정보 확인

 

패키지 제거 (-e)

# rpm -e [패키지 명]

※ 제거 후 꼭 rpm -qa [패키지 명]으로 확인하기

 

<예제 1>

goole 검색을 이용하여 figlet 패키지를 다운받아 Server-A설치, 확인 해보기

검색어

figlet rpm → 첫번째 사이트(rpm resource figlet - RPMFind)

- el6 64bit 파일을 다운로드 해야 합니다. (CentOS 6버전이며 64bit)

 

파일 전송 후 rpm을 이용하여 설치

 

figlet 사용해보기

입력한 문자를 위와 같은 형태로 바꿔줍니다.

※ # yum -y install lrzsz //파일 전송 패키지

 

+ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ+

 

2. # yum [옵션] [명령] [패키지명] (Yellowdog Updater Modifier)

- rpm 기반의 패키지 관리도구로 의존성 문제를 자동으로 해결합니다.

- 패키지를 분석(Resolving)하여 패키지의 의존성을 해결하고, 시스템에 설치된 패키지의 버전과 저장소에 위치한 패키지의 버전을 비교하여 자동으로 업데이트도 진행됩니다.

- 설치 가능한 패키지에 대한 정보를 가지고 있는 저장소(Repositroy)를 가지고 있습니다.

- 패키지를 저장하고 있는 CD이미지 파일이나, 네트워크가 연결되어 있어야지만 사용이 가능한 명령어입니다.

 

→ 옵션

-y 설치 과정에 출력되는 모든 질문에 yes로 대답

 

→ 명령

install : 패키지 설치

update : 패키지 업데이트

check-update : 패키지 업데이트 여부 확인

remove : 패키지 삭제    ( #rpm -e )

list : 패키지 목록 확인

list all - 이미 설치가 되어 있거나 설치가 가능한 패키지 목록 출력

list available - 저장소에서 설치가 가능한 패키지 목록 출력

list update - 업데이트가 가능한 패키지 목록만 출력

list install - 이미 설치된 패키지 목록을 출력 ( #rpm -qa )

info : 패키지 정보 확인    ( #rpm -qi )

localinstall (#rpm -ivh)

패키지가 로컬에 위치해 있을 때 rpm 명령어 대신 사용할 수 있으며,

의존성 오류가 발생하면 의존성 오류를 자동으로 해결해주고, 패키지를 설치

 

# yum search [문자열]

패키지 명, 패키지의 정보에서 해당 문자열을 찾아 화면에 출력해주는 명령어입니다.

ex) vim을 설치하고 싶다. → yum명령어 인자로 패키지명이 필요하다.

→ 근데 패키지명을 모를 때, 사용할 수 있음

 

# yum clean all

패키지 목록을 제거하여, 다음번 yum 명령어 실행 시 새로운 패키지 목록을 다운받을 수 있도록하는 명령어입니다.

 

그룹 패키지 설치

특정 환경을 구성하기 위해서 필요한 패키지들을 그룹으로 묶어 설치할 수 있도록 만든 패키지입니다.

 

# yum grouplist - 그룹 패키지 목록 확인

ex) # yum grouplist | more

 

#yum groupinstall [그룹 패키지명] - 그룹 패키지를 설치

 

ex) #yum groupinstall 웹 서버

※ yum groupinstall이 안되는 이유

1. 그룹 패키지명이 한글 패키지명이기 때문에

2. 띄어쓰기 때문에 안됨 ( 웹 따로 서버 따로 )

 yum install [패키지명] [패키지명] [패키지명]    

여러개의 패키지를 띄어쓰기로 구분하여 설치할 수 있다.

→ # yum groupinstall "web server"로 묶어주어 인자가 확장해석되지않도록 해야한다.

 

한글 인코딩 설정 (현재 설정)

# echo $LANG

ko_KR.UTF-8 → 한글 인코딩 설정

 

 

영어 인코딩 설정

# LANG=en_US.UTF-8 → 영어 인코딩 설정

# echo $LANG
en_US.UTF-8

 

yum 명령어 설정 파일

1. /etc/yum.conf → yum 주 설정 파일

2. /etc/yum.repos.d → 저장소 정보가 저장되어 있는 파일

 

CentOS-Base.repo

CentOS 원본 패키지 저장소 정보가 저장되어 있는 파일

http://mirror.centos.org/centos/$releasever/os/$basearch/

 

로컬 레포토리 서버 구축

yum 명령어 설정 파일

1. /etc/yum.conf    // yum 주 설정 파일

2. /etc/yum.repos.d/*.repo    // 저장소 정보가 저장되어있는 파일

# cd /etc/yum.repos.d
# ls
CentOS-Base.repo       CentOS-Media.repo  CentOS-fasttrack.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo

CentOS-Base.repo (CentOS 원본 패키지 저장소 정보 파일)

# vim CentOS-Base.repo
// 파일 내용은 공유폴더 참고 (CentOS-Base 내용.txt)

[base]
[updates]

[extras]

#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
               

yum 명령어 동작 과정

# yum clean all     // 패키지 목록 삭제

# yum install autotrace                                        6.9                    x86_64

 

1. yum 명령어 사용

2. 패키지를 다운받기위해 패키지가 저장되어있는 저장소의 주소를 찾기위해

/etc/yum.repos.d/*.repo 파일의 Baseurl의 주소를 확인합니다.

( *.repo의 모든 파일의 주소를 찾아가 해당 패키지가 존재하는지 확인

→  http://mirror.centos.org/centos/6.9/extras/x86_64/)
패키지 목록을 다운받고 필요한 패키지를 해당 서버에서 다운로드

3. 하지만, Baseurl은 사용하지 않고, mirrorlist에 명시된 주소로 연결되어 yum 명령어의 fastestmirror 플러그인에 의해서 가장 가까운 레포지토리 사이트의 URL주소를 받아와 해당 저장소에서 패키지를 다운받습니다.

 

§ yum 사용 시 다음 카카오 REPO 서버로 항상 연결이 되도록

            CentOS-Base.repo 파일을 수정해보기 §

                 ( [base],[updates],[extras] ) 항목의 주소 변경

 

※ 인터넷에서 찾은 다음 카카오의 repo 서버 주소

http://ftp.daumkakao.com/centos/$releasever/os/$basearch/

http://ftp.daumkakao.com/centos/$releasever/updates/$basearch/

http://ftp.daumkakao.com/centos/$releasever/extras/$basearch/

 

mirrorlist를 주석 처리하고 baseurl에 찾은 다음 카카오의 repo서버 주소를 넣습니다.

 

 

캐시를 지워주고 repolist로 확인하기

→ 이전보다 속도가 더 빨라집니다.

 

 yum 실행이 안될 때 조치 및 확인 방법 

1. yum은 여러번 실행할 수 없습니다. (백 그라운드로 사용할 수 없음)

동시에 yum을 사용하게 되면 동시에 실행 되는 게 아니라 먼저 실행한 yum이 종료가 되어야지만 다음번 yum 명령어가 순차적으로 실행됩니다.

이전에 실행한 yum 프로그램은 대기 상태에 있습니다.

 

2. 어떠한 이유에서 yum이 동작하지 않아 프로세스를 종료시키기 위해서 다양한 시도를 하다가 Ctrl + z (프로세스 중지) 단축키를 사용한 경우입니다.

 

# kill -9 [PID/작업번호] 사용하여 프로세스를 종료시킨 후 사용해야 합니다.

 

3. 네트워크나 도메인 주소 해석과정에 문제가 있는 경우입니다.

외부에서 패키지를 다운로드하는 과정이 있기 때문에, 외부와 통신이 잘 되는지 확인해야 합니다.

 

※ 외부와 통신이 되는지 확인하는 방법

# ping [IP주소/도메인주소]

ex) # ping 8.8.8.8 → IP주소를 이용하는 방법

- 외부와 통신이 되는지 확인할 때

    # ping google.com → 도메인 주소를 이용하는 방법

- 로컬 네임 서버(DNS) 동작과 외부와 통신이 되는지 확인

 

→ 로컬네임서버란?

- 컴퓨터는 IP 주소를 이용하여 통신을 합니다.

- 사람은 IP 주소를 사용하는 것보다 도메인 주소를 사용하는 것이 편리합니다.

- 도메인 주소를 컴퓨터가 사용하는 IP 주소로 변환해주는 서버를 DNS 서버(로컬 네임 서버)라 합니다.

- 현재 시스템에서 도메인을 사용했을 때 해당 도메인을 해석해주는 DNS 서버를 로컬 네임 서버라고 합니다.

- 이러한 로컬네임서버 설정은 /etc/resolv.conf 파일에서 설정합니다.

 

# cat /etc/resolv.cof

nameserver 8.8.8.8 → google 1차 DNS서버 IP주소

nameserver 8.8.4.4 → google 2차 DNS서버 IP주소

 

도메인을 사용 → /etc/resolv.conf 파일에 DNS서버 IP주소를 확인 → DNS서버에 접속하여 도메인에 대한 IP주소를 받아와 실제 접속은 IP주소를 이용하여 해당 도메인에 해당하는 서버에 접속한다.

 

- baseurl 혹은 mirrorlist 설정에는 IP주소가 아닌 도메인 주소가 명시되어있습니다.

- REPO 설정 파일에는 baseurl 혹은 mirrorlist 설정에는 IP 주소가 아닌 도메인 주소가 명시되어있습니다.

- yum을 쓴다는 것은 DNS서버에게 REPO서버의 도메인 주소에 대한 IP를 해석하는 과정입니다.

 

즉, 로컬 네임 서버 설정( /etc/resolv.conf)이 잘못되어있거나, 혹은 해당 DNS서버가 동작하지 않으면 yum을 사용할 수 없습니다.

 

출처 : https://neul-carpediem.tistory.com/99?category=788657

Comments