본문 바로가기
Linux

리눅스 과정 12일차

by Mostlove 2025. 3. 5.
728x90
반응형

🖥️ RAID (Redundant Array of Independent Disks) 디스크 구축

RAID는 여러 개의 하드디스크를 묶어 하나의 논리적 디스크처럼 사용하여 데이터를 안전하게 보호하는 기술입니다. 하드디스크가 고장 나더라도 데이터를 복구할 수 있도록 도와줍니다. 백업과는 다르게, RAID는 하드웨어 오류에 대한 일시적인 보호를 제공합니다. 

RAID 레벨 종류

  1. RAID 0 (스트라이프):
    •  목적: 빠른 읽기/쓰기 속도 증가 🚀
    •  구성: 데이터 스트라이프 방식 (복구 불가)
    •  필요 디스크 수: 최소 2개
    •  장점: 빠른 성능
    •  단점: 데이터 복구 불가 ❌
  2. RAID 1 (미러링):
    •  목적: 데이터 보호 및 복구 🔒
    •  구성: 두 디스크에 동일 데이터 저장
    •  필요 디스크 수: 최소 2개
    •  장점: 하나의 디스크가 고장 나도 데이터 복구 가능 💾
    •  단점: 저장 용량 절반 감소 💡
  3. RAID 5 (스트라이프 + 패리티):
    •  목적: 성능과 데이터 보호 모두 제공 ⚙️
    •  구성: 패리티 비트로 데이터 보호
    •  필요 디스크 수: 최소 3개
    •  장점: 고속 읽기/쓰기 + 복구 가능 💪
    •  단점: 쓰기 성능이 다소 떨어짐 📉
  4. RAID  6 (스트라이프 + 2개의 패리티):
    •  목적: 두 개의 디스크 고장에도 데이터 보호 💣
    •  구성: 두 개의 패리티 비트
    •  필요 디스크 수: 최소 4개
    •  장점: 높은 신뢰성 🔐
    •  단점: RAID 5보다 더 많은 디스크 공간 필요 📦
  5. RAID 10 (RAID 0 + RAID 1):
    •  목적: RAID 0의 성능과 RAID 1의 복구 기능 결합 💡
    •  구성: RAID 0 + RAID 1 결합
    •  필요 디스크 수: 최소 4개
    •  장점: 빠른 속도 + 높은 복구 능력 ⚡
    •  단점: 저장 용량 절반 감소 ❗
  6. Linear RAID:
    •  목적: 서로 다른 용량의 하드디스크 묶기 🔗
    •  장점: 용량이 다르면 더 많이 사용할 수 있음 📊
    •  단점: 복구 기능 없음 😔

RAID 디스크 설정 예시

RAID 0 설정:

mdadm --verbose --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1

RAID 1 설정:

mdadm --verbose --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1


RAID 10 설정:

mdadm --verbose --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm --verbose --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1
mdadm --verbose --create /dev/md10 --level=10 --raid-devices=2 /dev/md1 /dev/md0



RAID 6 설정:

mdadm --create /dev/md6 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

데이터 삭제 및 파티션 작업

디스크 정보 삭제:

#!/bin/bash 
for i in sdb sdc sdd 
do 
  sudo wipefs -a /dev/$i 
  sudo mdadm --zero-superblock /dev/$i 
done

디스크 파티션 설정:

for i in sdb sdc sdd
do 
  sudo parted --script /dev/$i "mklabel gpt" 
  sudo parted --script /dev/$i "mkpart primary 0% 100%" 
  sudo parted --script /dev/$i "set 1 raid on" 
done

RAID는 하드디스크의 고장을 대비한 중요한 기술로, 시스템의 안정성을 높이고 데이터를 안전하게 보호하는 데 큰 역할을 합니다. 💡✨

LVM (Logical Volume Management)으로 디스크 관리하기 🔧💻

LVM은 물리적 디스크를 논리적으로 묶어서 관리할 수 있게 해주는 기술로, 디스크 용량을 유연하게 확장하거나 축소할 수 있는 큰 장점이 있습니다. CentOS와 같은 Linux 시스템에서 디스크 관리에 있어 매우 유용하게 사용됩니다. 이제 LVM의 특징과 사용 방법을 단계별로 정리해 보겠습니다.


1. LVM이란? 🤔

LVM은 물리적인 디스크(혹은 파티션)를 하나의 논리적 볼륨으로 묶어서 관리할 수 있도록 해줍니다.

  • 디스크 확장: 기존에 사용 중인 디스크에 용량이 부족하면 새로운 디스크를 추가하여 용량을 확장할 수 있습니다.
  • 유연한 공간 관리: 여러 개의 디스크 용량을 합쳐서 하나의 볼륨처럼 관리할 수 있으며, 디스크 크기나 브랜드에 상관없이 묶을 수 있습니다.

예시:

  • 1.5GB와 0.5GB의 디스크 공간을 묶어서 2GB로 활용 가능.
  • 기존 2GB 디스크에 1GB 디스크를 추가하여 3GB로 만들 수 있습니다.

2. LVM의 구성 요소 🧩

LVM은 크게 세 가지 주요 구성 요소로 나눠집니다:

  1. PV (Physical Volume): 물리적 볼륨, 즉 실제 디스크나 디스크 파티션입니다.
  2. VG (Volume Group): 여러 개의 PV를 묶은 논리적 그룹입니다. 하나의 VG에 여러 개의 PV가 포함될 수 있습니다.
  3. LV (Logical Volume): VG 내에서 실제 데이터를 저장하는 공간입니다. 마치 파티션처럼 사용됩니다.

3. LVM 설정 과정 🔄

LVM을 설정하려면 아래와 같은 순서로 진행됩니다:

  1. PV (Physical Volume) 생성
    • 디스크 파티션을 물리적 볼륨으로 변환합니다.
      예:pvcreate /dev/sdb1 && pvcreate /dev/sdc1
  2. VG (Volume Group) 생성
    • 물리적 볼륨을 묶어서 하나의 볼륨 그룹을 만듭니다.
      예:vgcreate vg-home /dev/sdb1 /dev/sdc1
  3. LV (Logical Volume) 생성
    • 볼륨 그룹 내에서 논리적 볼륨을 만들어 실제로 사용할 수 있는 공간을 확보합니다.
      예:lvcreate vg-home -n lg-main -L 2.5G lvcreate vg-home -n lg-side -L 0.48G

4. LVM으로 디스크 확장하기 🔼

  • LVM을 사용하면 기존의 볼륨 크기를 확장하는 것이 매우 간단합니다. 예를 들어, 기존의 0.5GB 논리적 볼륨에 3GB를 추가하는 방법은 아래와 같습니다:
  1. 새로운 디스크 추가
    vgextend vg-home /dev/sdd1
  2. 논리적 볼륨 크기 확장
    lvextend /dev/vg-home/lg-side -L +3G

이렇게 하면 기존 0.5GB + 3GB로 총 3.5GB의 공간을 사용할 수 있게 됩니다.


5. LVM과 RAID 함께 사용하기 ⚡

LVM과 RAID를 결합하여 RAID를 통해 디스크를 미러링하거나 스트라이핑하여 고가용성 또는 성능 향상을 꾀한 후, 그 위에 LVM을 사용하여 유연한 디스크 관리가 가능합니다.

  • RAID 구성 후 LVM 생성: RAID로 먼저 디스크를 구성한 뒤, 그 위에 LVM을 생성하여 용량 확장 및 관리를 할 수 있습니다.

LVM 사용 시 장점 ✨

  • 유연성: 디스크 용량을 쉽게 확장하고 줄일 수 있습니다.
  • 편리성: 여러 개의 물리적 디스크를 하나의 논리적 볼륨처럼 사용할 수 있어 관리가 용이합니다.
  • RAID와 결합 가능: RAID와 함께 사용하면 고성능과 고가용성을 동시에 만족할 수 있습니다.

ZFS (Z File System) 파일 시스템 소개 🖥️💾

ZFS는 차세대 파일 시스템으로, 기존의 파일 시스템과는 달리 혁신적인 특징을 갖추고 있어 많은 인기를 얻고 있습니다. ZFS는 2001년에 Open Solaris에서 처음 개발되었고, 이후 FreeBSD, Linux에 채택되었습니다. ZFS는 파일 시스템 관리의 근본적인 변화를 가져온 시스템으로, 다른 파일 시스템에서는 찾아볼 수 없는 강력한 기능들이 특징입니다.


1. ZFS 파일 시스템의 특징 🚀

  • 강력하고 확장성 뛰어남: ZFS는 큰 용량을 지원하며, 성능과 안정성이 뛰어납니다.
  • Copy-on-Write 기능: 데이터를 쓰기 전에 기존 데이터를 먼저 보존하여 데이터의 무결성을 보장합니다.
  • Snapshot 기능: 특정 시점의 파일 시스템 상태를 캡처하여 복원할 수 있습니다.
  • RAID-Z: ZFS는 RAID-Z라는 고유한 RAID 구성을 지원하며, RAID-Z1, RAID-Z2, RAID-Z3 등의 다양한 RAID 레벨을 제공하여 데이터 보호 및 성능을 최적화할 수 있습니다.

2. ZFS의 주요 기능 🛠️

  • 파일 시스템과 디스크의 연결:
    ZFS는 다른 파일 시스템과 달리 각 HDD가 직접 연결되는 구조가 아니라 Virtual Volume을 사용하여 여러 디스크를 묶어서 관리합니다. 이로 인해 디스크 관리가 훨씬 유연하고 효율적입니다.
  • RAID-Z 구성:
    ZFS에서 제공하는 RAID-Z는 기존 RAID와는 다른 방식으로 데이터를 보호합니다. 각 RAID-Z 레벨은 데이터 + 패리티의 구조를 가지며, 데이터 손실을 방지합니다.
    • RAID-Z1: 2개의 데이터 HDD와 1개의 패리티 HDD (최소 3개 HDD)
    • RAID-Z2: 2개의 데이터 HDD와 2개의 패리티 HDD (최소 4개 HDD)
    • RAID-Z3: 2개의 데이터 HDD와 3개의 패리티 HDD (최소 5개 HDD)
  • 데이터 무결성과 자동 수정:
    ZFS는 데이터 무결성을 자동으로 검증하고, 오류가 발생할 경우 이를 자동으로 수정합니다.
  • 16EB까지 지원:
    ZFS는 16 Exabytes (EB) 까지 지원하며, 이는 상상할 수 없을 정도로 큰 용량을 처리할 수 있다는 뜻입니다.
  • 256개의 Quadrillion Zettabytes 저장 가능:
    ZFS는 이론상 256퀴드릴리온 제타바이트라는 어마어마한 용량을 지원합니다.

3. ZFS 시스템 요구 사항 📊

  • 최소 물리적 디스크 크기: 128MB
  • 권장 메모리: 최소 768MB, 성능상 1GB 이상의 메모리가 권장됨
  • 미러링: 다중 컨트롤러(RAID0) 구성이 권장됨
  • EFI Label 사용: 기본적으로 ZFS 파일 시스템을 만들면 EFI Label을 사용합니다.

4. ZFS 구성 요소 🧩

ZFS는 여러 가지 구성 요소로 이루어져 있으며, 그 중 일부는 아래와 같습니다:

  1. Pool:
    여러 디스크를 하나의 풀로 묶어서 관리합니다. ZFS는 풀 단위로 디스크를 관리하며, 이를 통해 공간을 유연하게 할당하고 확장할 수 있습니다.
  2. Volume (Vdev):
    풀을 구성하는 물리적 디스크들을 Vdev라는 단위로 묶습니다. 각 Vdev는 하나의 RAID-Z 레벨로 구성될 수 있습니다.
  3. Dataset:
    풀을 구성하는 데이터 단위로, 이는 파일 시스템의 실제 데이터를 저장하는 단위입니다.
  4. Zvol:
    ZFS Volume을 의미하며, 블록 레벨 데이터를 관리하는 구조로 사용됩니다.

5. ZFS의 장점 🌟

  • 유연한 관리:
    ZFS는 데이터를 효율적으로 저장하고 관리할 수 있도록 설계되었습니다. 파일 시스템 및 볼륨 관리가 용이합니다.
  • 성능:
    ZFS는 매우 빠른 속도와 함께 고성능을 제공합니다. 특히 대용량 데이터 처리에 유리합니다.
  • 자동화된 복구:
    오류가 발생한 데이터를 자동으로 복구하는 기능을 제공하여 안정성을 크게 향상시킵니다.

6. ZFS의 사용 예시 🖱️

RAID-Z 구성 예시:

  • RAID-Z1: 2개의 데이터 드라이브 + 1개의 패리티 드라이브 (최소 3개의 드라이브 필요)
  • RAID-Z2: 2개의 데이터 드라이브 + 2개의 패리티 드라이브 (최소 4개의 드라이브 필요)
  • RAID-Z3: 2개의 데이터 드라이브 + 3개의 패리티 드라이브 (최소 5개의 드라이브 필요)

풀 생성 및 설정:

  • zpool create <pool_name> <disk1> <disk2> ...
    풀을 생성할 때 여러 디스크를 하나의 저장 공간으로 묶습니다.

ZFS는 기존의 파일 시스템들과 비교해 훨씬 유연하고 강력한 기능을 제공하는 파일 시스템입니다. 특히 데이터 보호와 성능, 관리의 편리함 면에서 큰 장점을 제공합니다. ZFS를 사용하면 대용량 데이터 저장과 관리를 보다 효율적으로 할 수 있습니다. 😄

펌웨어(Firmware) 📡💻

펌웨어는 하드웨어와 소프트웨어의 결합체로, 하드웨어를 운영하기 위한 소프트웨어입니다. 즉, 하드웨어의 기능을 제어하거나 관리하는 소프트웨어가 펌웨어입니다. 펌웨어는 일반적으로 하드웨어와 밀접하게 결합되어 있어서, 하드웨어와 소프트웨어의 경계에서 중요한 역할을 합니다.


1. 펌웨어의 개념 💡

펌웨어는 하드웨어소프트웨어의 중간 역할을 하며, 하드웨어에서 특정 작업을 실행하는 소프트웨어입니다. 이 소프트웨어는 하드웨어에 내장되어 있어, 하드웨어의 기능을 직접 제어하거나 관리합니다.

예시:

  • BIOS (Basic Input Output System): 컴퓨터의 기본적인 하드웨어 초기화 및 운영 시스템을 제어하는 펌웨어입니다.
  • 프린터: 프린터와 같은 장치의 하드웨어를 제어하는 소프트웨어도 펌웨어로 간주될 수 있습니다. 프린터는 하드웨어와 이를 운영하는 소프트웨어(드라이버)가 결합된 시스템입니다.

2. 펌웨어의 특징 ⚙️

  • 하드웨어와 소프트웨어 결합: 펌웨어는 하드웨어의 기능을 제어하는 소프트웨어이므로 하드웨어와 밀접하게 결합되어 있습니다.
  • 하드웨어 초기화 및 관리: 하드웨어의 동작을 초기화하고 관리하는 중요한 역할을 합니다. 예를 들어, 컴퓨터가 부팅될 때 BIOS가 하드웨어를 초기화하고 운영체제를 로드합니다.
  • 수정 불가능한 경우도 있음: 일부 펌웨어는 **ROM(Read-Only Memory)**에 저장되어 있어 수정이 불가능하거나 어려운 경우가 많습니다.

3. EEEPROM과 펌웨어 💾

  • **EEEPROM (Electrically Erasable Programmable Read-Only Memory)**은 전기적으로 데이터를 지우고 다시 쓸 수 있는 ROM입니다. 펌웨어를 하드웨어에 내장할 때 사용되는 장치 중 하나입니다.
    • EEEPROM은 하드웨어에 소프트웨어를 내장하는 데 사용되며, 이로 인해 하드웨어의 기능을 소프트웨어가 제어할 수 있습니다.
    • 예를 들어, 전자기기의 설정을 저장하거나 특정 기능을 제어하는 데 사용됩니다.

4. 펌웨어와 소프트웨어의 차이 🆚

  • 펌웨어: 하드웨어와 밀접하게 결합된 소프트웨어로, 하드웨어의 기능을 제어하거나 관리합니다.
    • 예: BIOS, 프린터 드라이버, 라우터 펌웨어 등
  • 소프트웨어: 일반적으로 운영체제응용 프로그램처럼 하드웨어와 비교적 독립적인 소프트웨어입니다.
    • 예: 윈도우, 리눅스, 게임 소프트웨어 등

5. 한글은 펌웨어가 아님 ❌

한글은 소프트웨어입니다. 이는 하드웨어와 결합된 펌웨어와 달리, 독립적인 소프트웨어로 작동하기 때문에 펌웨어에 포함되지 않습니다. 한글은 일반적으로 운영체제에서 실행되는 프로그램이기 때문에, 하드웨어를 직접 제어하는 펌웨어와는 구분됩니다.


소프트웨어 관리 - 파일 압축과 풀기 📦💻

Linux 시스템에서는 다양한 도구를 사용하여 파일을 압축하거나 풀 수 있습니다. 이 과정은 주로 시스템 백업, 데이터 이동, 소스 코드나 패키지 설치 등에서 사용됩니다. 여기서는 tar, gzip, bzip2, zip 등 주요 명령어와 옵션들을 살펴보겠습니다.


1. tar (파일 묶기 및 압축) 🗂️

tar는 여러 파일을 하나의 파일로 묶거나 압축하여 용량을 줄이는 데 사용됩니다. 일반적으로 확장자가 ~.tar, ~.tar.gz, ~.tar.bz2로 끝나는 파일을 처리할 때 사용됩니다.

기본 사용법:

  • 파일 묶기: tar cvf test.tar A B C D
    • c: 묶기
    • v: 진행 상태 표시
    • f: 파일 이름 지정
  • 파일 묶고 압축하기: tar cvfz test.tar.gz A B C D
    • z: gzip으로 압축
  • 파일 풀기: tar xvf test.tar
    • x: 풀기
  • 압축된 파일 풀기: tar xvfz test.tar.gz
    • z: gzip으로 압축된 파일 풀기
  • bzip2 압축된 파일 풀기: tar xvfj test.tar.bz2
    • j: bzip2으로 압축된 파일 풀기
  • xz 압축된 파일 풀기: tar xvfJ test.tar.xz
    • J: xz으로 압축된 파일 풀기

주요 옵션:

  • p: 권한 정보 유지
  • h: 심볼릭 링크를 원본 파일로 묶기
  • C: 지정한 디렉터리로 압축 풀기
  • t: 묶인 파일 확인

2. gzipgunzip (파일 압축 및 해제) 🏋️‍♀️

gzip은 파일을 압축할 때 사용되며, 압축된 파일은 *.gz 확장자를 가집니다. gunzip은 압축을 푸는 명령어입니다.

기본 사용법:

  • 압축: gzip A
    • 결과: A.gz
  • 디렉터리 압축: gzip -r /root (디렉터리 내부 파일만 압축)
  • 압축 풀기: gunzip A.gz

3. bzip2bunzip2 (파일 압축 및 해제) 📉

bzip2는 *.bz2 확장자로 압축된 파일을 만들고, bunzip2는 이를 푸는 명령어입니다.

기본 사용법:

  • 압축: bzip2 A
    • 결과: A.bz2
  • 압축 풀기: bunzip2 A.bz2

4. zipunzip (파일 압축 및 해제) 📦

zip은 여러 파일을 하나로 묶어서 압축할 때 사용되며, unzip은 이를 푸는 명령어입니다.

기본 사용법:

  • 압축: zip test.zip A B C D
  • 압축 풀기: unzip test.zip

5. compressuncompress (파일 압축 및 해제) 🔥

compress는 *.Z 확장자를 가진 압축 파일을 만들고, uncompress는 이를 푸는 명령어입니다.

기본 사용법:

  • 압축: compress A
    • 결과: A.Z
  • 압축 풀기: uncompress A.Z

6. 압축 파일 유형 요약 📚

  • gzip: *.gz             →        gunzip으로 해제
  • bzip2: *.bz2         →        bunzip2로 해제
  • tar: *.tar               →         tar xvf로 해제
  • tar.gz: *.tar.gz      →         tar xvfz로 해제
  • tar.bz2: *.tar.bz2  →         tar xvfj로 해제
  • tar.xz: *.tar.xz       →        tar xvfJ로 해제
  • compress: *.Z      →        uncompress로 해제
  • zip: *.zip               →        unzip으로 해제

RPM (RedHat Package Manager) 📦🔧

RPM은 RedHat에서 개발한 오픈소스 패키지 관리 시스템으로, CentOS, Fedora, Rocky Linux, RedHat 계열의 Linux 배포판에서 주로 사용됩니다. RPM은 소프트웨어를 설치, 업데이트, 제거, 검증하는 데 사용되는 도구로, .rpm 형식의 패키지를 관리합니다.

RPM의 주요 특징:

  1. 이진 코드와 소스 코드 배포 🖥️🛠️
    • RPM 패키지에는 이진 파일(.rpm)뿐만 아니라 소스 코드(.src.rpm 또는 srpm)도 포함되어 있습니다.
    • 이 소스 코드를 기반으로 다른 개발자들이 프로그램을 개선하거나 자신의 환경에 맞게 수정하고 다시 빌드하여 RPM 파일로 만들 수 있습니다.
  2. 패키지 관리 시스템 🗃️
    • RPM은 RedHat 계열 시스템에서 기본적으로 사용하는 패키지 관리 시스템입니다.
    • 이 도구는 패키지의 설치, 업그레이드, 제거, 그리고 패키지에 포함된 파일 목록을 관리하는 데 유용합니다.
  3. 종속성 관리 ⚙️
    • RPM 패키지를 설치할 때 종속성 문제가 발생할 수 있습니다. YUM(Yellowdog Updater, Modified)은 이러한 종속성을 해결하고 RPM 패키지를 설치하는데 편리한 방법을 제공합니다.
    • YUM은 자동으로 필요한 라이브러리와 파일들을 설치하여 종속성 문제를 해결해 줍니다.

RPM 패키지 관련 파일 확장자:

  • .rpm: 이진 파일로, 설치가 바로 가능한 패키지입니다.
  • .src.rpm 또는 .srpm: 소스 코드 패키지로, 원래의 소스 코드가 포함되어 있어, 소스 코드를 수정하거나 빌드하여 새롭게 RPM 파일을 만들 수 있습니다.

RPM을 사용하는 이유 🤔

  • 소스 코드 배포: 소스 코드 배포를 통해 개발자들이 자신만의 개선을 하고, 이를 다시 배포하여 커스터마이징할 수 있습니다.
  • 소프트웨어 관리: RPM은 시스템에서 소프트웨어를 효율적으로 관리하고 설치할 수 있게 도와줍니다.
  • 종속성 처리: YUM과 같은 도구를 통해 RPM은 종속성 문제를 자동으로 해결합니다.

CPU 아키텍처 및 RPM 파일 구조 🖥️🔧

1. CPU 아키텍처
CPU 아키텍처는 컴퓨터의 처리 능력과 명령어 해석 방식을 정의하며, 각기 다른 CPU 아키텍처에 맞는 소프트웨어를 사용해야 합니다. 주요 CPU 아키텍처는 다음과 같습니다:

아키텍처 설명
x86, i386/i686 Intel 호환 32비트 CPU (Pentium, Athlon 등), Windows용. Intel 계열 CPU에서 사용.
x86_64 64비트와 32비트 모두 지원하는 Intel 호환 CPU (Athlon64, Intel Core 2 Duo 등). Windows용.
ppc Mac의 PowerPC 기반 CPU에서 사용, 주로 Macintosh 용.
noarch 특정 아키텍처에 의존하지 않으며, 라이브러리 파일이나 문서 등에서 사용.
sparc 계열 Oracle-SUN UNIX 서버에서 사용.
alpha 계열 Digital Alpha UNIX 서버에서 사용.
ARM Intel 계열 CPU보다 명령어 구조가 간단한 RISC 기반의 CPU, 휴대용 장치 및 서버에 주로 사용.

2. RPM 파일 구조
RPM 파일은 패키지 관리에서 중요한 역할을 하며, 파일 이름과 구성 요소를 이해하는 것이 중요합니다. 예를 들어, kernel-2.4.2-3kr.i386.rpm에서 다음과 같은 정보를 얻을 수 있습니다:

  • 패키지 이름: kernel
  • 주버전 (major): 2
  • 부버전 (minor): 4
  • 패치 버전 (patch): 2
  • 릴리즈 (release): 3kr
  • 아키텍처 (architecture): i386
  • 확장자 (extension): rpm

버전 관리:

  • Major (주버전): 중요한 변경 사항이 있을 때 증가.
  • Minor (부버전): 안정 버전은 짝수, 개발 버전은 홀수.
  • Upgrade: Major 버전이 변경될 때 수행.
  • Update: Minor 또는 Patch 버전이 변경될 때 수행.

3. RPM 명령어
RPM 패키지를 관리하는 다양한 명령어가 있습니다:

  • -i: 패키지 설치 (install).
  • -U: 패키지 업그레이드 또는 설치 (upgrade).
  • -e: 패키지 제거 (erase).
  • -v: 설치 과정을 자세히 표시 (verbose).
  • -h: 설치 진행 상태를 #로 표시 (hash).
  • --percent: 설치 진행 상태를 %로 표시.
  • -l: 패키지에 포함된 파일 보기.
  • -q: 설치된 패키지 검색 (query). 예: qa, qf, ql, qpl 등.
  • --force: 충돌을 무시하고 설치.
  • --nodeps: 의존성을 무시하고 설치.
  • --replacepkgs: 기존 패키지를 대체.
  • --replacefiles: 버전이 다른 기존 파일을 대체.

일반적인 설치 명령어:

  • rpm -ivh file_name.rpm: 패키지 설치 (verbose, hash 표시)
  • rpm -Uvh file_name.rpm: 패키지 업그레이드 또는 설치

1. RPM 패키지 서명 및 공개키 관리 🔑

  • GPG 서명 및 키 관리:
    • 각 RPM 패키지에는 서명된 공개키가 필요합니다. 공개키는 /etc/pki/rpm-gpg 디렉터리에 저장됩니다.
    • CentOS 설치 DVD에는 RPM 패키지에 대한 공개키가 RPM-GPG-KEY-CentOS-7 형태로 포함되어 있습니다.
    • 패키지의 서명을 확인하려면 rpm --checksig <패키지명.rpm> 명령어를 사용합니다.
    • 시스템에 GPG 키를 추가하려면 rpm --import /etc/pki/rpm-gpg 명령어를 사용합니다.

2. SSL 인증서 및 키 관리 🔒

  • SSL 관련 인증서:
    • SSL(Secure Socket Layer)을 설치하면 인증서와 키들이 /etc/pki/tls/ 디렉터리에 저장됩니다.
    • 이 디렉터리에는 https, sftp, smtps와 같은 SSL 인증서와 키가 저장됩니다.

3. SRPM, SPEC, RPM 빌드 파일 관계 📂

  • SRPM (Source RPM):
    • .src.rpm 확장자 파일은 소스 코드 파일로, RPM 패키지를 만드는 데 필요한 원본 소스 코드가 포함되어 있습니다.
    • 예시: bison-2.3-2.1.src.rpm
  • SPEC 파일:
    • .spec 확장자 파일은 rpmbuild 명령어로 RPM 파일을 만드는 데 필요한 설정 파일입니다.
    • 예시: bison.spec
  • RPM (Binary RPM):
    • .rpm 확장자 파일은 이미 컴파일된 이진 파일로, 시스템에 설치하여 사용할 수 있습니다.
    • 예시: bison-2.3-2.1.i386.rpm

4. RPM 빌드 명령어 사용 🛠️

  • rpmbuild 명령어:
    • rpmbuild 명령어로 RPM 패키지를 빌드할 수 있습니다. 주요 옵션은 다음과 같습니다:
      • -bb: SPEC 파일로부터 이진 패키지를 빌드.
      • -bs: SPEC 파일로부터 소스 패키지를 빌드.
      • -ba: 소스와 이진 패키지를 모두 빌드.
      • -tb: 타볼 파일로부터 이진 패키지를 빌드.
      • -ts: 타볼 파일로부터 소스 패키지를 빌드.
      • -ta: 타볼 파일로부터 소스와 이진 패키지를 모두 빌드.

5. RPM 빌드 및 설치 과정 🔄

  • 소스 패키지 설치: rpm -ivh bison.src.rpm
    • 소스 패키지를 풀면 rpmbuild 디렉터리가 생성되고, 그 안에 SOURCES와 SPECS 디렉터리가 있습니다.
  • SPEC 파일 수정:
    • SPECS 디렉터리 안에 있는 bison.spec 파일을 수정하여 필요한 대로 패키지를 조정합니다.
  • RPM 패키지 빌드:
    • 수정된 bison.spec 파일을 사용하여 RPM 패키지를 빌드합니다: rpmbuild -bb bison.spec
  • RPM 패키지 설치:
    • 최종적으로 bison.rpm 파일을 생성하고, 이를 설치합니다: rpm -ivh bison.rpm
반응형

'Linux' 카테고리의 다른 글

리눅스 과정 13일차  (1) 2025.03.06
리눅스 과정 11일차  (1) 2025.03.04
리눅스 과정 10일차  (0) 2025.02.28
리눅스 과정 8일차  (0) 2025.02.27
리눅스 과정 7일차  (0) 2025.02.26