초창기 리눅스는 프로그램 패키지 설치가 굉장히 어려웠다(고 합니다).
리눅스는 프로그램을 설치하려면 소스코드를 가져와서 직접 컴파일을 한 후 필요한 곳에 적절하게 배치해야 했다(고 한다).
그래서 리눅스에서 일반사용자가 프로그램을 가져와서 설치하는 것은 불가능에 가까웠다(고 한다..)
쓰다보니 안되겠다. 앞으로 말하는 초창기 리눅스에 관한 부분은 전부 강의를 통해 들은 부분이니 양해바랍니다.
프로그램을 가져오더라도 컴파일을 못하는 리눅스 초보자들은 프로그램을 깔 수가 없었습니다. 이러다보니 리눅스는 사용자들에게 외면을 받았고
RedHat사 에서 Redhat Package Manager라는 개념을 도입했습니다.
윈도우에서 setup.exe 로 쉽게 프로그램을 설치할 수 있는 것처럼 리눅스도 RPM이라는 확장명의 파일을 rpm 명령어로 간편하게 설치하는 방법을 도입한 것이죠.
드디어 .rpm 을 이용해서 윈도우 프로그램처럼 쉽게 프로그램을 설치할 수 있게 된 것입니다.
리눅스 초기 인스톨을 할 때 1000개가 넘는 프로그램을 설치한 후 부팅이 되었을 것입니다.
바로 그 1000개 가량 되는 프로그램이 전부 .rpm 확장자로 설치되는 프로그램들입니다.
rpm파일들은 centos dvd 파일에 전부 들어있습니다. rpm은 패키지(package)라고 합니다.
rpm파일은 딱 보기에 복잡한 네이밍 구조를 가졌습니다. (알고보면 별것도 아니지만요)
예를 들어
gedit-3.8.3-6.e17.x86_64.rpm
이라는 rpm 파일을 확인해보면
패키지이름 : gedit --> 패키지(프로그램)의 이름
버전 : 3.8.3 --> 대개 3자리수로 구성. "주버전.부버전.패치버전 "
릴리즈번호 : 6 --> 문제점을 개선할 때마다 붙여지는 번호
CentOS 버전 : el7 --> CentOS에서 배포할 경우에 붙여짐 (el=enterprise linux)
아키텍처 : x86_64 --> 64비트 CPU를 의미한다. (i386~686) 은 32비트 CPU를 의마합니다.
src : 소스 파일(설치는 가능하나 실행은 되지 않고 컴파일에만 사용 가능합니다)
noarch : 모든 CPU(아키텍처를 가리지 않고 설치가능합니다)
자주 사용하는 rpm 명령어는 다음과 같습니다.
설치 : rpm -Uvh filename.rpm
U (대문자) : 패키지 설치/업그레이드
v : 설치과정의 확인
h : 설치진행과정을 "#"마크로 화면에 출력
삭제 : rpm -e package_name
이미 설치된 패키지 확인
rpm -qa package_name : 패키지가 설치되었는지 확인
rpm -qf 파일의절대경로 : 파일이 어느 패키지에 포함된 것인지 확인
아직 설치되지 않은 rpm 파일 확인
rpm -qlp package_name.rpm : 패키지 파일에 어떤 파일들이 포함되었는지 확인
rpm -qip filename.rpm : 패키지 파일의 상세정보 확인
rpm -qi package_name.rpm : 패키지 파일의 상세정보 확인
반면 RPM은 의존성에 문제가 있습니다. 쉽게 말해 A패키지가 설치되기 위해 B패키지를 필요로 하는 경우, RPM으로 해결이 까다롭기 때문이죠.
이를 해결하려고 YUM이 도입되었는데 YUM에 대해서는 나중에 이야기 하도록 하겠습니다.
mount 작업을 다시하고 시작했지만 아직 mount에 대한 포스팅을 하지 않았으므로 간단하게 설명만 하고 지나가려 합니다.
mount는 cd 를 cdrom에 집어넣는 작업이라고 생각하면 됩니다. 지금은 이정도만 알고가면 됩니다.
캡쳐화면에서 rpm 명령어는 /media/cdrom/Packages/ 에 존재합니다. 그래서 cdrom을 마운트 시켜준 것이죠.
Packages 폴더에서 ls -l 명령어를 통해 mc 패키지를 찾아봅시다. 아래 화면에서는 '-'를 빼먹는 오타가 났지만 너그럽게 이해바랍니다.
mc -4.8.7-11.e17.x86_64.rpm 이라는 파일명이 보입니다. 해당 파일의 패키지명은 파일명 맨 앞의 mc 입니다.
rpm -qa 명령어로 mc 패키지 설치여부를 확인해보니 설치가 되어 있네요.
여기서 주의할점은 rpm -qa mc 에서 파일명이 아닌 패키지 명을 입력해야 해당 명령이 실행이 됩니다.
위에 사용된 rpm 명령어를 mc 패키지를 깔고 지워보면서 연습해보시길 바랍니다.
...
연습이 끝나셨다면 yum에 대해 알아보도록 하겠습니다.
rpm 확장자를 활용해서 굉장히 간편하게 리눅스 상에서 프로그램을 설치하고 지울 수 있게 되었지만 금새 문제점이 나타나기 시작합니다.
리눅스 초기의 프로그램들은 굉장히 단순해서 서로 의존성이 없었지만 시간이 지날수록 프로그램이 무거워지고 서로 의존하기 시작합니다. 이렇게 서로 의존하기 시작한 프로그램들을 깔려고 할 때 rpm 확장자는 의존성이 있는 프로그램 패키지를 자동으로 찾아서 설치해주지 못했습니다.
물론
# rpm -qR package_name
으로 패키지와 의존 관계가 있는 패키지들을 찾아볼 순 있습니다만 이렇게 패키지를 설치해도 걸리는 경우가 있고 걸린 해당 파일을 확인하려면
# rpm -qf package_name
으로 확인을 해야하는데 복잡해집니다.
경로를 알지 못하는 경우는
# find /-name "name"
으로 알아볼 수도 있긴 합니다.
하지만 모든 경우 너무 복잡하고 시간이 오래걸린다는 거죠.
이게 rpm의 가장 큰 단점인데 이런 의존성 해결을 위해 yum이 등장하게 되었습니다.
YUM에 대해 간략하게 설명하자면 다음과 같습니다.
YUM(Yellowdog Updater Modified) :
rpm 명령의 패키지 의존성 문제를 완전하게 해결, 인터넷을 통하여 필요한 파일을 저장소(repository)에서 자동으로 다운로드해서 설치하는 방식
저장소의 URL : "/etc/yum.repos.d/" 디렉터리
yum의 기본 사용법
설치 : yum install package_name ( 주로 yum -y install package_name 으로 사용하게 되는데 "-y"는 사용자의 확인을 미리 모두 "yes"로 확인하고 설치를 진행하는 옵션이다 )
RPM 파일 설치 : yum localinstall filename.rpm ( /media/cdrom/Packages/ 경로에 이미 존재하는 rpm 파일을 가져다가 설치하는 로컬명령어이다)
( 덧붙이자면 localinstall 로 rpm 프로그램을 설치할 때 의존성 문제가 발생하는 부분은 웹을 통해서 자동으로 찾아서 설치해준다)
업데이트 가능 목록 확인 : yum check-update
업데이트 : yum update package_name
삭제 : yum remove package_name
정보 확인 : yum info package_name
패키지 그룹 설치 : yum groupinstall package_group_name
패키지 리스트 확인 : yum list package_name
패키지 설치 가능한 그룹 리스트 확인 : yum grouplist (hidden) : (hidden)을 추가로 입력하면 숨겨진 옵션도 확인가능
특정 파일이 속한 패키지 이름 확인 : yum provides filename
GPG 키 검새 생략 : yum install --nogpgcheck filename.rpm (CentOS 19에서 검증되지 않은 패키지를 강제로 설치할 때 사용)
기존 저장소 목록 지우기 : yum clean all
yum 작동 방식 설정 파일 ( yum install package_name 명령이 작동하는 방식 )
(출처 : http://cafe.naver.com/thisislinux)
CentOS 7 패키지 저장소는 CentOS 웹서버 상에 패키지를 저장하는 공간입니다. CentOS에 소속되어 CentOS의 모든 패키지가 저장되어 있는 곳이죠. CentOS 저장소에는 원본패키지, 업데이트패키지, 추가패키지가 존재하는데 원본패키지는 dvd에 mount 시킨 rpm설치파일들이 동일하게 들어있습니다. 그리고 이후에 향상된 패키지를 업데이트 패키지에 넣어두고 기타 추가 패키지들을 추가 패키지에 보관합니다.
그래서 처음 yum install 명령을 입력하면 yum은 자동으로 CentOS 웹서버에서 필요한 패키지 '목록'을 가져와 설치를 시작하게 되는데 이렇게 사용하려면 CentOS 웹 ftp 주소를 가지고 있어야만 가능합니다. 이 주소가 위에서 언급한 저장소 경로인 /etc/yum.repos.d/ 폴더에 들어있는 것입니다. 그래서 가장먼저 저장소 경로를 담고있는 폴더(대표적인 Centos-Base.repo)를 확인하고 폴더 내에 .repo 확장자를 가지고 있는 파일들로부터 경로(URL)를 받아옵니다. 목록을 가져오고 사용자가 yes 로 설치를 허용하면 설치가 완료된다. 이게 yum 명령의 작동 방식입니다.
yum 명령은 update 패키지를 가장 먼저 가져오게 됩니다. (최신이므로)
추가로 yum 작동 방식 설정 파일을 확인하면
(file) : /etc/yum.conf : 변경할 필요 없음
(directory) : /etc/yum.repos.d/ : yum명령을 입력했을 때 검색하게 되는 네트워크의 주소가 들어 있는 여러 개의 파일이 있습니다. 가장 처음 초기 설정 당시 업데이트 부분에 #주석처리 한 기억이 나시는 분도 계실 겁니다 ^.^
/etc/yum.repos.d/ 폴더의 *.repo 파일 중 CentOS-Base.repo 에서 [base], [extra] 부분을 남기고 [update] 부분에 #### 처리로 삭제한 것처럼 보이게 했었습니다.
yum 명령어는 인터넷이 연결된 상태에서만 사용할 수 있는데 그렇다면 인터넷이 연결되지 않은 상태로는 사용이 완전히 불가능하다고 들릴 수도 있겠습니다. 하지만 yum 작동방식에서 원본패키지는 우리가 사용하는 리눅스에 마운트 시킨 dvd에 있는 rpm설치 프로그램과 동일하다고 했던 바가 있습니다. 그렇다면 이러한 상황을 이용해서 yum 명령을 인터넷이 안되더라도 로컬폴더에서 가져와서 설치하도록 설정할 수 있을 겁니다.
가장 먼저
# umount /dev/cdrom
# mount /dev/cdrom /media/cdrom
# ls /media/cdrom (dvd 경로)
# cd /etc/yum.repos.d/
# mkdir backup
# mv *.repo backup/
# ls -l
# touch dvd.repo
# vi dvd.repo
i
[dvd]
name=CentOS DVD
baseurl=file:///media/cdrom
gpgcheck=0 (1은 gpgcheck를 하므로 추가경로를 입력해주어야 합니다.)
:wq
# ls -l
# cd
# yum install mysql-connector-odbc
# yum install mysql-connector-odbc unixODBC
(다운로드하는 척 하지만 실제로는 네트워크를 사용하지 않고 마운트된 dvd에서 가져와서 설치하는 것)
# yum -y install html2ps
없을 때가 있는데 dvd에 모든 패키지가 들어 있진 않습니다. 실제로 Centos 원본패키지에 더 많은 원본패키지들이 들어있고 그 중에서 가장 많이 사용하는 파일들을 dvd 파일로 만들어서 OS상에 넣어뒀기 때문입니다. 이런 상황이 생기면 옮겨둔 CentOS-Base.repo를 가져오면 되지만 dvd에 있는 건 가져오고 dvd에 없는 건 네트워크 상에서 가져올 수 있으면 더 빠르게 설치가 가능하므로 이렇게 설정을 해보도록 하겠습니다.
# vi /etc/yum.repos.d/dev.repo
i
[network]
name=Network
baseurl=
http;//mirrors.kernel.org/centos/7/os/x86_64/
http://mirror.centos.org/centos/7/os/x86_64/
gpgcheck=0
:wq
# yum clean all
# yum -y remove mysql-connector-odbc unixODBC
# yum install mysql-connector-odbc html2ps
y ( 일부는 network에서 일부는 dvd 에서 가져와 설치하게 됩니다. )
--패키지그룹실습--
# yum grouplist
그룹 이름이 한글로 나오면 영문으로 바꿔서 설치하는 게 낫다.
# chvt 2
# yum grouplist
# yum clean all
# yum grouplist idden > glist.txt : yum으로 설치가능한 grouplist가 glist.txt 파일로 저장됩니다.
# chvt 1
# gedit glist.txt
# yum groupinstall "MariaDB Databse Server" --> 띄어쓰기가 그룹명에 포함되어 있으므로 ""(double quotation)으로 묶어주어야 한다.
# yum groupinstall "Java Platform"
# yum groupinstall "KDE Application"
이렇게 yum 작동방식과 dvd 활용, network 활용을 하는법 까지 익혀 보았습니다.
'Work-udy > CentOS_Network' 카테고리의 다른 글
[CentOS - 센토스 리눅스] 07. gedit, vi 에디터 사용하기 (1) | 2017.06.17 |
---|---|
센토스(CentOS) 리눅스 06. 서버를 구축할 때 알아야 할 필수 개념과 명령어 (0) | 2017.06.16 |
[CentOS - 센토스 리눅스] 04. File Directory & Permission (파일과 디렉터리의 소유와 허가권) (0) | 2017.06.14 |
[CentOS - 센토스 리눅스] 03. User & Group Managing (사용 및 그룹 관리) (0) | 2017.06.13 |
[CentOS - 센토스 리눅스] 02. Shutdown & Run-level (예약종료 및 런레벨) (0) | 2017.06.13 |