소프트웨어 관리
학습 개요
소프트웨어의 설치와 관리를 위한 패키지 관리 도구를 알아보자.
RPM은 레드헷 계열 리눅스에서 패키지 파일의 표준 형식이자 패키지 관리 도구이다.
YUM은 저장소 기반의 설치 기능을 제공하며 패키지 의존성 문제를 해결한 고수준의 관리 도구이다.
RPM과 YUM의 사용법을 학습하고, 파일 압축과 아카이브 명령을 알아보자.학습 목표
- RPM을 이용한 패키지 관리 방법을 설명할 수 있다.
- YUM을 사용한 소프트웨어 패키지를 관리할 수 있다.
- 압축을 적용하여 아카이브 파일을 만들 수 있다.
패키지 관리
소프트웨어 패키지의 관리
- 소프트웨어를 설치하고 업데이트 등을 하는 작업.
- 패키지 관리 도구를 사용하는 것이 편리함.
- 리눅스 초기에는 소스 프로그램을 가져와 적당한 디렉토리 구조를 만들고 컴파일하고 링크하여 환경 설정 작업을 해야 했음.
- 컴파일 되어 있는 패키지를 다루고, 지원 도구를 사용하는 것이 효율적.
- 리눅스 배포판에 따라 패키징 방법이 다름.
- 소프트웨어의 배포를 위해 표준 방법이 필요함.
- 데비안 계열은 DEB(.deb), 레드헷 계열은 RPM(.rpm) 방법.
- 도구를 사용하거나 '패키지 파일'을 찾아 다운로드 받은 후 설치함.
- 패키지 파일은 패키지를 구성하는 파일들을 묶어 압축한 파일.
패키지 파일과 저장소
- 패키지 관리의 기본 단위는 '패키지 파일'.
- 바이너리 프로그램, 패키지의 메타데이터, 스크립트 파일로 구성됨.
- 메타데이터는 패키지에 관한 정보.
- 패키지 이름, 버전, 릴리즈, 아키텍쳐, 패키지 요약과 설명, 저작자와 라이센스, 설치를 위해 필요한 다른 패키지 정보 등.
- 설치/업데이트/삭제 또는 환경 설정을 위해 스크립트 파일도 필요.
- 메타데이터는 패키지에 관한 정보.
- 패키지 저장소는 배포용 패키지를 저장하고 관리하는 사이트.
- 고수준 패키지 관리 도구는 많은 패키지 저장소를 검색할 수 있음.
패키지 의존선
- 어떤 패키지의 실행을 위해 다른 패키지가 필요할 수 있음.
- 공유 라이브러리가 필요하다면 패키지가 그것에 의존적이라고 함.
- 패키지를 설치할 때 '선행 패키지'가 이미 설치되어 있거나 함께 설치해야 함.
- 고수준 패키지 관리 도구 YUM은 의존성 문제를 해결.
- 저수준 패키지 관리 도구 RPM은 해당 패키지만 설치하거나 삭제.
RPM 패키지 관리자
RPM
- RPM은 레드헷 계열 리눅스에서 패키지 파일의 표준 형식.
- 패키지 파일의 이름은
- <패키지이름>-<버젼>-<릴리즈>.<아키텍쳐>.rpm
- firefox-45.0.1-el6.centos.i686.rpm
- 패키지 파일의 확장자가 .rpm임.
- 릴리즈 번호는 해당 버전에서 몇 번째 개선된 것인가를 의미.
- 아키텍쳐는 설치가 가능한 프로세서 아키텍쳐를 의미.
- 패키지 파일의 이름은
- RPM Package Manager를 의미하기도 함.
- 패키지가 설치되면 '로컬 RPM 데이터베이스'에 정보가 저장됨.
rpm -qa
rpm -qi firefox
와 같이 설치된 패키지의 정보를 질의할 수 있음.
RPM 명령
- 패키지를 설치, 업데이트, 삭제하거나 정보를 확인하는 명령.
- rpm [options] [package]
- 옵션은 크게 설치(-i), 업데이트(-u), 삭제(-e), 질의(-q)로 분류됨.
- 각각에 해당하는 옵션의 서브옵션을 추가로 붙일 수 있음.
- 설치나 업데이트를 할 때는 pageages에 패키지 파일의 이름을 지정함.
- 질의를 할 때는 보통 packages에 패키지의 이름을 사용함.
- 옵션은 크게 설치(-i), 업데이트(-u), 삭제(-e), 질의(-q)로 분류됨.
- 패키지를 설치할 때 선행 패키지가 설치되어 있지 않으면 '의존성 문제'로 설치가 실해팜.
- RPM 패키지 관리자를 사용할 때는 '선행 패키지'를 찾아 미리 설치해야하는 문제가 있음.
- 설치하고자 하는 'RPM 파일'을 가지고 있거나 다운로드 받을 수 있어야 함.
RPM 명령
자주 사용되는 RPM 명령과 옵션
rpm 명령과 옵션 | desc |
---|---|
rpm -i package_file | RPM 패키지 파일을 가지고 소프트웨어 설치 |
rpm -e package_name | 패키지를 삭제함. 종속성 문제가 생긴다면 삭제되지 않음 |
rpm -qa | 서ㅓㄹ치되어 있는 모든(-a) 패키지를 나열 |
rpm -qi package_name | 패키지 이름, 버젼, 설명 등의 다양한 정보(-i)를 출력 |
rpm -qf file | 지정 파일(-f)을 포함하는 패키지 파일을 출력 |
rpm -ql package_name | 설치된 패키지에 포함되어 있는 모든 파일을 나열(-l) |
rpm -qc package_name | 설치된 패키지의 모든 설정(-c) 파일을 나열 |
rpm -qR package_name | 패키지가 의존(-R)하고 있는 패키지 목록을 보여줌 |
rpm -qpl package_name | 설치되지 않은 RPM 패키지(-p) 파일에 포함되어 있는 모든 파일 나열(-l) |
YUM 패키지 관리자
YUM
- Yellowdog Updater Modified
- RPM 방법에 기초한 자동 패키지 설치, 업그레이드 및 삭제 도구.
- RPM 명령의 어려운 부분인 패키지 의존성 문제를 해결.
- 선행 패키지를 검색하여 자동으로 설치함.
- 저장소 기반의 설치 기능을 제공하는 고수준 패키지 관리 도구.
- RPM 명령의 어려운 부분인 패키지 의존성 문제를 해결.
- 저장소 목록을 유지하여 설치 가능한 패키지를 검색.
- /etc/yum.conf 또는 /etc/yum.repos.d 디렉토리에 있는 저장 설정 파일 (*.repo) 파일들에 저장소 정보를 저장.
- 설치하거나 업데이트할 때 저장소로부터 필요한 다른 패키지를 찾아서 설치하거나 업데이트함. 삭제도 마찬가지.
YUM 설정 파일
- /etc/yum.conf
- [main] 섹션에 전반적인 설정 옵션이 존재함.
- 파일을 저장하는 캐시 디렉토리 설치 후 캐시 파일의 보관 여부, 디버그 메세지 수준, 로그 파일, 업데이트 시 아키텍쳐의 일치 여부, 서병 확인 여부 등.
- 저장소 정보의 설정을 포함할 수 있음.
- [main] 섹션에 전반적인 설정 옵션이 존재함.
- /etc/yum.repos.d/ 디렉토리의 *.repo 파일.
- 저장소 설정 파일로 [저장소 아이디], 저장소 이름(name), 베이스 URL(baseurl)과 미러리스트(mirrorlist) 등이 설정됨.
- 베이스 URL과 미러리스트는 실제 패키지가 저장된 장소로 로컬 디렉토리 또는 파일 이거나 네트워크 상에 http 서버나 ftp 서버가 관리하는 디렉토리
- yum repolist enabled 명령으로 활성화된 저장소를 확인할 수 있음.
YUM 명령
- yum [options] command
- command 는 yum의 서브 명령.
- command 의 인수로 패키지를 지정할 때 name, name.arch, name-ver, name-ver-rel, name-ver-rel.arch 등의 형태를 사용함.
- 수행 과정(설치)
- 설정 파일을 읽음.
- yum 저장소에 있는 모든 패키지의 메타 데이터가 로컬 캐시 디렉토리에 저장됨.
- 패키지의 의존성을 확인한 후 필요한 패키지를 다운로드 받음.
- 패키지에 포함된 파일을 적당한 디렉토리에 복사하여 설치함.
- 설치된 패키지의 정보를 로컬 'RPM 데이터베이스'에 저장함.
yum 명령 사용 예
- yum search string [strings]
- 패키지 이름이나 요약에서 문자열을 검색하여 패키지를 찾음.
- yum search web server
- yum install package [packages]
- 패키지를 설치 함.
- yum install emacx
- yum update [packages]
- 패키지를 업데이트 함.
- yum remove package [packages]
- 패키지를 삭제함.
- yum reinstall package [packages]
- 패키지를 다시 설치함.
- yum info [options] [packages]
- 패키지의 설명과 요약 정보를 출력함.
- yum info firefox
- yum list available [packages]
- 설치되어 있지 않은 가용 패키지의 목록을 출력함.
- yum list installed [packages]
- 설치되어 있는 패키지 목록을 출력함.
- yum list installed emacs
- yum deplist package [packages]
- 패키지가 의존하는 요소와 그것을 제공하는 패키지를 나열.
- yum repolist [options]
- 저장소 목록을 나열함.
- yum repolist enabled 명령은 활성화된 저장소 목록을 출력함.
- yum history [info | undo | ...]
- 패키지의 설치와 삭제 이력이 /var/log/yum.log 파일에 기록됨.
- yum history 명령으로 이력을 확인할 수 있음.
- yum history info 3 명령으로 해당 yum 명령의 자세한 내용 확인.
- yum history undo 3 명령으로 해당 명령을 취소할 수 있음.
압축
- 시스템 파일이나 데이터를 백업할 때 파일 압축이 필요함.
- 압축을 통해 디스크 공간을 절약하거나 데이터 전송 시간을 줄일 수 있음.
- 다양한 압축 기술이 존재.
- 공간 효율과 압축 속도에서 차이가 남.
- gzip, bzip2, xz, zip 등
gzip
- bgzip은 압출 파일의 형식이자 파일의 압축과 해제를 위한 프로그램
- 가장 널리 사용되는 리눅스 압축 프로그램
- 초기 UNIX 시스템의 압축 프로그램을 GNU 프로젝트에서 수정한 버전
- gzip [options] [files]
- 압축시 원본파일은 .gz 확장자를 갖는 파일로 대체됨
- gzip file을 수핸하면 file은 사라지고 file.gz이 생성됨
- 옵션
options | desc |
---|---|
-c | 결과를 표중 출력으로 보내고 원본 파일은 그대로 유지 |
-d | 압축을 풀 때 사용하며 gunzip 명령과 같음 |
-r | 인수로 디렉토리가 주어질 때 디렉토리에 포함된 모든 파일을 재귀적으로 탐색하여 압축 |
-t | 압축 파일의 무결성을 검사 |
-v | 압축 또는 해제하면서 파일의 이름과 압축률을 출력 |
-number | 압축률을 의미하는 1 ~ 9 사이의 값. 기본값 : 6 |
gunzip
.zg, .Z, .tgz, .taz 등의 확장자를 가진 압축 파일을 풀고, 확장자를 제거함.
(.tgz -> .tar.gz, .taz -> tar.Z)
options | desc |
---|---|
gzip foo.txt | 압축 파일 foo.txt.gz 생성. 원본 삭제 |
gzip -d foo.txt.gz | 압축을 풀고 원본 파일을 생성. 압축 파일은 삭제 |
gzip *.txt | 확장자가 txt인 모든 파일에 대해 개별적으로 압축 |
gunzip -d *.gz | 모든 압축 파일을 풀고 원본 파일을 생성 |
gzip -c file1 > bar.gz gzip -c file2 >>bar.gz |
file1을 압축하여 bar.gz을 만들고, file2를 압축하여 bar.gz에 추가함 |
gunzip -c bar.gz | 압축을 풀고 결과를 표준 출력으로 보냄. 압축파일은 유지함 |
gzip -d file1 file2 > baz.gz | 두 파일을 각각 압축한 후 연결 시켜 압축파일 bar.gz을 만듦 |
bzip2
- 블록 정렬 압축 알고리즘을 사용한 파일 압축 프로그램
- gzip과 유사하나 압축 효율이 높고 속도가 느림
- 압축후 파일의 크기가 매우 작아짐
- 사용방법은 gzip과 유사하며 압축 파일의 확장자로 .bz2 사용
- bzip2 file file.bz2 생성후 원본 제거
- bzip2 -k file 원본 파일 유지
- bzip2 -d file.bz2 ==> bunzip2 file.bz2
- bunzip2 -c file.bz2 ==> bzcat file.bz2
tar
- 여러 파일을 하나의 아카이브 파일로 묶거나 아카이브 파일에서 파일을 추출하는 명령
- 아카이브는 백업 등의 목적으로 여러 파일을 하나로 묶은 것.
- tar mode [options] [tarfile] [pathnames...]
- tarfile은 아카이브를 의미
- pathname은 아카이브에 넣을 파일이나 디렉토리
- 아카이브 파일의 확장자는 보통 .tar를 사용함
- 모드나 옵션을 사용할 때 대시 (-)를 사용하지 않는 편임
- mode
- A : tar 파일을 아카이브에 추가
- c : 새로운 아카이브 생성
- x : 아카이브로부터 파일 추출
- r : 아카이브에 파일 추가
- t : 아카이브에 포함된 파일의 목록을 출력
- options
- f : 아카이브 파일을 지정
- v : 처리 과정에서 대상 파일을 보여줌
- z : tar 명령에서 gzip을 사용 (.tar.gz)
- j : tar 명령에서 bxip (.tar.bz2)
- 사용 예
- tar cvf foo.tar *.c
- : 현재 디렉토리에서 .c로 끝나는 모든 파일을 foo.tar로 묶어 만들고 진행 결과 출력.
- tar tvf foo.tar
- : 아카이브 foo.tar에 있는 파일 목록을 출력.
- tar xvf foo.tar
- : 현재 디렉토리에 아카이브 foo.tar를 해제.
- tar cvf bar.tar backup/
- : 디렉토리 backup의 내용을 묶어 아카이브 bar.tar로 만듦.
- tar cvfz baz.tar.gz backup/
- : 위와 같으나 아카이브를 만들 때 gzip을 이용하여 압축.
- tar xvfz bzx.tar.gz
- : gzip으로 압축된 아카이브를 해제.
- tar cvf foo.tar *.c
jar
- jar는 java application을 압축 형식.
- 실제로는 ZIP 파일 포멧으로 이루어진 압축 파일로 확장자는 .jar
- JDK에 포함된 jar 명령어를 통해 사용.
- zip을 사용할 수 있으나 manifest 파일이 필수인 경우에는 정상적으로 작동하지 않을 수 있다.
- jar {ctxu} [vfm0M] [jar file] [manifest-file] [-C dir || files]
- 필수 옵션 cxtu
- c : 새 archive를 생성.
- x : jar 파일을 해제.
- t : jar 파일에 해당하는 파일의 content list를 설정.
- u : jar 파일 내에 들어있는 파일을 수정.
- 기타 옵션 vfm0M
- v : console 창으로 진행 사항을 모두 출력.
- f : archive 될 파일 이름 지정.
- m : manifest 파일로부터 정보를 포함.
- 0 : 묶기만 하고 zip으로 압축하지 않음.
- M : 추가되는 entry에 대해 manifest를 생성하지 않음
- jar file : archive 대상이 되는 .jar 파일의 이름
- manifest-file : 정보를 포함할 manifest file의 이름
- -C dir || files : archive 할 디렉토리 또는 파일 명.
- 필수 옵션 cxtu
728x90
반응형
'OS > Linux' 카테고리의 다른 글
[Linnux] 네트워크 설정 및 점검 (0) | 2020.12.05 |
---|---|
[Linux] 쉘 스크립트 -2 (0) | 2020.11.08 |
[Linux] 프로세스 관리 (0) | 2020.11.01 |
[Linux] 파일 시스템 관리 (0) | 2020.10.25 |
[Linux] vi 사용 텍스트 편집 (0) | 2020.10.25 |