안녕하세요 마무입니다! 이번 포스트에서 다룰 내용은 바로 "리눅스 rpm"
"리눅스 RPM 설치" , "rpm 명령어", "rpm 옵션", "리눅스 패키지란"입니다!
진짜 리눅스마스터 1급에서의 rpm문제는 상당히 복잡해 외우기가 힘들기 때문에,
"리눅스 RPM 설치" , "rpm 명령어", "rpm 옵션", "리눅스 패키지란"입니다!
진짜 리눅스마스터 1급에서의 rpm문제는 상당히 복잡해 외우기가 힘들기 때문에,
옵션들의 의미를 정확히 이해해서 보자마자 느낌이 오게끔 해야합니다.
-----목차-----
1. 리눅스 패키지란?
2. 패키지 관리 프로그램 "RPM"
1. 리눅스 패키지란?
2. 패키지 관리 프로그램 "RPM"
i)패키지 이름 구조
3. rpm 명령어와 옵션
3. rpm 명령어와 옵션
i) "-q(query)계열 옵션들"
-a(all)
-l(list)
fr -i(information)
-f(files)
-R(Requires)
-c(configure files)
-d(document files)
ii) "-i(install) 계열 옵션들"
-v(verbose)
-h(hash)
-U(Upgrade)
-p(package file)
--replacepkgs
--replacefiles
--oldpackage
--force(pkgs +files + old)
iii) "-e(erase) 계열 옵션들"
--nodeps(no depencies)
iv) "-V(Verify) 계열 옵션들"
RPM database이란
-a(all)
----------------
입니다.
여기서 못 찾은 정보는
"리눅스 독학 페이지": https://mamu2830.blogspot.com/p/blog-page_13.html
에서 찾아보시면 있을 수 있습니다!
일단 패키지 관리 프로그램들을 알기전에 "패키지(Package)"라는 개념을 먼저 알아야겠죠? 패키지의 뜻은 "꾸러미, 묶음" 이란 뜻이죠, 리눅스에서의 패키지도 비슷한 의미입니다!
바로 한 프로그램이 작동할 때 필요한 모든 것들을 묶어놓은 것이죠
그래서 한 프로그램에 필요한 모든 것들을 따로따로 다운 받을 필요 없이
이 패키지를 다운 받으면 한방에 해결되는 것이죠.
그냥 간단하게 우리가 윈도우에서 사용하는 개념 "설치 파일"이라고 생각하시면 됩니다.
그런데 사실 설치파일만 있으면 프로그램이 설치가 될까요?
다시 말해서, 설치 파일 내 있는 수 많은 프로그램들과 실행 파일은 어디에 저장하며,
프로그램 소스코드를 빌드하는 건 누가해주냐 이거죠
물론 우리가 직접 하면 되긴 합니다. 압축 해제한다음 파일들을 적절한 디렉토리(폴더)에
저장하고, 수 많은 코드파일들을 빌드해서 프로그램을 만들고 말이죠 하지만 이 과정들은 초보자들은 하기 어렵고, 또한 귀찮습니다.
그래서 이런 과정들을 한번에 손쉽게 해주는 프로그램들이 있으니..!
윈도우에서는 "setup.exe 또는 installer 또는 설치마법사"라고 합니다.
윈도우 자체의 설치 마법사가 있고
이렇게 말이죠
요즘은 각각 프로그램 설치 파일에 setup 프로그램이 같이 들어있어서 자동으로 잘
설치해줍니다.
이런식으로 설치 파일이 있고 이것들 실행하면
이렇게 자동으로 설치프로그램이 알아서 잘 깔아주죠
또한 삭제할 때도 마찬가지로 파일들을 잘 삭제해줍니다.
위와 같이 말이죠. 프로그램들을 설치하고 삭제해보신 분들이라면 다 공감을
하실겁니다.
여기까지가 윈도우 운영체제에서의 이야기였고, 그럼 리눅스에서도 윈도우와 같은
"setup.exe 또는 Installer 또는 설치마법사"같은 프로그램이 있겠죠?
바로 그런 프로그램이 바로 레드햇 패키지 관리자, RPM(Redhat Package Manager)입니다!
그렇습니다, 윈도우처럼 리눅스에도 패키지(설치파일)들을 자동으로 알맞은 디렉토리에
저장하며, 빌드를 해두는 프로그램 "RPM(Redhat Package Manager)"이 있습니다~
"Redhat"이 뭐냐고요? 빨간모자? 음.. 그것도 맞지만 여기서 레드 햇은 바로 서버용으로 가장 인기가 많은 리눅스 버젼 "Redhat(레드 햇)"을 의미합니다.
그리고 그 "레드 햇 리눅스"를 개발하고 유지보수하는 회사 이름도 레드 햇이죠.
물론 지금은 레드햇 리눅스라는 이름에서 에서
"레드햇 엔터프라이즈 리눅스(Redhat Enterprise linux)"로 바뀌었지만 말이죠
어쨌든 이렇듯 레드 햇 회사에서 개발한 프로그램이기 때문에 자기 회사 이름을 붙여서
RPM(Redhat Package Manager)라고 하는 겁니다.
이 RPM기술은 레드 햇 리눅스 계열의 모든 리눅스들은 다 이 RPM을 씁니다
저희가 지금 쓰는 "CentOS"도 그렇고 "페도라"도 그렇죠
리눅스의 역사에 대해서 궁금하신 분들은 "리눅스와 유닉스 역사 핵심 정리 포스트: https://mamu2830.blogspot.com/2019/10/blog-post.html"를 보고 오시면 됩니다
윈도우와 다르게 리눅스는 파일의 확장자에 의미가 없다고 했었죠?
그래서 레드 햇 계열 리눅스에서의 패키지 파일들은 파일 이름 끝에 ".rpm"이란 것을
붙여서 패키지 파일이란 것을 표시합니다.
i)패키지 이름 구조
패키지들은 보통 이름만 봤을 때, "아 이 패키지는 어떤 프로그램에 몇 버젼이고, 어떤 환경에서 사용하는 거구나!"라고 알 수 있게끔 이름을 짓습니다.
이렇게 지난번에 배운 "find"를 이용하여 "vim"으로 시작하고 ".rpm"으로 끝나는 파일을
찾아보니 vim(vi 업그레이드 버젼)에 대한 패키지들이 나옵니다.
그 중 "vim-enhanced-8.0.1763-13.el8.x86_64.rpm"이 우리가 쓰는
"vim 프로그램 패키지"인데요
저 이름을 앞에서부터 순서대로 해석하자면
이 패키지를 설치하면 나오는 프로그램 이름은 "vim-enhanced"이고
이 프로그램 버젼은 "8(주 버전).0(부 버전).1763(패치 버전)"이며
주 버전은 프로그램에 매우 큰 변화가 있을 때 숫자가 올라가고(롤 1--> 2 이런느낌)
부 버전은 주 버전보단 적은 변화지만, 짝수이면 상용되는 버전, 홀수는 테스트 버전이며 (짝수는 롤 새로운 시즌, 홀수는 테스트서버 느낌)
패치 버전은 특정 issue(문제)에 대한 수정을 의미합니다(핫픽스와 같이 밸런스 패치느낌)
이 버전의 프로그램은 13번 릴리즈, 즉 재배포가 됐다는 이야기며
(13번의 재배포를 했다는 건 13번만큼 어떤 버그를 수정해 새로 빌드를 했다는 이야기겠죠)
뒤에 el8은 el(enterprise linux) 8(리눅스 8버전)이란 뜻입니다.
그리고 마지막 x86(인텔)_64(64비트)는 아키텍처입니다
아키텍처(architecture)는 프로그램과 하드웨어의 호환을 위한 베이스입니다.
쉽게 말해서 건물을 지을 때, 지형이 산인지, 바다인지에 따라 어떻게 건물을 지어야 할 지
설계도가 달라지듯이 어떤 목적의 컴퓨터냐에 따라 컴퓨터 하드웨어 구조가 달라집니다.
이 때 어떤 목적의 컴퓨터를 구성했느냐를 "아키텍처"라고 합니다. 여기선" x86(인텔)_64비트 CPU"에 맞춰 구성한 컴퓨터 구조를 말합니다. 그리고 "x86_64"는 일반 개인 컴퓨터에 많이 쓰이는 아키텍처입니다.
이렇듯 패키지 이름은 이런 형태로 지으며, 패키지 이름만 보고서 이 프로그램을 사용하기에 필요한 정보를 모두 알 수 있다는 겁니다.
"RPM(Redhat Package Manager) 프로그램"은 기본적으로 레드햇 리눅스에 설치가 되어 있으며, ".rpm"으로 끝나는 패키지가 있다면 설치하고, 삭제하고, 업그레이드 하는 등 관리가 가능합니다.
다시 말해서 "rpm의 특징"은
1. 사용하려면 패키지나 패키지파일이 있어야하고
2. 패키지만 있으면 됨으로, 인터넷의 유무는 중요하지 않습니다.
라고 할 수 있습니다.
여기서 의문이 들죠 '그럼 패키지는 어디에 있나요?' 라고 말예요
그건 저희가 보통 설치할 때 쓰는 '리눅스 iso파일'에 기본적으로 대부분의 패키지들이
들어있습니다.
하지만 말그대로 기본적으로 들어있는 것이라, 자기가 원하는 패키지가 없을
경우 인터넷으로 다운받아야 합니다.
리눅스를 킨 다음 오른쪽 하단의 CD모양을 누르시면
이렇게 세팅s가 나오는데요 이걸 클릭하시면
위 사진처럼 C드라이브의 users의 c의 Desktop의 CentOS-8.1.191...이런 iso파일이
현재 리눅스에 마운트 되어 있다는 것을 알 수 있습니다.
당연히 맨 위에 Connected, Connect at power on 둘다 체크가 되어 있어야 해요
이렇게 확인하는 거 외에도 실제로 리눅스 터미널에서 확인을 할 수도 있습니다.
"cd /run/mount/" 로 이동하신다음
"utab"이란 파일을 열어서 보시면
이렇게 현재 TARGET=/run/media/root/CentOS-8-1-1911-x86_64-dvd 라는 이름의 파일이
리눅스 파일시스템에 마운트가 되어있다고 뜹니다.
실제 저 위치로 cd를 이용해
1. "CentOS iso디렉토리" 내부로 이동해 무슨 파일들이 있나보니
2. "AppStream"이란 디렉토리가 또 있고 그 디렉토리 내부로 들어가니
3. "Packages"란 디렉토리가 또 있죠?
4. 그 디렉토리 내부를 들어가시면 기본적으로 CentOS iso파일에 들어있는 수 많은
패키지들을 볼 수 있습니다.
물론 "AppStream"은 리눅스 OS에 속하지 않은 다른 어플리케이션(응용 프로그램)들을 지칭하는 말로, 자체 OS에 속한 패키지들은 "BaseOS"에 있을 겁니다.
이렇게 저흰 iso 파일이 마운트 되어 있는 상태에서 "rpm명령어"를 쓰면 원하는
패키지를 찾은 다음, 저희 리눅스에 프로그램으로 설치를 한다는 겁니다.
물론 iso파일이 마운트가 안돼 있으면 패키지들이 없으니 찾지도, 설치도 못하겠죠?
자 패키지에 대한 개념과, 패키지 이름에 대한 것을 알았으니 본격적으로 패키지 관리
프로그램 RPM을 사용하는 방법을 알아봅시다.
사용하는 명령어 형태는
rpm [필수옵션+사용하고자 하는 옵션] [패키지 이름]
입니다만 이 "rpm"명령어는 사용하는 방법이 약간 특이합니다.
바로 [필수옵션+사용하고자 하는 옵션]이란 것 때문인데요.
이름 그대로 뒤에 사용하고 싶은 옵션을 쓰려면 필수적으로 먼저 붙여야할 옵션이라는
뜻입니다.
일단 필수 옵션은 크게 4가지가 나뉘고 그 4가지 안에 여러 옵션들이 속합니다.
-q(query) : 어떤 옵션으로 설치된 패키지에 대해 물어보겠다는 필수 옵션
"rpm -q [패키지 이름]" 이렇게 패키지가 깔려 있는지 확인할 수 있지만,
문제는 이름을 정확하게 써야합니다
무슨 소리냐, "vim-enhanced-8.0.1763-13.el8.x86_64"이란 패키지가 깔려 있을 시,
"rpm -q vim-enhanced" 이렇게 패키지 이름까지 정확히 모두 적어야 검색이 된다는
겁니다.
이렇게 "vim" 적으면 제대로 수행되지 않습니다.
물론 "vim"까지만 적고 "tab" 2번을 누르면 관련 파일들이 나오기에
tab을 이용해 하시면 되긴 합니다만
보통 "-q"옵션은 "-a(all)"옵션을 같이 씁니다 "-qa"이렇게 말이죠
-a(all) : 시스템에 설치된 모든 패키지목록을 출력해라
"rpm -qa" 이렇게만 치면 설치된 모든 패키지가 나옵니다.
위 처럼 말이죠, 하지만 이래가지곤 특정 패키지가 깔렸는지 언제 찾겠습니까?
그래서 저흰 이때 ' |(파이프)' 와 grep 명령을 같이 사용합니다.
"rpm -qa | grep [찾고싶은 패키지 이름]" 처럼 말이죠
파이프와 그랩을 같이 사용하면 적은 이름이 포함된 모든 패키지를 찾을 수 있기에
매우 편리합니다.
이렇게 말이죠.
-l(list) : 패키지에 포함되어 있는 파일들을 리스트 형태로 쫘악~ 보여줘라 라는 의미
-i(information) [보고싶은 패키지] : 패키지의 정보를 보여줘 라는 옵션
(-q를 먼저 쓰고 i를 붙여야 합니다, -i를 먼저 붙이면 "설치의 i"옵션이 됨)
-p(package file) : 프로그램이 아닌 "패키지 파일"을 대상으로 질문을 수행하겠다는 옵션
으로 실제 패키지 파일 경로까지 다 써야한다는 단점이 있다
그냥 "rpm -qp"만 하면 "rpm -q"와 결과가 같으므로 "-i"옵션도 붙인 겁니다.
그냥 패키지 파일을 대상으로 할 땐 "-p(package files)"를 붙인다는 것만 알면 돼요~
-f(files) [정확한 파일 경로] : 패지키안에 있는 파일들에 대하여 질문을 수행하겠다라는 뜻으로 이걸 사용할려면 먼저 "rpm -ql [패키지]" 하여 패키지 구성 파일이름과 위치를 본다음 "rpm -qif [패키지 안 파일]" 이렇게 써야합니다.
무슨 말이냐
이렇게 패키지 구성 파일들을 확인하여 정확한 경로를 복사한다음
(참고로 리눅스에서의 복사는 "ctrl + shift + c", 붙여넣기 "ctrl + shift +v")
이렇게 붙여넣기 해서 쓰라는 것이죠
당연히 "-f"옵션은 패키지 안 파일들을 대상으로 하라는 옵션이니
패키지 파일을 대상으로 하라는 옵션 "-p"랑은 같이 쓸 수 없겠죠?
(이런 것들을 굳이 알아야하냐 싶겠지만... 진짜 리눅스마스터 1급의 rpm 문제는
야비하고 치졸하고 옹졸하기 때문에 옵션들을 하나하나 전부 다 알아야합니다 ㅠㅠ)
-R(Requires) : 현재 패키지가 실행할 때 필요한 패키지들의 목록을 보여준다
(한마디로 의존성이 있는 패키지들을 보여주는 것)
-c(configure files) : 패키지의 설정 파일만 보여달라는 옵션
-d(document files) : 패키지의 문서 파일만 보여달라는 옵션
(vim-enhanced는 문서파일이 없어서 samba-common으로 대체했습니다)
-i(install) [패키지 파일] : 어떤 옵션으로 패키지를 설치하겠다는 필수 옵션
-a(all)
-l(list)
fr -i(information)
-f(files)
-R(Requires)
-c(configure files)
-d(document files)
ii) "-i(install) 계열 옵션들"
-v(verbose)
-h(hash)
-U(Upgrade)
-p(package file)
--replacepkgs
--replacefiles
--oldpackage
--force(pkgs +files + old)
iii) "-e(erase) 계열 옵션들"
--nodeps(no depencies)
iv) "-V(Verify) 계열 옵션들"
RPM database이란
-a(all)
----------------
입니다.
여기서 못 찾은 정보는
"리눅스 독학 페이지": https://mamu2830.blogspot.com/p/blog-page_13.html
에서 찾아보시면 있을 수 있습니다!
1. 리눅스 패키지란
일단 패키지 관리 프로그램들을 알기전에 "패키지(Package)"라는 개념을 먼저 알아야겠죠? 패키지의 뜻은 "꾸러미, 묶음" 이란 뜻이죠, 리눅스에서의 패키지도 비슷한 의미입니다!
바로 한 프로그램이 작동할 때 필요한 모든 것들을 묶어놓은 것이죠
그래서 한 프로그램에 필요한 모든 것들을 따로따로 다운 받을 필요 없이
이 패키지를 다운 받으면 한방에 해결되는 것이죠.
그냥 간단하게 우리가 윈도우에서 사용하는 개념 "설치 파일"이라고 생각하시면 됩니다.
그런데 사실 설치파일만 있으면 프로그램이 설치가 될까요?
다시 말해서, 설치 파일 내 있는 수 많은 프로그램들과 실행 파일은 어디에 저장하며,
프로그램 소스코드를 빌드하는 건 누가해주냐 이거죠
물론 우리가 직접 하면 되긴 합니다. 압축 해제한다음 파일들을 적절한 디렉토리(폴더)에
저장하고, 수 많은 코드파일들을 빌드해서 프로그램을 만들고 말이죠 하지만 이 과정들은 초보자들은 하기 어렵고, 또한 귀찮습니다.
그래서 이런 과정들을 한번에 손쉽게 해주는 프로그램들이 있으니..!
윈도우에서는 "setup.exe 또는 installer 또는 설치마법사"라고 합니다.
윈도우 자체의 설치 마법사가 있고
이렇게 말이죠
요즘은 각각 프로그램 설치 파일에 setup 프로그램이 같이 들어있어서 자동으로 잘
설치해줍니다.
이런식으로 설치 파일이 있고 이것들 실행하면
이렇게 자동으로 설치프로그램이 알아서 잘 깔아주죠
또한 삭제할 때도 마찬가지로 파일들을 잘 삭제해줍니다.
위와 같이 말이죠. 프로그램들을 설치하고 삭제해보신 분들이라면 다 공감을
하실겁니다.
여기까지가 윈도우 운영체제에서의 이야기였고, 그럼 리눅스에서도 윈도우와 같은
"setup.exe 또는 Installer 또는 설치마법사"같은 프로그램이 있겠죠?
바로 그런 프로그램이 바로 레드햇 패키지 관리자, RPM(Redhat Package Manager)입니다!
2. 리눅스 rpm 이란
그렇습니다, 윈도우처럼 리눅스에도 패키지(설치파일)들을 자동으로 알맞은 디렉토리에
저장하며, 빌드를 해두는 프로그램 "RPM(Redhat Package Manager)"이 있습니다~
"Redhat"이 뭐냐고요? 빨간모자? 음.. 그것도 맞지만 여기서 레드 햇은 바로 서버용으로 가장 인기가 많은 리눅스 버젼 "Redhat(레드 햇)"을 의미합니다.
그리고 그 "레드 햇 리눅스"를 개발하고 유지보수하는 회사 이름도 레드 햇이죠.
물론 지금은 레드햇 리눅스라는 이름에서 에서
"레드햇 엔터프라이즈 리눅스(Redhat Enterprise linux)"로 바뀌었지만 말이죠
어쨌든 이렇듯 레드 햇 회사에서 개발한 프로그램이기 때문에 자기 회사 이름을 붙여서
RPM(Redhat Package Manager)라고 하는 겁니다.
이 RPM기술은 레드 햇 리눅스 계열의 모든 리눅스들은 다 이 RPM을 씁니다
저희가 지금 쓰는 "CentOS"도 그렇고 "페도라"도 그렇죠
리눅스의 역사에 대해서 궁금하신 분들은 "리눅스와 유닉스 역사 핵심 정리 포스트: https://mamu2830.blogspot.com/2019/10/blog-post.html"를 보고 오시면 됩니다
윈도우와 다르게 리눅스는 파일의 확장자에 의미가 없다고 했었죠?
그래서 레드 햇 계열 리눅스에서의 패키지 파일들은 파일 이름 끝에 ".rpm"이란 것을
붙여서 패키지 파일이란 것을 표시합니다.
i)패키지 이름 구조
패키지들은 보통 이름만 봤을 때, "아 이 패키지는 어떤 프로그램에 몇 버젼이고, 어떤 환경에서 사용하는 거구나!"라고 알 수 있게끔 이름을 짓습니다.
이렇게 지난번에 배운 "find"를 이용하여 "vim"으로 시작하고 ".rpm"으로 끝나는 파일을
찾아보니 vim(vi 업그레이드 버젼)에 대한 패키지들이 나옵니다.
그 중 "vim-enhanced-8.0.1763-13.el8.x86_64.rpm"이 우리가 쓰는
"vim 프로그램 패키지"인데요
저 이름을 앞에서부터 순서대로 해석하자면
이 패키지를 설치하면 나오는 프로그램 이름은 "vim-enhanced"이고
이 프로그램 버젼은 "8(주 버전).0(부 버전).1763(패치 버전)"이며
주 버전은 프로그램에 매우 큰 변화가 있을 때 숫자가 올라가고(롤 1--> 2 이런느낌)
부 버전은 주 버전보단 적은 변화지만, 짝수이면 상용되는 버전, 홀수는 테스트 버전이며 (짝수는 롤 새로운 시즌, 홀수는 테스트서버 느낌)
패치 버전은 특정 issue(문제)에 대한 수정을 의미합니다(핫픽스와 같이 밸런스 패치느낌)
이 버전의 프로그램은 13번 릴리즈, 즉 재배포가 됐다는 이야기며
(13번의 재배포를 했다는 건 13번만큼 어떤 버그를 수정해 새로 빌드를 했다는 이야기겠죠)
뒤에 el8은 el(enterprise linux) 8(리눅스 8버전)이란 뜻입니다.
그리고 마지막 x86(인텔)_64(64비트)는 아키텍처입니다
아키텍처(architecture)는 프로그램과 하드웨어의 호환을 위한 베이스입니다.
쉽게 말해서 건물을 지을 때, 지형이 산인지, 바다인지에 따라 어떻게 건물을 지어야 할 지
설계도가 달라지듯이 어떤 목적의 컴퓨터냐에 따라 컴퓨터 하드웨어 구조가 달라집니다.
이 때 어떤 목적의 컴퓨터를 구성했느냐를 "아키텍처"라고 합니다. 여기선" x86(인텔)_64비트 CPU"에 맞춰 구성한 컴퓨터 구조를 말합니다. 그리고 "x86_64"는 일반 개인 컴퓨터에 많이 쓰이는 아키텍처입니다.
이렇듯 패키지 이름은 이런 형태로 지으며, 패키지 이름만 보고서 이 프로그램을 사용하기에 필요한 정보를 모두 알 수 있다는 겁니다.
"RPM(Redhat Package Manager) 프로그램"은 기본적으로 레드햇 리눅스에 설치가 되어 있으며, ".rpm"으로 끝나는 패키지가 있다면 설치하고, 삭제하고, 업그레이드 하는 등 관리가 가능합니다.
다시 말해서 "rpm의 특징"은
1. 사용하려면 패키지나 패키지파일이 있어야하고
2. 패키지만 있으면 됨으로, 인터넷의 유무는 중요하지 않습니다.
라고 할 수 있습니다.
여기서 의문이 들죠 '그럼 패키지는 어디에 있나요?' 라고 말예요
그건 저희가 보통 설치할 때 쓰는 '리눅스 iso파일'에 기본적으로 대부분의 패키지들이
들어있습니다.
하지만 말그대로 기본적으로 들어있는 것이라, 자기가 원하는 패키지가 없을
경우 인터넷으로 다운받아야 합니다.
리눅스를 킨 다음 오른쪽 하단의 CD모양을 누르시면
이렇게 세팅s가 나오는데요 이걸 클릭하시면
위 사진처럼 C드라이브의 users의 c의 Desktop의 CentOS-8.1.191...이런 iso파일이
현재 리눅스에 마운트 되어 있다는 것을 알 수 있습니다.
당연히 맨 위에 Connected, Connect at power on 둘다 체크가 되어 있어야 해요
이렇게 확인하는 거 외에도 실제로 리눅스 터미널에서 확인을 할 수도 있습니다.
"cd /run/mount/" 로 이동하신다음
"utab"이란 파일을 열어서 보시면
이렇게 현재 TARGET=/run/media/root/CentOS-8-1-1911-x86_64-dvd 라는 이름의 파일이
리눅스 파일시스템에 마운트가 되어있다고 뜹니다.
실제 저 위치로 cd를 이용해
1. "CentOS iso디렉토리" 내부로 이동해 무슨 파일들이 있나보니
2. "AppStream"이란 디렉토리가 또 있고 그 디렉토리 내부로 들어가니
3. "Packages"란 디렉토리가 또 있죠?
4. 그 디렉토리 내부를 들어가시면 기본적으로 CentOS iso파일에 들어있는 수 많은
패키지들을 볼 수 있습니다.
물론 "AppStream"은 리눅스 OS에 속하지 않은 다른 어플리케이션(응용 프로그램)들을 지칭하는 말로, 자체 OS에 속한 패키지들은 "BaseOS"에 있을 겁니다.
이렇게 저흰 iso 파일이 마운트 되어 있는 상태에서 "rpm명령어"를 쓰면 원하는
패키지를 찾은 다음, 저희 리눅스에 프로그램으로 설치를 한다는 겁니다.
물론 iso파일이 마운트가 안돼 있으면 패키지들이 없으니 찾지도, 설치도 못하겠죠?
3. rpm 명령어 옵션
자 패키지에 대한 개념과, 패키지 이름에 대한 것을 알았으니 본격적으로 패키지 관리
프로그램 RPM을 사용하는 방법을 알아봅시다.
사용하는 명령어 형태는
rpm [필수옵션+사용하고자 하는 옵션] [패키지 이름]
입니다만 이 "rpm"명령어는 사용하는 방법이 약간 특이합니다.
바로 [필수옵션+사용하고자 하는 옵션]이란 것 때문인데요.
이름 그대로 뒤에 사용하고 싶은 옵션을 쓰려면 필수적으로 먼저 붙여야할 옵션이라는
뜻입니다.
일단 필수 옵션은 크게 4가지가 나뉘고 그 4가지 안에 여러 옵션들이 속합니다.
i) rpm -q(query) 옵션들
-q(query) : 어떤 옵션으로 설치된 패키지에 대해 물어보겠다는 필수 옵션
"rpm -q [패키지 이름]" 이렇게 패키지가 깔려 있는지 확인할 수 있지만,
문제는 이름을 정확하게 써야합니다
무슨 소리냐, "vim-enhanced-8.0.1763-13.el8.x86_64"이란 패키지가 깔려 있을 시,
"rpm -q vim-enhanced" 이렇게 패키지 이름까지 정확히 모두 적어야 검색이 된다는
겁니다.
이렇게 "vim" 적으면 제대로 수행되지 않습니다.
물론 "vim"까지만 적고 "tab" 2번을 누르면 관련 파일들이 나오기에
tab을 이용해 하시면 되긴 합니다만
보통 "-q"옵션은 "-a(all)"옵션을 같이 씁니다 "-qa"이렇게 말이죠
-a(all) : 시스템에 설치된 모든 패키지목록을 출력해라
"rpm -qa" 이렇게만 치면 설치된 모든 패키지가 나옵니다.
위 처럼 말이죠, 하지만 이래가지곤 특정 패키지가 깔렸는지 언제 찾겠습니까?
그래서 저흰 이때 ' |(파이프)' 와 grep 명령을 같이 사용합니다.
"rpm -qa | grep [찾고싶은 패키지 이름]" 처럼 말이죠
파이프와 그랩을 같이 사용하면 적은 이름이 포함된 모든 패키지를 찾을 수 있기에
매우 편리합니다.
이렇게 말이죠.
-l(list) : 패키지에 포함되어 있는 파일들을 리스트 형태로 쫘악~ 보여줘라 라는 의미
-i(information) [보고싶은 패키지] : 패키지의 정보를 보여줘 라는 옵션
(-q를 먼저 쓰고 i를 붙여야 합니다, -i를 먼저 붙이면 "설치의 i"옵션이 됨)
-p(package file) : 프로그램이 아닌 "패키지 파일"을 대상으로 질문을 수행하겠다는 옵션
으로 실제 패키지 파일 경로까지 다 써야한다는 단점이 있다
그냥 "rpm -qp"만 하면 "rpm -q"와 결과가 같으므로 "-i"옵션도 붙인 겁니다.
그냥 패키지 파일을 대상으로 할 땐 "-p(package files)"를 붙인다는 것만 알면 돼요~
-f(files) [정확한 파일 경로] : 패지키안에 있는 파일들에 대하여 질문을 수행하겠다라는 뜻으로 이걸 사용할려면 먼저 "rpm -ql [패키지]" 하여 패키지 구성 파일이름과 위치를 본다음 "rpm -qif [패키지 안 파일]" 이렇게 써야합니다.
무슨 말이냐
이렇게 패키지 구성 파일들을 확인하여 정확한 경로를 복사한다음
(참고로 리눅스에서의 복사는 "ctrl + shift + c", 붙여넣기 "ctrl + shift +v")
이렇게 붙여넣기 해서 쓰라는 것이죠
당연히 "-f"옵션은 패키지 안 파일들을 대상으로 하라는 옵션이니
패키지 파일을 대상으로 하라는 옵션 "-p"랑은 같이 쓸 수 없겠죠?
(이런 것들을 굳이 알아야하냐 싶겠지만... 진짜 리눅스마스터 1급의 rpm 문제는
야비하고 치졸하고 옹졸하기 때문에 옵션들을 하나하나 전부 다 알아야합니다 ㅠㅠ)
-R(Requires) : 현재 패키지가 실행할 때 필요한 패키지들의 목록을 보여준다
(한마디로 의존성이 있는 패키지들을 보여주는 것)
-c(configure files) : 패키지의 설정 파일만 보여달라는 옵션
-d(document files) : 패키지의 문서 파일만 보여달라는 옵션
(vim-enhanced는 문서파일이 없어서 samba-common으로 대체했습니다)
ii) rpm -i(install) 옵션
-i(install) [패키지 파일] : 어떤 옵션으로 패키지를 설치하겠다는 필수 옵션
말 그대로 패키지를 내 리눅스에 설치하겠다는 의미로, 패키지의 정확한 경로까지
적어줘야 합니다.
그냥 설치된 패키지가 아닌 것은 모두 경로까지 적어줘야 한다고 생각하시면 편합니다.
"rpm -i"는 리눅스 경로뿐만 아니라, 정확한 URL이 있으면 인터넷을 통해 설치가
바로 가능합니다.
http://rpmfind.net/linux/rpm2html/search.php?query=centos&submit=Search+...
위 사이트를 들어가시면 여러가지 센토스용 패키지들이 있는데요,
이렇게 주황색으로 표시한 다운로드 칸을 마우스 우클릭을 누른 뒤,
"링크 주소 복사" 클릭하시고
이렇게 "rpm -i [URL]" 하니 다운로드가 되는 걸 볼 수 있습니다.(이 과정은 당연히 인터넷이 되어야하죠)
-v(verbose) : 설치 진행과정을 자세하게 보여줘라 라는 뜻입니다.
이렇게 "rpm -iv"처럼 v를 붙이니 그냥 -i와 비교해서 훨씬 자세하게 다운로드 과정을 보여주죠?
-h(hash) : hash(#)로 다운로드 진행정도를 보여줘라
위 사진처럼, hash(#)를 이용해서 다운로드 진행정도를 보여주는 옵션으로,
보통 -v(verbose)와 같이 쓰입니다.
-U(Upgrade) : 패키지가 없으면 다운로드하고, 다운로드 한 것이 기존의 것보다
최신버전 이면 업그레이드 한다
"-i(install)"의 상위호환 격 옵션으로 "-i"대신 "-U"를 넣고, 나머지 옵션들과 사용하는 방법은 -i와 동일합니다. 그리고 실제로는 -U를 더 많이 사용합니다.
위 사진은 7.7버전의 centos 브라우저 처음 켰을 때의 인덱스 화면을 다운받은 것인데요,
이미 제 리눅스가 8.0버전이기 때문에 최신버전이 이미 깔려있다고 뜨는 겁니다.
만약 제 리눅스가 7.0이였으면 "-U" 옵션을 썼기에 업데이트가 됐을거예요
--replacepkgs(replace packages): 원래 패키지가 설치 돼 있어도 대체(replace)하겠다는 뜻으로, 같은 이름의 패키지가 설치돼 있음 설치가 안되는데 강제로 다시 설치하게 하는 옵션입니다.
"find / -name vim*.rpm" 이렇게 vim-enhanced 패키지파일의 위치를 알아내고
경로를 복사한다음
"rpm -ihv --replacepkgs"에 붙여넣기하여 쓰니 기존엔 이미 깔려있다고 뜬 것과 다르게
새로 깔린 것을 볼 수 있습니다.
기존에 사용중이던 프로그램에 이상이 생길시 저희는 삭제했다가 다시 깔죠?
그런 용도라고 보시면 됩니다.
--replacefiles(replace files) : --replacepkgs와 다르게, 기존의 패키지 안에 있는 파일들을 같은 이름의 새로운 파일로 덮어버리는 행위
"--replacepkgs"는 패키지를 통째로 덮어버리니까 문제가 될 일이 거의 없는데,
"--replacefiles"는 패키지 안의 파일들을 덮어버리니까 문제가 생길 수 있습니다.
패키지를 통째로 덮는건 겹친다 해도 패키지 이름 하나만 겹치니까 문제가 안되지만, 패키지 안의 파일들을 덮는다는건 수십~수백가지의 파일들을 덮는 것으로 이름이 중복될 확률이 매우 높아지죠.
자 패키지 A와 B가 있다고 칩시다. 패키지 A에는 "abc"란 내용의 '1'이란 파일이 있고,
패지키 B에는 "ddd"란 내용의 '1'이란 파일이 있습니다.
두 패키지는 다른 내용의 패키지지만, 같은 이름의 파일 '1'이 있죠?
A패키지와 B패키지가 설치됐을 때, 운이 나빠서 A패키지의 1파일과 B패키지의 1파일이
같은 디렉토리에 저장이 된다고 쳤을 때
원래 같으면 패키지 설치시, 패키지안의 파일과 같은 이름의 파일이 디렉토리에 이미 존재한다며 설치가 안되고 경고가 뜨겠지만, --replacefiles 옵션을 썼으니 그냥 무시하고 깔아버립니다.
예를 들어, A패키지가 이미 깔려 /usr/bin/1 이란 A패키지의 1 파일이 있었는데, 여기에 B패키지의 1파일이 저장된다고 봅시다.
그러면 원랜 A패키지의 /usr/bin/1이 이미 있기에 B패키지가 안 깔렸을텐데 --replacefiles를 씀으로써, 기존의 A패키지 /usr/bin/1을 B패키지 /usr/bin/1로 덮어버릴겁니다.
그러면 A패키지를 사용하려 할때 에러가 생기겠죠?
이렇듯 "--replacefiles" 옵션은 패키지의 파일들을 덮어씌우는 거기 때문에, 잘못 사용했다간 치명적인 오류가 발생할 수 있으므로 유의해야 하는 옵션입니다.
--oldpackage : 옛날 버젼은 다운로드 안하는데 강제로 다운하게함
굳이 옛날 버전의 패키지를 다운 받고 싶을 때 사용하는 옵션입니다. 사진은 딱히 필요하지
않겠죠? "rpm -ihv --oldpackage [패키지 파일]" 이런식으로 사용하시면 됩니다.
--force : pkgs +files + old 인데, 패키지이름이든, 패키지 파일들이든, 옛날 버전이든 상관 없이 그냥 강제로 설치한다 이렇게 알면 됩니다.
"rpm -e [설치된 패키지]" 이런 형식으로 사용되며, 설치된 패키지를 삭제하는 것이기
때문에 패키지의 전체 경로까지 적을 필요는 없습니다.
이렇게 아무것도 안되면 잘 삭제가 된 겁니다
"rpm -qa | grep vim" 이렇게 검사해보니 "vim-enhanced"가 없죠?
잘 삭제가 된겁니다. (이후 "find / -name vim-enhanced*.rpm"을 검색하여
나온 파일의 경로를 복사해서 "rpm -ivh [vim-enhanced경로]"로 다시 깔아줍니다)
--nodeps(no dependencies) : 의존성 있는 패키지들은 다른 패키지와 의존성이 있다고 제거가 안되는데, 그걸 무시하고 패키지를 삭제할 수 있음
"dependency"가 이제 다른 무언가와 긴밀히 연결돼 같이 사용해야하는 걸(의존성)
의미하죠? 그런데 앞에 "no"가 붙었으니 의존성을 무시한다는 의미가 되는 겁니다.
여러 패키지들이 같이 사용해야 하는 의존성이 있는 패키지의 경우 삭제를 하려하면
관련된 패키지를 모두 없에는 "yum" 없인 제거가 안되거든요
그럴 때 제거하게 해주는 옵션입니다.
"-V(대문자)"는 "Verify"란 의미대로, 패키지를 검사한다는 옵션입니다.
그런데 여기서 궁금한게 생기죠, '무엇을 검사하는가?' 라는 의문이 말예요
사실 리눅스 파일에는 "속성(attributes)"라는게 있습니다. 파일의 inode외에 말이죠.
속성이라는 의미대로, 특정 파일만 어떠한 속성을 부여하거나 가지게 하는 겁니다.
기존의 권한에 관계없이 아무도(root포함) 삭제를 못하게 한다거나, 삭제가 될시 자동으로 백업이 되게 하거나 등등 말이죠
이 "-V"옵션은 패키지 파일들이 가진 속성들을 검사를 합니다, 왜 검사를 하냐고요?
기존의 이 패키지를 만든 사람이, 누군가 패키지를 설치했을 때 자동으로 어디에 파일이
배치되고 그 파일들은 어떤 권한이 필요한지 어떤 속성을 가져야하는지
미리 설정을해놓은 것과, 지금 시스템에 저장된 패키지 속성이 다른지 검사를 하는겁니다.
또 "-V"옵션은 속성검사 외에도 이 패키지와 의존성을 갖는 패키지들이 뭐뭐가 있는지
찾습니다.
그럼 여기서 의문이들죠, '검사를 할 때 비교대상은 어디있는가?'라고요
'-V' 옵션을 사용할 때 RPM의 비교대상은 바로 "RPM Database"입니다.
"RPM Database"는 "/var/lib/rpm/"에 있습니다.
위 사진을 보시면 db파일 001, 002, 003이 보이시죠?
이렇듯 저희가 "RPM -V [패키지]"를 하면 db와 비교해서 다른점을 찾는 겁니다.
다시 정리하자면 "RPM -V"는 패키지의 속성이 바뀐지와 의존성있는 패키지의 유무를
검사한다
참고로 이런식으로 실제로 사용해보면 아무것도 안떠서 당황하실 분들이 있을텐데,
잘 된겁니다. 단지 아무이상이 없기에 아무것도 안뜬거예요
-a(all) : 모든 패키지를 검사하라
당연히 -V 필수옵션에도 -a(all)옵션이 있습니다.
이걸 해보시면 전체 패키지를 검사하며 그 때문에 시간이 좀 걸립니다.(한 30초?)
자 이렇게 수많은 패키지가 검사가 됐는데, 여기서 '헉! 왜이렇게 검사가 많이 됐어??
어떡하지..' 하며 당황하실 필요 없습니다~
물론 저것이 DB의 패키지 정보랑 비교했을 때 다른 속성값들을 보여준 것이지만
다르다는게 꼭 문제가 있다는 건 아니니깐요. 실제로 '-V'의 검사 기준은 매우 엄격하기
때문에 저렇게 많이 뜨는겁니다.
그래서 이 "-V"옵션은 원래의 패키지와 비교해서 이렇게 속성이 달라졌구나를 확인하는
용도라고 생각하시면 됩니다.
참고로 제가 말했다싶이 리눅스 마스터 RPM 문제는 치사하고 옹졸하기 때문에
이 옵션도 시험에 나올 수 있습니다. 그런데 딱히 걱정은 할게 없어요
이런식의 사진이나 그림을 보여주며, "다음은 RPM의 어떤 옵션을 썼을 때
나오는 결과인가?" 이렇게 문제를 냅니다
그럼 저희는
이 앞에 부분만 보고 '음 저런식으로 속성이 나오는건 -V밖에 없었어!!
이건 -V옵션이야!!!' 이렇게만 판단할 줄만 아시면 됩니다.(아직까진..)
하 정말 실제로 사용할 옵션들은 그리 많지도 않지만 리눅스마스터 RPM문제가
너무 치사하고 옹졸하고 찌질하기 때문에 이렇게 자세히 다뤘네요 ㅠㅠ
총 2일이 걸렸습니다..
오래걸린 만큼 꼭 여러분께 도움이 되길 바라고!
도움이 되셨다면 따뜻한 댓글, 팔로우 부탁합니다! 정말 큰 힘이 돼요!
그럼 다음에 더 퀄리티 높은 포스트로 찾아 뵙겠습니다!
적어줘야 합니다.
그냥 설치된 패키지가 아닌 것은 모두 경로까지 적어줘야 한다고 생각하시면 편합니다.
"rpm -i"는 리눅스 경로뿐만 아니라, 정확한 URL이 있으면 인터넷을 통해 설치가
바로 가능합니다.
http://rpmfind.net/linux/rpm2html/search.php?query=centos&submit=Search+...
위 사이트를 들어가시면 여러가지 센토스용 패키지들이 있는데요,
이렇게 주황색으로 표시한 다운로드 칸을 마우스 우클릭을 누른 뒤,
"링크 주소 복사" 클릭하시고
이렇게 "rpm -i [URL]" 하니 다운로드가 되는 걸 볼 수 있습니다.(이 과정은 당연히 인터넷이 되어야하죠)
-v(verbose) : 설치 진행과정을 자세하게 보여줘라 라는 뜻입니다.
이렇게 "rpm -iv"처럼 v를 붙이니 그냥 -i와 비교해서 훨씬 자세하게 다운로드 과정을 보여주죠?
-h(hash) : hash(#)로 다운로드 진행정도를 보여줘라
위 사진처럼, hash(#)를 이용해서 다운로드 진행정도를 보여주는 옵션으로,
보통 -v(verbose)와 같이 쓰입니다.
-U(Upgrade) : 패키지가 없으면 다운로드하고, 다운로드 한 것이 기존의 것보다
최신버전 이면 업그레이드 한다
"-i(install)"의 상위호환 격 옵션으로 "-i"대신 "-U"를 넣고, 나머지 옵션들과 사용하는 방법은 -i와 동일합니다. 그리고 실제로는 -U를 더 많이 사용합니다.
위 사진은 7.7버전의 centos 브라우저 처음 켰을 때의 인덱스 화면을 다운받은 것인데요,
이미 제 리눅스가 8.0버전이기 때문에 최신버전이 이미 깔려있다고 뜨는 겁니다.
만약 제 리눅스가 7.0이였으면 "-U" 옵션을 썼기에 업데이트가 됐을거예요
--replacepkgs(replace packages): 원래 패키지가 설치 돼 있어도 대체(replace)하겠다는 뜻으로, 같은 이름의 패키지가 설치돼 있음 설치가 안되는데 강제로 다시 설치하게 하는 옵션입니다.
"find / -name vim*.rpm" 이렇게 vim-enhanced 패키지파일의 위치를 알아내고
경로를 복사한다음
"rpm -ihv --replacepkgs"에 붙여넣기하여 쓰니 기존엔 이미 깔려있다고 뜬 것과 다르게
새로 깔린 것을 볼 수 있습니다.
기존에 사용중이던 프로그램에 이상이 생길시 저희는 삭제했다가 다시 깔죠?
그런 용도라고 보시면 됩니다.
--replacefiles(replace files) : --replacepkgs와 다르게, 기존의 패키지 안에 있는 파일들을 같은 이름의 새로운 파일로 덮어버리는 행위
"--replacepkgs"는 패키지를 통째로 덮어버리니까 문제가 될 일이 거의 없는데,
"--replacefiles"는 패키지 안의 파일들을 덮어버리니까 문제가 생길 수 있습니다.
패키지를 통째로 덮는건 겹친다 해도 패키지 이름 하나만 겹치니까 문제가 안되지만, 패키지 안의 파일들을 덮는다는건 수십~수백가지의 파일들을 덮는 것으로 이름이 중복될 확률이 매우 높아지죠.
자 패키지 A와 B가 있다고 칩시다. 패키지 A에는 "abc"란 내용의 '1'이란 파일이 있고,
패지키 B에는 "ddd"란 내용의 '1'이란 파일이 있습니다.
두 패키지는 다른 내용의 패키지지만, 같은 이름의 파일 '1'이 있죠?
A패키지와 B패키지가 설치됐을 때, 운이 나빠서 A패키지의 1파일과 B패키지의 1파일이
같은 디렉토리에 저장이 된다고 쳤을 때
원래 같으면 패키지 설치시, 패키지안의 파일과 같은 이름의 파일이 디렉토리에 이미 존재한다며 설치가 안되고 경고가 뜨겠지만, --replacefiles 옵션을 썼으니 그냥 무시하고 깔아버립니다.
예를 들어, A패키지가 이미 깔려 /usr/bin/1 이란 A패키지의 1 파일이 있었는데, 여기에 B패키지의 1파일이 저장된다고 봅시다.
그러면 원랜 A패키지의 /usr/bin/1이 이미 있기에 B패키지가 안 깔렸을텐데 --replacefiles를 씀으로써, 기존의 A패키지 /usr/bin/1을 B패키지 /usr/bin/1로 덮어버릴겁니다.
그러면 A패키지를 사용하려 할때 에러가 생기겠죠?
이렇듯 "--replacefiles" 옵션은 패키지의 파일들을 덮어씌우는 거기 때문에, 잘못 사용했다간 치명적인 오류가 발생할 수 있으므로 유의해야 하는 옵션입니다.
--oldpackage : 옛날 버젼은 다운로드 안하는데 강제로 다운하게함
굳이 옛날 버전의 패키지를 다운 받고 싶을 때 사용하는 옵션입니다. 사진은 딱히 필요하지
않겠죠? "rpm -ihv --oldpackage [패키지 파일]" 이런식으로 사용하시면 됩니다.
--force : pkgs +files + old 인데, 패키지이름이든, 패키지 파일들이든, 옛날 버전이든 상관 없이 그냥 강제로 설치한다 이렇게 알면 됩니다.
iii) rpm -e(erase) 옵션들
"rpm -e [설치된 패키지]" 이런 형식으로 사용되며, 설치된 패키지를 삭제하는 것이기
때문에 패키지의 전체 경로까지 적을 필요는 없습니다.
이렇게 아무것도 안되면 잘 삭제가 된 겁니다
"rpm -qa | grep vim" 이렇게 검사해보니 "vim-enhanced"가 없죠?
잘 삭제가 된겁니다. (이후 "find / -name vim-enhanced*.rpm"을 검색하여
나온 파일의 경로를 복사해서 "rpm -ivh [vim-enhanced경로]"로 다시 깔아줍니다)
--nodeps(no dependencies) : 의존성 있는 패키지들은 다른 패키지와 의존성이 있다고 제거가 안되는데, 그걸 무시하고 패키지를 삭제할 수 있음
"dependency"가 이제 다른 무언가와 긴밀히 연결돼 같이 사용해야하는 걸(의존성)
의미하죠? 그런데 앞에 "no"가 붙었으니 의존성을 무시한다는 의미가 되는 겁니다.
여러 패키지들이 같이 사용해야 하는 의존성이 있는 패키지의 경우 삭제를 하려하면
관련된 패키지를 모두 없에는 "yum" 없인 제거가 안되거든요
그럴 때 제거하게 해주는 옵션입니다.
iv) rpm -V(Verify) 옵션들
"-V(대문자)"는 "Verify"란 의미대로, 패키지를 검사한다는 옵션입니다.
그런데 여기서 궁금한게 생기죠, '무엇을 검사하는가?' 라는 의문이 말예요
사실 리눅스 파일에는 "속성(attributes)"라는게 있습니다. 파일의 inode외에 말이죠.
속성이라는 의미대로, 특정 파일만 어떠한 속성을 부여하거나 가지게 하는 겁니다.
기존의 권한에 관계없이 아무도(root포함) 삭제를 못하게 한다거나, 삭제가 될시 자동으로 백업이 되게 하거나 등등 말이죠
이 "-V"옵션은 패키지 파일들이 가진 속성들을 검사를 합니다, 왜 검사를 하냐고요?
기존의 이 패키지를 만든 사람이, 누군가 패키지를 설치했을 때 자동으로 어디에 파일이
배치되고 그 파일들은 어떤 권한이 필요한지 어떤 속성을 가져야하는지
미리 설정을해놓은 것과, 지금 시스템에 저장된 패키지 속성이 다른지 검사를 하는겁니다.
또 "-V"옵션은 속성검사 외에도 이 패키지와 의존성을 갖는 패키지들이 뭐뭐가 있는지
찾습니다.
그럼 여기서 의문이들죠, '검사를 할 때 비교대상은 어디있는가?'라고요
'-V' 옵션을 사용할 때 RPM의 비교대상은 바로 "RPM Database"입니다.
"RPM Database"는 "/var/lib/rpm/"에 있습니다.
위 사진을 보시면 db파일 001, 002, 003이 보이시죠?
이렇듯 저희가 "RPM -V [패키지]"를 하면 db와 비교해서 다른점을 찾는 겁니다.
다시 정리하자면 "RPM -V"는 패키지의 속성이 바뀐지와 의존성있는 패키지의 유무를
검사한다
참고로 이런식으로 실제로 사용해보면 아무것도 안떠서 당황하실 분들이 있을텐데,
잘 된겁니다. 단지 아무이상이 없기에 아무것도 안뜬거예요
-a(all) : 모든 패키지를 검사하라
당연히 -V 필수옵션에도 -a(all)옵션이 있습니다.
이걸 해보시면 전체 패키지를 검사하며 그 때문에 시간이 좀 걸립니다.(한 30초?)
자 이렇게 수많은 패키지가 검사가 됐는데, 여기서 '헉! 왜이렇게 검사가 많이 됐어??
어떡하지..' 하며 당황하실 필요 없습니다~
물론 저것이 DB의 패키지 정보랑 비교했을 때 다른 속성값들을 보여준 것이지만
다르다는게 꼭 문제가 있다는 건 아니니깐요. 실제로 '-V'의 검사 기준은 매우 엄격하기
때문에 저렇게 많이 뜨는겁니다.
그래서 이 "-V"옵션은 원래의 패키지와 비교해서 이렇게 속성이 달라졌구나를 확인하는
용도라고 생각하시면 됩니다.
참고로 제가 말했다싶이 리눅스 마스터 RPM 문제는 치사하고 옹졸하기 때문에
이 옵션도 시험에 나올 수 있습니다. 그런데 딱히 걱정은 할게 없어요
이런식의 사진이나 그림을 보여주며, "다음은 RPM의 어떤 옵션을 썼을 때
나오는 결과인가?" 이렇게 문제를 냅니다
그럼 저희는
이 앞에 부분만 보고 '음 저런식으로 속성이 나오는건 -V밖에 없었어!!
이건 -V옵션이야!!!' 이렇게만 판단할 줄만 아시면 됩니다.(아직까진..)
하 정말 실제로 사용할 옵션들은 그리 많지도 않지만 리눅스마스터 RPM문제가
너무 치사하고 옹졸하고 찌질하기 때문에 이렇게 자세히 다뤘네요 ㅠㅠ
총 2일이 걸렸습니다..
오래걸린 만큼 꼭 여러분께 도움이 되길 바라고!
도움이 되셨다면 따뜻한 댓글, 팔로우 부탁합니다! 정말 큰 힘이 돼요!
그럼 다음에 더 퀄리티 높은 포스트로 찾아 뵙겠습니다!
리눅스 마스터 공부중인데
답글삭제진짜 인터넷아무리뒤져도 이렇게좋은설명
없습니다
문제푸니 이건왜이러지하는것들이
편.안.해졌습니다 감사합니다
도움이 돼서 정말 다행입니다!!! 따뜻한 댓글 감사해요!
삭제좋은 유익한 설명 감사합니다~ 항상 잘 보고 있습니다.
답글삭제항상 따뜻한 댓글 감사합니다~ 도움이 돼 다행입니다!
삭제우와 저 이번주 시험이라 막판 정리 중인데.. 정말 쏙쏙 들어오네요!
답글삭제그냥 외우는 것보다 이제 이해하면서 풀 수 있게 되었어요ㅜㅜㅜㅜㅜ 너무 감사합니다..ㅎㅎ
도움이 돼 다행입니다! 역시 이해하고 외우는게 잘 외워지죠!!! 꼭 이번 주 시험에 합격하길 바랄게요!!
삭제따뜻한 댓글 달아주셔서 감사합니다~
리눅스 공부는 하고 싶은데 비전공자라 막연하게 검색하다 우연히 마무님 블로그를 보게 됐는데 정말 많은 도움이 되고 있습니다. 좋은 글 감사합니다.
답글삭제도움이 됐다니 정말 다행입니다!! 다른 포스트들도 도움이 되길 바랄게요 ㅎㅎ 따듯한 댓글 감사합니다!
삭제