소프트웨어 패키지관리
소프트웨어 설치, 업데이트 및 삭제하는 등의 관리작업
패키지 관리도구를 사용
리눅스 초기에는 소스프로그램으로 적당한 디렉토리 구조를 만들고, 컴파일하고 링크하여 환경설정
컴파일 되어 있는 프로그램과 패키지를 다루고, 관리도구를 사용하는 것이 효율적
리눅스 배포판에 따라 패키징방법이 다름
표준방법이 필요하며, 데비안 계열은 DEB(.deb), 레드햇 계열은 RPM(.rpm)방법
도구사용 혹은 '패키지 파일'(패키지 구성 파일을 묶어 압축한것)을 다운받아 설치사용
패키지 파일과 저장소
관리의 기본단위 : 패키지 파일
바이너리 프로그램, 설정파일, 패키지의 메타데이터, 설치스크립트 등으로 구성됨
메타데이터 (패키지 정보) - 패키지 이름, 릴리스, 아키텍쳐, 요약과 설명, 저작자, 라이선스,
설치를 위해 필요한 라이브러리나 다른 패키지 정보
설치/업데이터/삭제 또는 환경설정을 위한 스크립트 화일도 필요
패키지 저장소는 배포용 패키지를 저장하고 관리하는 사이트 (외부사이트)
고수준 패키지 관리도구는 '저장소 설정 파일'을 통해 많은 패키지 저장소 검색가능
패키지의존성
패키지의 실행을 위해 다른 패키지가 필요할수 있음
공유 라이브러리가 필요하다면 패키지가 그것에 의존적(종속적)이라고함
패키지를 설치할때 '선행 패키지'가 이미 설치되어 있어야 하나, 아니라면 함께 설치
저수준 패키지 관리도구(RPM)은 해당 패키지만 설치, 삭제(의존성 해결 x)
고수준 패키지 관리도구(YUM, DNF)의존성 문제를 해결
( 수시로 메타 데이터를 읽고 필요한 선행 패키지를 함께 설치 )
RPM 패키지 관리자 (RPM Package Manager)
레드햇 계열 리눅스의 패키지 파일의 표준형식
패키지 파일이름 : <패키지이름>-<버전-릴리스>.<배포판>.<아키텍쳐>.rpm
ex) firefox-102.8.0-2.el9_1.x86_64.rpm
패키지 파일의 확장자가 rpm, 릴리스 번호는 해당 버전에서 몇번째 개선인가,
배포판 정보는 해당 배포판과 호환, 설치가능한 프로세서 아키텍쳐
패키지가 설치되면 로컬 RPM 데이터베이스에 정보가 저장됨
rpm -qa 또는 rpm -qi firefox와 같이 설치된 패키지의 정보 질의가능
rpm 명령
패키지를 설치, 업데이트, 삭제, 정보확인 명령
rpm [options][packages]
옵션은 설치(-i), 업데이트(-u), 삭제(-e), 질의(-q)로 분류 (서브옵션도 추가가능)
설치나 업데이터를 할때 pacakges에 패키지 파일의 이름(.rpm)을 지정
질의를 할때는 보통 package에 패키지 이름만 사용
패키지를 설치할때 선행 패키지가 설치되어 있지 않으면 '의존성 문제'로 설치 실패
RPM패키지 관리자를 사용할때는 '선행패키지'를 찾아 미리 설치
설치하고자 하는 RPM을 가지고 있거나 다운로드 받을수 있어야 함
YUM (Yellowdog Updator Modified)
RPM방법에 기초한 자동 패키지 설치, 업그레이드 및 삭제도구
- 레드햇 리눅스 계열 배포판에 주로 사용
- RPM명령의 어려운 부분인 패키지 의존성 문제해결
- 선행 패키지를 검색하여 자동으로 설치
- 저장소 기반의 설치기능을 제공하는 고수준 패키지 관리도구
DNF (Dandified YUM) YUM의 차세대 버전
YUM과 호환되는 명령행 기반, 저장소 기반의 패키지 관리도구
빠른 설치, 효율적 의존성 처리, 직관적 명령과 처리, 패키지 무결성관리 등 향상된 기능제공
최신 리눅스 배포판의 기본 패키지 관리자
저장소목록을 유지하여 설치가능한 패키지를 검색
/etc/dnf/dnf.conf 또는 /etc/yum.repos.d의 '저장소 설정파일(.repo)에 저장소 정보저장
dnf repolist --enabled 명령으로 활성화된 저장소를 확인할수 있음
dnf [options] command
command는 dnf의 서브명령
command의 인수로 패키지를 지정시 name, name.earch, name-ver, name-ver-rel,
name-ver-rel.arch등의 형태를 사용함
설치수행과정
설정파일을 읽고, dnf저장소의 모든 패키지의 메타데이터가 로컬캐시 디렉터리에 저장
패키지 의존성을 확인 후 필요한 패키지를 저장소로부터 다운로드
패키지에 포함된 파일을 적당한 디렉터리에 복사하여 설치
설치된 패키지의 로컬 'RPM 데이터베이스'에 저장함
dnf search string [strings] 패키지 이름이나 요약에서 문자열을 검색하여 패키지 찾음
dnf search web server
dnf install package [packages] 패키지를 설치함
dnf install emacs
dnf update [packages] 패키지를 업데이트
dnf remove package[packages] 패키지를 삭제함
dnf reinstall package[packages] 패키지를 다시 설치함
dnf info [options][packages] 패키지의 설명과 요약정보를 출력함
dnf info firefox
dnf list available [packages] 설치되어 있지 않는 가용패키지의 목록출력
dnf list installed [packages] 설치되어 있는 패키지 목록을 출력
dnf list installed emacs
dnf list package [packages] 패키지가 의존하는 요소와 그것을 제공하는 패키지 나열
dnf repolist enabled 활성화된 저장소 목록을 출력
dnf history [ info | undo | .. ] 패키지의 설치와 삭제 이력이 /var/log/dnf.log 파일에기록
dnf history 이력확인명령, dnf history info 5 dnf 명령의 자세한 내용확인,
dnf history undo 5 명령으로 해당명령을 취소
파일압축
시스템 파일이나 데이터를 백업할때 "파일압축"이 필요함
압축을 통해 디스크 공간을 절약하거나 데이터 전송시간을 줄일 수 있음
다양한 압축기술 존재 (공간효율과 압축속도의 차이: gzip, bzip2, xz, zip)
gzip 명령
압축파일의 형식이자 파일의 압축과 해제를 위한 프로그램
가장 널리 사용되는 리눅스의 기본압축 프로그램
초기 Unix시스템의 압축 프로그램을 GNU프로젝트에서 수정한 버전
gzip [options][files]
압축한 후 원본파일은 .gz확장자를 갖는 파일로 대체됨
gzip.file을 수행하면 file은 없어지고 file.gz이 만들어짐
gunzip 명령
.gz, .Z, .tgz, .taz등의 확장자를 가진 압축파일을 풀고 확장자를 제거함
( .tgz는 .tar.gz, .tz는 .tar.Z을 의미)
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를 사용함
- 모드나 옵션을 사용할때 대시(-)를 사용하지 않는 편임
- 모드
A는 tar파일을 아카이브에 추가
c는 새로운 아카이브 생성
x는 아카이브로부터 파일을 추출
r은 아카이브에 파일을 추가
t는 아카이브에 포함된 파일의 목록을 출력
- 옵션
f는 아카이브 파일을 지정 (사용하지 않으면 아카이브 내용이 화면에 출력)
v는 처리 과정에서 대상 파일을 보여줌
z는 tar명령에서 gzip사용 (.tar.gz)
j는 tar명령에서 bzip2를 사용 (.tar.bz2)
'스터디 > UNIX' 카테고리의 다른 글
GIT (0) | 2023.11.16 |
---|---|
셸 스크립트 (0) | 2023.11.14 |
Linux 관리자 (1) | 2023.10.10 |
Linux 구동 및 사용자관리 (1) | 2023.10.08 |
File and Directory (0) | 2023.10.05 |