본문 바로가기
IT Security/LINUX Basic

30. Linux - rpm 명령어 기본 사용법1(질의)

by Rosmary 2020. 8. 23.
728x90
반응형

 

 

 

 

윈도우에서 한글을 쓰기 위해 공식 사이트에서 한글 설치 프로그램을 다운받아 설치하듯이, 리눅스에서는 자신이 사용하고자 하는 명령어나 서비스를 rpm 패키지 설치 후 사용이 가능하다. 이전의 포스팅에서 진행했던 웹 서비스와 DNS 서비스 구동을 위해, 가장 처음 진행한 작업이 yum으로 관련 패키지를 설치하고 해당 패키지가 잘 설치되었는지 확인하는 일이었다(Ubuntu 계열은 yum이 아닌 apt-get 명령어를 사용한다)

 

yum 명령어를 사용하여 패키지 설치를 진행하면, 리눅스는 해당 패키지 파일을 특정 인터넷 사이트에서 검색하고 다운받고 설치하는 전 과정을 자동으로 진행해준다. 게다가 설치하려는 패키지가 필요로 하는 다른 패키지도 함께 다운받고 설치를 진행해준다. 설치된 패키지에 대한 검색 또한 설치 패키지 버전과 인터넷 최신 버전에 대한 비교를 진행하기 때문에, yum 명령어는 인터넷이 연결되지 않은 리눅스에서는 거의 무용지물이다.

 

 

위의 화면은 현재 필자가 테스트 용도로 가상머신에 설치한 리눅스의 yum 명령어 화면이다. 공유기에 무선 ARP-Spoofing 차단 설정이 되어 있어, 가상 MAC 주소를 가지는 현재의 리눅스는 내부 네트워크로만 통신이 가능하다. 따라서 yum 명령어로 인터넷으로의 접속이 불가능한 상태이다보니, mirrorlist.centos.org라는 패키지 다운로드 사이트로 접속할 수 없다는 문구가 출력된다. 

 

그럼 인터넷이 안되는 상황에서 패키지를 설치하고 확인할 수 있는 방법은 전혀 없는 것일까? 당연히 있다. 사실 yum 명령어는 훨씬 과거에 패키지를 설치하던 방법의 불편함 때문에 만들어진 명령어이기 때문에, yum이 없어도 패키지를 설치할 수 있는 방법은 있다. 이 yum을 대체할 수 있는 명령어가 바로 rpm인데, redhat package manager의 약자로 리눅스에 설치된 패키지를 관리하는 명령어라고 보면 된다. 

 

이 rpm 명령어는 rpm 패키지를 설치하면 사용할 수 있는 명령어인데, 최소 사양으로 리눅스를 설치하더라도 사용이 가능한 기본 패키지다. 

 

최소 사양 리눅스에도 rpm 명령어는 사용이 가능하다.

 

그럼, 지금부터 이 rpm 명령어에 대한 사용 방법을 알아보도록 하자.

 

 

 

 

1. 리눅스에 설치된 패키지 전체 목록 확인:  rpm -qa {패키지}

 

현재 사용하고 있는 리눅스에 깔려 있는 프로그램, 즉 패키지의 목록을 확인하는 명령어 및 옵션은 rpm -qa다. 명령어 뒤의 옵션 q와 a는 각각 Query(문의) 및 All(전부)를 의미한다. 즉, 전체 설치 패키지 목록에 대해 문의하는 명령어로 이해하면 되며, 따라서 이 명령어는 마치 윈도우에 설치된 프로그램 확인을 위해 "프로그램 추가/제거" 창을 여는 것과 비슷하다고 보면 된다. 

 

윈도우에는 "프로그램 추가/제거" 화면에서 설치된 프로그램(앱)을 확인할 수 있다.

 

rpm -qa 명령어를 치면, 최소 사양으로 리눅스 설치를 진행했더라도 300여개의 패키지가 설치된 것을 확인할 수 있다. 

 

 

설치된 패키지 중, 특정 패키지가 설치되어 있는지 확인하고 싶다면 -qa 옵션 뒤에 패키지 이름을 넣거나, grep 명령어를 파이프 뒤에 사용함으로써 확인할 수 있다. 두 검색 방법의 결과는 사뭇 다른데, grep을 사용하면, 검색어가 포함된 패키지를 모두 표시하며, -qa 뒤에 패키지 명을 명시하는 방법의 검색은 정확히 해당 검색어와 일치하는 패키지만 검색 결과로 되돌려준다.

 

 

검색하려는 패키지가 설치되지 않았다면, 아래와 같이 아무런 결과 출력 없이 프롬프트가 뚝 떨어진다.

 

 

 

 

2. 패키지 관련 문서, 명령어 검색: rpm -ql {패키지}

 

그럼, 설치된 각각의 패키지 파일은 어떤 명령어를 가지고 있고, 어디에 패키지 관련 파일이 있는지 확인할 수 있을까? 이를 확인하기 위한 rpm 명령어의 옵션이 바로 -ql이다. q는 앞서 -qa에 마찬가지로 문의(Query)를 의미하며, l은 목록(list)을 의미한다. 즉, rpm -ql 명령어로 패키지 검색을 진행하면, 검색한 패키지와 연관된 모든 파일 목록(명령어 파일, 설정 파일, 메뉴얼 파일 등등)을 화면에 나열해준다. 

 

rpm 명령어를 사용할 수 있게 만드는 rpm 패키지 내에 설치된 파일 목록. /bin/rpm 명령어도 보인다.

 

리눅스를 사용하면서 가장 많이 사용하는 명령어 중 하나인 ping을 보자. 이 ping 명령어는 iputils라는 패키지가 깔려 있어야 사용할 수 있는 명령어인데, 마찬가지로 이 iputils 패키지 내의 파일 목록을 살펴보면 ping 명령어가 위치한 경로인 /usr/bin/ping이 결과에 나타나는 것을 볼 수 있다.

 

iputils 명령어는 ping 외에도 ping6, arping 등의 명령어를 지원한다.

 

당연한 이야기지만, 이 iputils 패키지를 현재 리눅스에서 삭제한다면, ping, ping6, arping 등의 명령어는 사용할 수 없게 된다.

 

 

3. rpm 패키지 설정 파일 목록 / 메뉴얼 파일 목록 확인: rpm -qc {패키지} / rpm -qd {패키지}

 

rpm -ql 명령어는 패키지와 관련된 모든 파일이 결과로 출력된다. 그럼, 패키지 내의 수많은 파일 중에 어떤 것이 설정 관련된 파일이고, 어떤 것이 기타 문서와 관련된 파일인지 구분할 수 있는 방법이 있을까? 

 

rpm 명령어의 옵션 중 -qc와 -qd가 바로 이와 관련된 옵션이다. c는 설정(config), d는 문서(doc)를 의미하며, 각각 설정 파일과 일반 문서 목록을 화면에 출력하는 옵션이다. 일반적으로 c 옵션의 결과로 나오는 경로는 /etc/폴더가 많고, d 옵션의 결과로 나오는 경로는 /usr/share가 대부분이다. 

 

iputils의 설정 파일 경로가 출력된 결과.

 

iputils와 관련된 문서 파일 목록

참고로, /usr/share/man 경로에 있는 파일들은 전부 관련 명령어의 이름으로 gz 압축된 것을 확인할 수 있는데, 해당 파일들은 man {명령어_이름} 입력 시, man 명령어에 의해 일련의 과정을 거쳐 내부 내용이 화면에 출력되게 된다. 물론 화면의 내용은 검색한 {명령어_이름}에 대한 메뉴얼(man)이다.

 

man ping 명령어 입력 결과로 나타난 ping 명령어 사용 메뉴얼

 

 

4. 명령어를 제공하는 패키지 찾기: rpm -qf {명령어 경로}

 

지금까지는 패키지와 연관있는 파일 검색 방법에 대해 비중을 두고 설명했다. 그럼 역으로, 우리가 사용하는 명령어를 지원하는 패키지를 검색할 수 있는 방법은 없을까? 

 

rpm 명령어는 옵션으로 -qf 를 제공한다. 이 f는 파일(file)을 의미하는데, 특정 경로의 파일이 어떤 패키지 내에 존재하는지를 문의하는 옵션이라고 보면 된다. 가령, 우리가 지금까지 살펴본 ping 명령어를 예시로 살펴보자. 

 

ping 명령어의 경로는 /usr/bin/ping이다(which ping 명령어로 확인 가능하다). 해당 경로를 rpm -qf 명령어와 함께 입력하면, 다음과 같이 ping 명령어를 지원하는 패키지 이름이 결과로 출력된다.

 

 

 

다른 명령어들 역시 같은 방식으로 명령어를 지원하는 패키지 명을 검색하는 것이 가능하다. 물론 이는 설치된 패키지에 대해서만 유효한 결과를 돌려주기 때문에, 현재 설치되지 않은 패키지에 포함된 명령어에 대해 아무리 열심히 질의를 해도 결과에는 아무것도 나타나지 않는다.

 

현재 필자의 Test 리눅스에서는 traceroute 명령어를 사용할 수 없다.

 

 


이번 포스팅에서는 리눅스에 설치된 패키지들을 관리하는 명령어인 rpm을 사용해, 설치된 패키지들에 대한 여러 정보를 문의하고 얻는 방법에 대해 알아보았다. 참고로 패키지에 대한 정보를 문의할 때, 옵션에 반드시 q를 명시해주어야 한다. 그렇기 때문에 앞에서 설명한 모든 옵션이 단독으로 사용되지 않고(-l, -d, -c처럼), q와 함께 사용되었던 것이다. 

 

다음 포스팅에서는 직접 받은 rpm 파일을 리눅스 서버로 옮기고, 이 rpm 파일을 rpm 명령어를 사용해 설치하고 삭제하는 방법에 대해 설명하려 한다. 

 

 

< Appendix >

 

명령어 옵션 설명
rpm -qa 설치된 패키지 목록 출력
-ql {패키지_이름} 패키지와 연관된 파일 목록 출력
-qc {패키지_이름} 패키지와 연관된 설정 파일 목록 출력
-qd {패키지_이름} 패키지와 연관된 문서 파일 목록 출력
-qf {파일 경로} 파일과 연관된 패키지 이름 출력

 

FIN.

 

 

 

 

 

 

반응형

댓글