본문 바로가기
정보보안/이론

[KITRI] Day6. 리눅스 기본 명령어-4

by 민-Zero 2020. 4. 27.

Redhat  rpm파일, Linux 시스템에 맞게 컴파일이 미리 되어진 파일
초창기 리눅스는 새롱누 프로그램을 설치하는것 조차 어려워 이점을 개선하기위해 Windows의 setup.exe 비슷하게 프로그램을 설치한 후에 바로 실행할 수 있는 설치파일을 제작했다.(미리 compile 되어진 상태라고 보면된다.)

rpm 파일의 네이밍
파일명 : telnet-server-0.17-39.el5.i386.rm    |    패키지명-버전-릴리즈.아키텍쳐.rpm
패키지명 : telnet-server
버전 : 0.17
릴리즈명 : 39.el5 ( el5은 -> Redhat Enterprise Linux 5 이다.)
아키텍쳐 : i386
릴리즈명에 fc : fedora core, el : enterprise linux 등 
아키텍쳐에 i386 : inter 36bir intel CPU , x86_64 : 64bit CPU


rpm 명령어

 

검사관련 옵션들은 패키지가 설치되어있는지, 어떤 파일들이 설치되어있는지등 패키지 관련 정보들을 확인할때 사용한다.

또한 rpm 명령어를 사용할때 가장 오류가 많이 발생하는 의존성에 관련된 정보도 확인할 수 있다.


검사(Query)
rpm -q 패키지명: 설치된 패키지명 확인(ex. telnet-server)
rpm -qp RPM파일명: 설치하기전 RPM파일명 확인(ex. telnet-server-0.17-39.el5.i386.rpm)
rpm -qi 패키지명 : 설치된 패키지의 상세 정보를 출력(i옵션을 통해 패키지의 상세 정보)
rpm -qip RPM파일명: 설치전 RPM파일의 정보를 확인할 수 있다.  
 rpm -qip telnet-server-0.17-39.el5.i386.rpm 입력하면 해당 rpm의 버젼 릴리즈명 등 패키지 정보를 확인할 수 있다.
rpm -qa 패키지명: 설치 유무확인, 이때 패키지명이 정확해야한다. 만약 a를 입력하면 'a'라는 패키지가 있어야 한다. 패키지명을 입력하지 않으면 모든 패키지가 출력된다.
rpm -ql 패키지명 : 설치된 패키지의 파일 목록 출력(설정파일, 문서파일 전부 보여줌)
rpm -qc 패키지명 : 설정파일만 출력
rpm -qd 패키지명 : 문서파일만 출력
rpm -qf 파일명 : query file,해당 파일이 어떤 패키지에 의해 생성되었는지 역으로 확인하는 명령어
(ex. rpm -qf /bin/ping  ping 명령어가 어떤 패키지에 의해 생성되었는지 확인가능)
rpm -qR 패키지명 : 해당 패키지가 어떤 파일에 의존적인지 확인할 수 있다.
rpm -qpR RPM파일명 : 해당 파일이 어떤 파일에 의존적인지 확인할 수 있다.

/bin, /usr/bin : binary 시스템에 영향을 주지않는 명령어들이 저장, 일반사용자 root 모두 사용가능
/sbin, /usr/sbin : system binary, 시스템에 영향을 줄 수 있어 root만 사용가능한 명령어

 

rpm을 사용할때 가장 많이 사용하는 설치를 위한 옵션인 -i이다. 하지만 해당 옵션만 사용하게 되면 설치의 과정등이 보이지 않기 때문에 다른 옵션과 같이 사용한다.

주로 v옵션을 통해 설치 과정을 확인하고 h옵션을 추가하여 설치 진행과정을 직접 확인하게하는 -ivh를 가장 많이 사용한다.

또한 기존의 패키지를 업데이트 하기위해 높은버전을 다운받으려고 하면 패키지가 충돌한다는 메세지와 함께 설치되지 않는다.

따라서 i옵션 대신 U옵션을 사용하여 업데이트를 가능하게 한다. 이때 U에 i옵션이 포함되어 있기때문에 설치를 목적으로 할때에 U를 사용하기도 한다.
설치 관련

rpm -i RPM파일명 : 패키지 설치, 반드시 파일의 모든이름을 정확하게 작성해야한다.
rpm -iv RPM파일명 : verbose 옵션, 설치하는 과정을 보여준다.
rpm -ivv RPM파일명 : -v보다 더 많은 과정을 일일이 보여준다.
rpm -ih RPM파일명 : 설치시 설치 진행률을 보여준다.
rpm -ivh : 가장 많이 사용하는 옵션
rpm -U RPM파일명 : upgrade, 새로운 버전을 다운받아 -i로 다운받으려고 하면 기존의 버전과 충돌이나 다운이 되지 않는다. 이때 -U옵션을 사용하여 upgrade할 수 있다. 또한 U가 i를 포함하는 옵션이기 때문에 업그레이드 뿐만아니라 그냥 설치 또한 진행할 수 있다.
rpm - Uvh RPM파일명 : -i와 마찬가지로 vh 옵션을 같이 주로 사용한다.

rpm -i --replacepkgs RPM파일명 : rm등으로 인해 의도치않게 패키지 몇개의 파일이 지워져 동일버젼을 다시 다운받아야 할경우등 동일 버전을 다시한번 설치해야할 때 사용한다.
rpm -U --oldpackage RPM파일명 : 이전 버전으로 다운그레이드 할때 사용
rpm -i --replacefiles RPM파일명 : 2개 이상의 버젼을 추가 설치하고 싶을때 사용한다. 동일한 패키지명이 2개 이상이 설치가 된다. 
rpm -i --nodeps RPM파일명 : 의존성을 무시하고 다운로드한다.(-U도 가능하다)

강제 옵션(무조건 설치할 떄 사용)
--force : force, --replacepkgs, --replacefiles, --oldpakage 이 3가지 옵션을 포함하는 옵션

 

-e 옵션을 사용하면 패키즈를 제거할 수 있다. 하지만 이때 rpm은 의존성이 존재하는 파일이 있을경우 의존성이 있는 파일이 먼저 삭제가 되어있어야 삭제를 진행할 수 있다. 의존성은 rpm의 가장 큰 단점이다.

 

제거 관련

rpm -e 패키지명 : 패키지 삭제(erase), 이때는 패키지명만 입력해도 된다.
rpm -e 패키지명-버전-릴리즈명 : 동일 패키지가 2개이상(다른버전) 설치된 경우

 

RPM의 단점

의존성 문제가 가장 큰 단점이다. 예를들어 firefox는 X윈도에 의존성이 있으므로 X윈도가 없는 상태에서 다운받으려고하면 다운이 되지 않는다. 따라서 X윈도를 먼저 다운받은뒤 firefox를 다운받아야 한다.
지울때도 의존성이 있는 패키지가 있다면 지워지지 않는 경우도 존재한다.


DNF, YUM


rpm의 의존성 문제를 해결하기 위해 rpm을 편리하게 설치할수 있게해주는 유틸리티이다.
yum(yellow dog Updater, Modified) 과 dnf는 같은 옵션을 가진다. 호환되는것은 아니지만 버전이 올라가면서 yum의 소스코드에서 동작하지 않는 부분이 생겨 똑같은 기능을 최신 버젼의 리눅스에서 사용할 수 있도록 바꾸고 기능을 개선한것이 dnf이다. 둘의 옵션 및 사용방법은 같고 yum대신 dnf로만 사용하면 된다.

 

 

yum list를 사용해 특정 패키지의 설치여부 또는 설치된 모든 패키지를 확인할 수 있다.

 

검사 관련
yum list [개별패키지명]: 설치, 업데이트, 미설치 등 개별패키지들의 상태를 출력, 패키지명을 사용하면 해당 패키지에 해당하는 상태만 출력되고 쓰지 않으면 모든 패키지에 대한 상태를 출력한다.
installed : 설치가 완료되었다는 의미
base : 설치될 수 있다는 의미, cd 버전
extras : 사용중인 패키지와 관련된 추가 패키지 경로, cd에 없는 추가 버전
updates : 업데이트된 패키지

yum list installed : 설치된 패키지만 출력
yum list updates : 업데이트된 패키지만 출력
yum list 패키지명 : 특정 패키지에 대한 상태를 출력해준다. 
yum grouplist : 전체 패키지그룹을 보여준다.
yum grouplist 패키지그룹명 : 패키지 그룹들의 상태를 확인할 수 있다.

yum을 사용하여 패키지를 설치하면 Dependency Installed 부분에서 확인할 수 있는것 처럼 의존성이 있는 파일이 필요하다면 자동으로 한번에 설치해주는 것을 확인할 수 있다.

설치시 해당 패키지를 설치할것인지 y/n으로 여부를 물어보기때문에 주로 -y 옵션을 사용하여 전부 yes가 입력되도록 한다.


설치 관련
yum install 개별패키지명 : 최신 버전의 패키지를 의존성이 필요한 부분까지 전부 다운로드
yum -y install 개별패키지명 : install을 통해 설치할 경우 설치를 할건지 물어보는 부분이 등장한다. 이때 -y 옵션을 적용하면 질문에 대해 모두 yes 처리를 하게 된다. 이때 -y는 install 앞이나 뒤 모두 가능하다.
yum -y --quiet install 개별패키지명 : yum을 설치할때 출력되는 설치 과정을 출력하지 않는다.
yum groupinstall 패키지그룹명 : 패키지그룹을 다운받는 명령어, -y --quiet 사용가능
yum localinstall RPM파일명 : 이전 버전을 다운받아야 하는경우 yum만 쓰게되면 늘 최신버전을 다운받기 떄문에 이전 버전을 받을수 없다. 이때 사용하는 명령어로 localinstall을 옵션으로 적용하면 현재 컴퓨터에 존재하는 원하는 버전의 rpm파일을 가지고 다운받고 의존성문제는 인터넷을 통해 해결한다.

삭제시에도 install 처럼 의존성이 있는 파일까지 전부 삭제해준다.

제거 관련
yum remove 개별패키지명 : 거꾸로 의존성이 있는 프로그램까지 전부 삭제한다.
yum -y remove 개별패키지명 : install에서 설명한 것과 같은 기능
yum -y --quiet remove 개별패키지명 : 제거 과정 출력하지 않음
yum groupremove 패키지그룹명 : 설치된 패키지그룹 제거

업데이트
yum check-update : 업데이트가 필요한 패키지 목록 출력
yum update 패키지명 : 해당 패키지의 업데이트 수행, 패키지명을 적지 않으면 check-update에서 확인한 모든 리스트가 업데이트 된다.

 

정보확인
yum info 개별패키지명 : rpm -qi 와 같은내용, 차이점은 yum info는 설치되지 않은 패키지의  설명도 확인 할 수 있으며 출력결과가 좀더 깔끔해졌다는 차이가있다.
yum provides 파일명 : rpm -qf과 동일한 기능, 파일이 어떤 패키지에 의해서 설치되었는지 확인
yum clean all : 기존에 다운로드한 패키지 목록을 지운다.

 

파일 압축과 묶기

 

파일 묶기

압축을 수행하기전 압축하고자 하는 대상을 1개로 묶어야한다. 압축할 파일들을 하나의 폴더에 모아놓는것 이라고 생각하면 된다. 

 

tar(Tape ARchive) : 파일 묶기 
tar cf tar파일명.tar 원본1 원본2 ... : 여러개의 파일을 파일로 묶는것, f가 테이프 드라이브를 쓸때는 필요가 없었지만 현재는 테이프 드라이브를 쓰지않고 파일형태로 사용하기 때문에 f가 거의 무조건 붙는다. 
묶은 파일에 .tar를 붙이지 않아도 된다. 하지만 안붙이면 무슨 파일인지 알기위해 file명령어를 사용해야한다. 그래서 생성할때 tar를 붙이면 좋다. 
tar xf tar파일명.tar : 현재 디렉토리에 묶인 파일을 풀기 
tar tf tar파일명.tar : 묶음을 풀기 전에 묶인 경로를 미리 보여주는 테스트 
tar cfv tar파일명.tar 원본1 원본2 ... : 파일을 묶는 과정을 상세하게 보여준다 . 
tar cfvv tar파일명.tar 원본1 원본2 ... : 파일을 묶는 과정을 좀더 상세하게 보여준다. 
tar xf tar파일명 -C 경로 : 지정된 경로뒤에 tar파일 풀기 
tar cf files.tar -C /data file1 file2 -> 깊은 경로에 있으면 경로를 일일이 적는게 비효율적이다 따라서 -C를 통해 베이스 경로를 잡고 그안의 파일이름으로만 묶을수 있다. 

압축 순서 : 파일 묶기 -> 묶은 파일 압축 

tar에서도 압축을 아예 한번에 지원한다. 
tar cfz 는 gzip , tar cfj 는 bzip2 , tar cfJ 는 xz 이때 각 옵션들은 확장자를 붙여주지 않기 때문에 직접 생성되는 파일명에 확장자를 붙여주는것이 좋다. J는 CentOS5 에서는 지원하지 않음

 

파일 압축

gzip (.gz)
bzip2 (.bz2)
xz (.xz)

 


기본적인 압축 방법

gzip 파일명, bzip2 파일명, xz 파일명 : 해당파일명에 확장자가 붙어 압축된다.
압축율 : gzip < bzip2 < xz
기존의 파일이 사라지고 사용한 명령에 따라 확장명이 붙은 파일이 압축되어 생성된다. 압축율이 좋을수록 압축시간이 더 오래걸린다.
zip 생성할파일이름.zip 압축할파일 : 윈도우와 호환이 되는 확장명 zip 으로 압축

 


압축 해제
gunzip 파일명.gz
bunzip2 파일명.bz
unxz 파일명.xz
unzip 파일명.zip
gzip -d 파일명.gz, bzip2 -d 파일명.bz, xz -d 파일명.xz: 압축 파일을 일반 파일로 압축을 푼다

압축 정보 확인
gzip -l 파일명.gz : 해당 파일의 압축율과 비율을 보여준다. gzip만 존재하는 명령

tar파일에 추가로 넣어야 하는 파일이 존재하는경우 새로 묶는것이 아니라 기존의 tar파일에 추가하고자 하는 파일만 추가할 수 있다.

tar 추가, 업데이트 
tar uf tar파일명.tar [수정된원본] : tar파일의 내용과 비교하여 수정된 원본을 추가 
tar rf tar파일명 원본 : tar파일에 새로운 원본을 추가 

댓글