tar, rpm, yum 명령어를 활용한 프로그램 설치 방식을 알아본다.
앞으로 세 번의 포스팅에 걸쳐 세 가지 프로그램 설치 방식과 관련된 명령어를 다룰 예정이다.
초창기에는 프로그램의 소스 파일을 직접 건드리는 방식으로 설치를 진행했다.
소스 파일을 다운로드 받아 컴파일하고 설정 파일을 작성한 뒤,
올바른 위치에 파일을 배치하면 프로그램을 사용할 수 있다.
이러한 방식은 tar 명령어와 파일 압축을 활용하여 실행해볼 수 있다.
초창기 방식은 더 이상 사용되지 않는다.
오늘날의 프로그램 설치는 rpm 명령어 또는 yum 명령어를 사용한다.
프로그램의 패키지 파일을 보유한 경우 rpm 명령어로 프로그램을 설치할 수 있는데,
인터넷이 되는 환경에서는 패키지 파일 없이 yum 명령어만 가지고도 설치가 가능하다.
잘 사용되지는 않지만, 이번 포스팅에서는 tar와 압축을 사용한 프로그램 설치 방식을 살펴본다.
파일 압축 방식을 먼저 알아보고, tar 명령어를 간단히 실습해보려고 한다.
압축
압축 방식은 파일의 용량을 줄이기 위해 사용한다.
Linux에서의 압축은 Windows에서의 압축과 다른 점들이 있어 알아두는 것이 좋다.
(1) 원본 압축
Windows 압축과의 가장 큰 차이점은 압축 시 복사본을 만들지 않는다는 것이다.
복사본을 만들어 압축하므로 원본 파일이 남아있는 Windows와 달리,
Linux에서는 원본 파일 자체를 압축한다.
(2) 개별 압축
여러 파일을 동시에 압축해도 하나의 압축 파일로 묶이지 않고,
각각의 파일이 개별 압축된다.
(3) 디렉토리 압축 불가능
Windows에서 폴더를 압축할 수 있는 것과 달리, Linux에서는 파일만 압축이 가능하다.
Linux에는 .zip, .gz, .bz2의 세 가지 압축 형식이 존재한다.
.zip 형식은 잘 사용되지 않고, .gz와 .bz2 형식이 Linux에서 주로 사용된다.
각각 압축 형식의 압축 명령어와 압축 해제 명령어는 다음과 같다.
압축 형식 압축 압축 해제
.zip zip unzip
.gz gzip gunzip (또는 gzip -d)
.bz2 bzip2 bunzip2 (또는 bzip2 -d)
itbank 홈 디렉토리에서 간단히 명령어를 사용하는 실습을 해보자.
/etc에서 압축에 사용될 파일 세 개를 복사해온다.
gzip inittab 명령어로 inittab 파일이 잘 압축된 것을 볼 수 있는데,
원본 자체가 복사되어 inittab 일반 파일은 더 이상 디렉토리에 존재하지 않는다.

gzip, bzip2 명령어를 골고루 사용하여 나머지 파일들도 압축시켜주고,
잘 압축된 것이 확인되면 압축 형식에 맞는 명령어로 압축 해제도 진행해준다.


이번에는 세 개의 파일을 동시에 압축해본다.
한 번에 압축하면 그 결과로 하나의 압축 파일이 생성되는 Windows와 달리,
Linux에서는 각각의 파일이 개별 압축되어 세 개의 압축 파일이 존재하는 것을 확인할 수 있다.
gzip * 으로 한 번에 압축이 가능하고, gunzip * 으로 한 번에 압축을 해제할 수 있다.

디렉토리의 압축을 시도해보기 위해 ~itbank 안에 test 디렉토리를 생성해준다.
~itbank 디렉토리 내부의 세 개의 파일을 test 디렉토리로 복사해주고 압축을 시도했지만,
test의 개체 형식이 디렉토리인 관계로 압축이 불가능하다는 메시지가 출력되었다.

test 디렉토리는 rm -rf test 명령으로 삭제해준다.
tar
tape archive의 줄임말로, 초창기에 여러 파일을 하나로 묶어 백업할 때 사용하던 명령어이다.
tar 명령어는 여러 개의 파일을 하나의 tar 파일로 만들어준다.
따라서 tar 파일을 압축하면 Linux에서도 여러 파일을 하나의 압축 파일로 변환할 수 있다.
tar 파일의 생성은 파일을 담을 공간을 미리 만들고 그 공간에 파일을 담아주는 개념이다.
그렇기 때문에 파일들의 용량을 합친 것에 비해 tar 파일의 용량이 커 공간이 남는 경우가 있다.
예를 들어 물건을 포장할 때 포장지를 사용하면 물건의 크기에 딱 맞는 포장이 가능하지만,
박스에 담으면 박스의 크기에 따라 물건을 담고 공간이 남을 수 있는 것과 유사하다.
tar 명령어는 목적에 따라 세 가지 형식으로 사용될 수 있다.
(1) tar 파일 생성
tar cvf 생성이름.tar 대상 [대상] ... [대상]
- c : create
- v : tar 작업의 대상이 되는 목록 출력
- f : 문제가 발생했을 때 강제로 진행
* 옵션에 ' - ' 기호가 붙지 않고, 파일 확장자 이름을 직접 적어주어야 한다.
(2) tar 파일 내부 확인
tar tvf 파일명
(3) tar 파일 해체
tar xvf 파일명
현재 위치 ~itbank 내부의 모든 파일을 대상으로 ilp.tar 파일을 생성한다.
원본 파일이 남아있는 것으로 보아 tar 파일에는 복사본이 담기는 것을 알 수 있다.
세 개 파일의 용량을 모두 합쳐봐야 4800 byte 정도인데,
tar 파일의 용량은 이보다 훨씬 큰 10240 byte, 약 10 kbyte 정도이다.

ilp.tar 파일을 압축하면 빈 공간이 없어지고, 원래 용량인 4800 byte 보다도 용량이 작아진다.

조립은 해체의 역순, 해체는 조립의 역순이라는 말이 있다.
tar 파일을 해체하기 위해 반대로 압축을 먼저 해제해주고 xvf 명령어를 사용한다.


xvf 명령어로 파일을 해체하면 tar 파일 안에 있던 파일들은 모두 밖으로 이동한다.
내용물은 없지만 파일이 담겨있던 ilp.tar는 따로 지워주지 않는 한 그대로 남아있다.
* tar 파일을 생성할 때는 반드시 .tar 확장자를 붙여주어야 한다.

확장자명을 붙여주지 않아도 파일 생성은 되지만, tar 파일인지 아닌지를 구분할 수 없다.
따라서 tar 파일 생성 시 .tar 확장자를 붙여주는 것이 전세계적인 약속이다.
다음 실습에 앞서 현재 디렉토리 내부의 모든 항목을 지워준다.
tar 실습 예제

(풀이)

편의를 위해 /home 디렉토리로 위치를 이동한다.
/usr/bin 내부의 항목이 많기 때문에 작업 대상의 목록을 출력하는 v 옵션을 생략한다.
* Tip
tar 파일 생성 시 z, j 옵션을 사용하면 각각 gzip, bz2 작업을 같이 해준다.

마지막 ls -l 명령어 실행 결과를 보면, 같은 파일을 압축했는데도 .bz2 파일의 용량이 더 작다.
gzip 압축에 비해 bz2 압축의 효율이 더 좋은 것을 알 수 있다.
'2022 데이터 사이언스 > Linux' 카테고리의 다른 글
19. 프로그램 설치(2): rpm (0) | 2022.05.31 |
---|---|
17. 권한(4): 특수 권한 (0) | 2022.05.30 |
16. 권한(3): 소유권과 권한 적용 (0) | 2022.05.30 |
15. 권한(2): 웹 서버와 http (0) | 2022.05.30 |
14. 권한(1): 허가권 (0) | 2022.05.29 |