2021. 8. 2. 18:09ㆍLinux
이번 시간에는 패키지 관리에 대해 공부하겠습니다.
현재 사용중인 레드햇 계열의 리눅스(Centos 7)에서는 rpm 과 yum를 사용해서 패키지를 관리하고 추가적으로 원하는 프로그램을 패키지를 사용해 설치합니다. 이 둘의 차이점은 무엇이며 각각의 사용법에 대해 배워보겠습니다.
1. rpm (redhat package manager) : 레드햇 패키지 매니저, 레드햇 계열의 리눅스 배포판에서 사용하는 패키지 관리 도구입니다.
저희가 처음 리눅스를 설치할떄 iso 파일을 설치한것을 기억하십니까?
iso 파일은 DVD의 이미지 파일입니다. 즉 DVD의 파일들과 폴더들을 그대로 복사한 것입니다.
DVD의 복사판이라고 생각하시면 됩니다.
이 iso 파일 안에 .rpm을 확장자로 가지고 있는 파일들이 있습니다.
이 파일들은 어디에 사용하는 것일까요?
이 화면을 기억 하시나요? 저희가 처음 설치할때 리눅스 환경을 선택하는 화면입니다. 소프트웨어 선택 화면에서 저희가 원하는 소프트웨어를 선택한뒤 완료를 누르면 설치가 시작됩니다. 저는 '서버 - GUI 사용' 을 선택했었습니다.
소프트웨어를 선택하면 시스템은 저희가 설치한 iso 파일에서 소프트웨어에 필요한 파일들을 설치해줍니다.
즉 iso 파일에는 리눅스 프로그램 설치에 필요한 파일들이 있으며 저희가 처음에 설치한 소프트웨어에 없는 기능(프로그램)을 사용하고 싶으면 iso 파일에서 사용하고자 하는 기능의 rpm 파일을 찾아 설치할 수 있는 것입니다.
예를 들어 처음 설치할때 소프트웨어 선택을 최소 선택으로 했다면 지금처럼 GUI 환경이 아니라 CUI 환경에서 시작할 것입니다. GUI 환경에서 리눅스를 사용하고 싶다면 iso 파일에서 GUI 환경에 필요한 파일들을 설치 해 주면 되는 것입니다.
연습을 하나 해보겠습니다.
1. 우선 iso 파일들을 사용하기 위해서는 iso 파일을 마운트 시켜줘야 합니다.
오른쪽 하단을 보면 아래와 같습니다.
왼쪽 끝에서 두번째 부분을 오른쪽 마우스로 클릭하면 다음과 같은 화면이 나오며 iso 파일을 클릭할 수 있게 됩니다.
iso 파일을 선택하여 마운트 시켜보겠습니다. 물리적인 장치 혹은 iso 파일과 같은 DVD 이미지 파일을 리눅스에서 사용하려면 마운트 작업을 해줘야 합니다.
자세한 마운트 공부는 다음에 다루도록 하고 지금은 간단하게 설명하겠습니다. Linux - 마운트
Linux - 디렉터리 & 파일(1) 에서 /media 디렉터리는 DVD, CD-ROM과 같은 외부 장치가 자동으로 마운트 되었을때 마운트 포인트로 사용되는 디렉터리이고 /dev 디렉터리는 마운트된 장치 파일들이 위치하는 디렉터리라고 배웠습니다.
방금 마운트 시킨 iso 파일이 어디에 마운트 되었는지 확인 해 보겠습니다.
/dev 디렉터리에 sr0 로 /run/media/사용자명에 자동으로 마운트 된것을 확인 할 수 있었습니다.
저는 분명 /media에 마운트 된다고 알고 있는데 왜 /run/media인지는 마운트 관련 공부 할 때 다시 알려드리겠습니다.
저희는 마운트된 위치를 몰라도 iso 파일에 접근 할 수 있습니다. 아까 iso 파일을 마운트 하자 CD 모양의 아이콘이 바탕화면에 생겼기 때문입니다. 이 아이콘을 마우스 오른쪽 버튼으로 클릭후 터미널에서 열기를 해보겠습니다.
pwd 를 통해 /run/media/사용자명에 자동으로 마운트 된 것을 확인 할 수 있었습니다.
이제 iso 파일을 열어보겠습니다. ( iso 파일 = CentOS 7 x86_64 은 CD, DVD 와 같은 디스크의 복사본입니다. 파일이라고 표현하는 것은 파일에 디렉터리까지 포함된 의미이기 때문입니다)
디렉터리 또한 파일입니다.
iso 파일로 들어가면 여러 디렉터리와 파일들이 있습니다. 그중 저희가 당장 알아야 할 디렉터리는 Packages입니다.
이 디렉터리에 저희가 필요한 .rpm 확장자를 가진 파일들이 있는 것입니다.
2. iso 파일을 마운트 했으니 이제 사용할 차례입니다. 저희는 mc 라는 프로그램을 새로 설치해볼것입니다. 이 프로그램은 현재 제가 사용하고 있는 리눅스에 설치되어 있지 않은 프로그램입니다.
이 프로그램을 설치해보겠습니다.
우선 프로그램이 설치되어 있지 않은 것을 확인 했습니다.
rpm 명령어로 프로그램을 설치할때 다음과 같은 형태로 사용합니다.
rpm -Uvh 패키지 파일명
U : 설치하려는 패키지가 없다면 일반 설치, 패키지가 있다면 업그레이드
즉 이미 해당 프로그램이 없으면 설치, 설치 되어 있으면 업그레이드 시키겠다는 것입니다
v : 설치과정의 확인
h : 설치진행 # 마크를 화면에 출력하겠다는 것입니다.
* rpm 명령어는 .rpm 확장자를 가진 패키지 파일들이 위치한 디렉터리로 이동 후에 사용해야 합니다.
이제 설치를 해보겠습니다.
위와 같이 현재 설치 과정이 나오고 설치 진행을 #로 표시한것을 확인 할 수 있습니다.
이제 설치한 mc 프로그램을 실행 해보겠습니다.
정상적으로 작동하는 것을 확인 할 수 있었습니다. 이제 설치한 프로그램을 지워보겠습니다.
제거할 때는 e 옵션을 사용합니다.
rpm은 인터넷이 없어도 사용할 수 있다는 장점이 있습니다. 프로그램을 설치하는데 필요한 파일들이 iso 파일에 있기 때문에 저희는 파일을 찾아서 사용하기만 하면 되는 것입니다.
rpm은 의존성 문제라는 단점이 있습니다. 의존성 문제란 무엇일까요?
예를 들어 제가 mysql-connector-odbc 라는 프로그램을 설치하고 싶다고 가정해보겠습니다.
그럼 저는 rpm -Uvh 명령어를 사용해서 설치할려고 시도 할 것입니다.
하지만 설치에 실패하고 오류가 발생 했습니다.
Failed dependencies : 의존성 실패
A is needed by B : B라는 파일을 설치하기 위해서는 A 라는 파일이 필요한것입니다.
이와 같이 많은 rpm 파일들은 단독으로 실행되지 않고 다른 파일들과 연관이 되어 있습니다.
의존성으로 인해 실패를 했기때문에 A를 먼저 설치하려고 해도 A를 설치하기 위해 또다른 파일을 설치해야할지도 모릅니다. 설치에 필요한 모든 파일들을 알고 있으면 괜찮겠지만 그러기에는 거의 불가능 합니다.
저희가 설치한 mc 프로그램은 의존성이 없는 프로그램입니다. 단독으로 실행되는 프로그램입니다.
하지만 mc 처럼 단독으로 실행되는 프로그램도 있지만 대부분 프로그램들은 의존성이 있습니다.
이러한 문제를 해결 해주는 패키지 관리 도구가 yum 인것입니다.
2. yum : rpm의 의존성 문제를 개선하기 위해 개발된 패키지 관리 도구입니다.
yum은 특정 패키지(프로그램)을 설치하고자 할떄 그 패키지를 설치하려면 필요한 즉 의존하고 있는 패키지들을 찾아주고 자동으로 설치해줍니다. 패키지를 인터넷을 통해 접근하기 때문에 인터넷이 연결 되어 있어야 합니다.
사용법 : yum -y install 패키지명
-y 옵션을 사용하지 않으면 설치하려는 파일에 필요한 의존성 파일이 몇개 있으며 설치하겠냐고 물어봅니다.
y 옵션을 사용하면 자동으로 y 처리가 되기 때문에 바로 설치가 됩니다.
저희가 아까 설치에 실패한 mysql-connector-odbc 프로그램을 yum을 사용해 설치해보겠습니다.
필요한 의존성 파일이 나오고 그 파일을 설치하는데 동의하겠냐고 물어봅니다. y를 입력하면 정상적으로 설치가 됩니다.
성공적으로 설치가 완료되었습니다.
설치를 했으니 이번엔 제거하는 명령어를 배워보겠습니다.
yum -y remove 패키지명
install 대신 remove를 사용하면 됩니다.
아까 설치한 mysql 프로그램을 제거해보겠습니다.
성공적으로 제거 되었습니다.
이상으로 패키지 관리 도구 rpm & yum에 대해 공부 해보았습니다.
다음 내용
'Linux' 카테고리의 다른 글
Linux - grep & 정규 표현식 (1) | 2021.08.08 |
---|---|
Linux - 마운트 (0) | 2021.08.07 |
Linux - 권한(permission)(3) (0) | 2021.08.01 |
Linux - 권한(permission)(2) (0) | 2021.08.01 |
Linux - 권한(permission)(1) (0) | 2021.07.31 |