자격증 정복/리눅스마스터

리눅스마스터 2급 필기 12 — 소프트웨어 설치 (rpm·yum·dpkg·apt·tar·소스 컴파일) 총정리

올드 IT직장인 2026. 10. 11. 08:30

리눅스마스터 2급 필기 12 — 소프트웨어 설치 (rpm·yum·dpkg·apt·tar·소스 컴파일) 총정리

출제기준: 2차 1과목 리눅스 운영 및 관리 > 소프트웨어 설치 (패키지 관리의 개념과 사용법, 아카이브 설치 및 제거)
기출 빈도: 2019~2023 기출 기준 약 8.0%.
에디터(7.3%)보다 높고, 거의 매 회차 2~3문제가 나오는 효자 단원입니다.
옵션 한 글자 차이로 정답이 갈리니, 짝으로 묶어 외우는 게 핵심입니다.


1. 패키지 관리의 큰 그림 ⭐⭐⭐⭐⭐

패키지 = 실행 파일 + 설정 파일 + 라이브러리 + 메타정보를 묶은 설치 단위입니다.

의존성(Dependency)은 "A가 돌아가려면 B가 먼저 있어야 한다"는 관계이고, 이게 꼬여서 설치가 안 되는 상황을 흔히 의존성 지옥이라고 부릅니다.

계열 대표 배포판 확장자 저수준 도구 (로컬 파일) 고수준 도구 (저장소·온라인)
레드햇 RHEL, CentOS, Fedora, Rocky .rpm rpm yum / dnf
데비안 Debian, Ubuntu, Mint, Kali .deb dpkg apt-get (apt)
SUSE openSUSE, SLES .rpm rpm zypper, YaST
  • 저수준(rpm·dpkg): 내 PC에 있는 파일을 설치. 의존성을 스스로 해결하지 못함.
  • 고수준(yum·dnf·apt-get·zypper): 네트워크 저장소(Repository)에서 내려받고 의존성을 자동 해결.

 

⚠️ 기출 함정 (반복 출제)

  • "온라인 패키지 관리 도구로 거리가 먼 것" → rpm, dpkg (둘 다 로컬 파일 도구)
  • "레드햇 계열 도구로 거리가 먼 것" → zypper (SUSE 계열)
  • "데비안 계열 도구 모음" → dpkg, apt-get
  • YaST는 패키지 관리도 하지만 하드웨어·네트워크·사용자까지 다루는 SUSE 통합 설정 도구입니다.

2. RPM ⭐⭐⭐⭐⭐

2-1. 파일명 구조

httpd-2.4.6-97.el7.centos.x86_64.rpm

구성 값 의미
패키지 이름 httpd  
버전 2.4.6 주.부.패치
릴리즈 97 패키지 자체의 수정 횟수
배포판 el7.centos Enterprise Linux 7용
아키텍처 x86_64 64비트 (i386=32비트, noarch=CPU 무관)

 

⚠️ 파일명 구성 요소에 압축 형식은 없습니다. 설치 정보 DB는 /var/lib/rpm 에 저장됩니다.

 

2-2. 설치·삭제 옵션 ⭐⭐⭐⭐⭐

옵션 의미 포인트
-i Install 신규 설치
-U Upgrade 업그레이드 (없으면 새로 설치도 수행)
-F Freshen 이미 설치돼 있을 때만 업그레이드
-e Erase 삭제
-v Verbose 과정 자세히 출력
-h Hash 진행 상황을 # 기호로 표시
--nodeps   의존성 검사 무시
--force   이미 설치돼 있어도 강제 진행

 

자주 쓰는 조합: rpm -ivh 패키지.rpm / rpm -Uvh 패키지.rpm / rpm -e nmap --nodeps

 

⚠️ 기출 함정

  • 삭제는 -d, -r, erase, delete가 아니라 -e 입니다. (rpm erase, rpm delete는 없는 명령)
  • "의존성 검사 무시" = --nodeps (--force와 헷갈리지 마세요)
  • 설치 진행 상황을 #로 보여주는 건 -h (-v는 상세 출력)
  • RPM의 용도: 설치·삭제·업그레이드·질의·검증. "설치된 소프트웨어 실행"은 RPM의 기능이 아닙니다.

 

2-3. 질의(Query) 옵션 ⭐⭐⭐⭐⭐

옵션 의미 대상
-qa query all — 설치된 전체 패키지 목록 설치됨
-qi query info — 상세 정보 설치됨
-ql query list — 패키지에 포함된 파일 목록 설치됨
-qf 파일경로 query file — 이 파일이 어느 패키지 소속인지 설치됨
-qp 파일.rpm query package — 미설치 rpm 파일 정보 미설치

예: rpm -qf /bin/ls → ls를 설치한 패키지명 (기출 정답: -qf)

 

2-4. 검증 — rpm -V ⭐⭐⭐⭐

설치된 파일의 현재 상태를 설치 당시 원본 정보와 비교합니다.

변경된 항목은 해당 자리에 문자가 표시되고, 변경이 없으면 . 입니다.

코드 의미 코드 의미
S Size 크기 U User 소유자
M Mode 권한 G Group 그룹
5 MD5 체크섬(내용) T Time 수정시간
D Device 주/부 번호 L Link 심볼릭 링크

암기: S M 5 D L U G T 순서. 보안 업무에서 바이너리 변조 여부를 점검할 때 실제로 쓰는 기능입니다.
참고: 서명 확인은 rpm -K(--checksig), 공개키 등록은 rpm --import.


3. YUM / DNF ⭐⭐⭐⭐⭐

3-1. 개념과 설정 파일

  • yum(Yellowdog Updater Modified)은 rpm의 의존성 문제를 자동 해결하기 위해 등장했습니다.
  • dnf는 yum의 차세대 도구입니다. 명령 체계는 거의 같고, RHEL 8 이후에는 yum이 dnf로 연결돼 있습니다.
경로 설명
/etc/yum.conf yum 전체 동작(로그, 공통 옵션)
/etc/yum.repos.d/ 저장소 정보(.repo) 디렉터리

 

3-2. 명령어 ⭐⭐⭐⭐⭐

명령 설명
yum install 패키지 설치 (의존성 자동 해결)
yum update [패키지] 업데이트 (생략 시 전체)
yum remove 패키지 삭제
yum check-update 업데이트 가능 목록
yum list 전체 패키지 목록
yum info 패키지 상세 정보 (≈ rpm -qi)
yum search 키워드 키워드로 패키지 검색 (와일드카드 불필요)
yum provides 파일 파일이 속한 패키지 (≈ rpm -qf)
yum grouplist / groupinstall '그룹' 패키지 그룹 조회 / 설치
yum history 작업 이력 확인
yum clean all 캐시 전체 삭제

 

옵션: -y = 모든 질문에 yes. 예) yum -y install telnet-server

 

⚠️ 기출 함정

  • 설치 명령의 순서는 yum install 패키지명. yum nmap install, yum -i nmap은 틀린 형식입니다.
    (-i는 rpm 옵션)
  • CentOS 7에서 텔넷 서버 패키지명은 telnet-server (하이픈!)
  • 확장 저장소(EPEL)를 쓰려면 먼저 epel-release 패키지를 설치합니다.

4. dpkg / apt-get ⭐⭐⭐⭐⭐

4-1. dpkg (저수준)

옵션 의미
-i 설치 (dpkg -i 파일.deb, --install도 동일)
-r Remove — 삭제, 설정 파일은 남김
-P Purge — 삭제 + 설정 파일까지 완전 삭제
-l 설치된 패키지 목록
-L 패키지에 포함된 파일 목록
-s 설치된 패키지의 상태
-c 미설치 .deb 내부 파일 목록

 

4-2. apt-get (고수준)

명령 설명
apt-get update 저장소 목록(인덱스) 갱신 (설치 아님!)
apt-get upgrade 설치된 패키지를 최신 버전으로
apt-get install 이름 설치 (의존성 자동)
apt-get remove 이름 삭제 (설정 파일 유지)
apt-get purge 이름 삭제 + 설정 파일까지
apt-get autoremove 불필요해진 의존성 패키지 정리
apt-get clean 내려받은 .deb 캐시 삭제
apt-get dist-upgrade 의존성 변화를 고려한 업그레이드

 

옵션: -y yes 자동 응답 / -s 시뮬레이션(실제 변경 없음) / -d 다운로드만 / --reinstall 재설치

 

경로 설명
/etc/apt/sources.list 저장소 주소 목록
/var/cache/apt/archives/ 내려받은 .deb 캐시
/var/lib/apt/lists/ update로 가져온 패키지 정보

 

⚠️ 기출 함정

  • "설정 파일까지 포함해서 vsftpd 제거" → apt-get purge vsftpd
    (remove와 erase는 설정 파일 유지, delete는 없는 명령)
  • "update는 설치"가 아닙니다. 목록 갱신일 뿐입니다.

5. 짝으로 외우는 대응표 ⭐⭐⭐⭐⭐

하려는 일 rpm yum dpkg apt-get
설치 -i install -i install
삭제 -e remove -r remove
완전 삭제 (없음) — -P purge
전체 목록 -qa list -l —
상세 정보 -qi info -s —
파일 목록 -ql — -L —
파일→패키지 -qf provides — —
미설치 파일 조회 -qp — -c —
의존성 해결 ❌ ✅ ❌ ✅

6. 아카이브와 압축 ⭐⭐⭐⭐⭐

아카이브 = 이삿짐을 한 상자에 담는 것 (부피는 그대로, 권한·소유권·타임스탬프 보존)
압축 = 상자 안의 짐을 진공 포장해 부피를 줄이는 것
tar는 상자 담기(묶기)만 하고, 압축은 gzip 등과 결합합니다. 그래서 .tar.gz가 됩니다.

 

6-1. tar 옵션 ⭐⭐⭐⭐⭐

옵션 의미 포인트
-c create 새 아카이브 생성
-x extract 묶음 해제
-t list 풀지 않고 목록만 확인
-r append 기존 아카이브에 파일 추가
-u update 더 최신 파일일 때만 교체
-A concatenate 두 .tar 병합
-v verbose 과정 출력
-f file 파일명 지정 (항상 옵션 맨 마지막)
-C directory 해제 위치 지정
-z gzip .tar.gz
-j bzip2 .tar.bz2
-J xz .tar.xz (대문자)
-Z compress .Z (대문자)
--exclude   특정 파일 제외
-p   권한·소유권 유지
-P   맨 앞 / 제거하지 않고 절대 경로 저장

 

 

자주 쓰는 조합

tar cvf  backup.tar 대상            # 묶기
tar czvf backup.tar.gz 대상         # 묶기 + gzip
tar cjvf backup.tar.bz2 대상        # 묶기 + bzip2
tar tvf  backup.tar                 # 목록 확인
tar xvf  backup.tar                 # 풀기
tar xvf  backup.tar -C /usr/local/src   # 다른 위치에 풀기
tar Jxvf linux-5.13.4.tar.xz        # xz 해제
tar cvf source.tar *.c              # 현재 디렉터리의 .c 파일만 묶기

 

 

⚠️ 기출 함정

  • tar cvf 생성될파일 대상 순서입니다. tar cvf *.c source.tar는 틀립니다. (파일명이 -f 바로 뒤)
  • cvf(생성) / xvf(해제) / tvf(목록) / rvf(추가) 4종을 구분해서 묻습니다. rvf는 -x가 아니라 -r(추가)입니다.
  • .bz2 목록 확인 = jtvf (j=bzip2, t=목록). 해제는 jxvf.
  • xz에 연동하는 tar 옵션 = -J (-z=gzip, -Z=compress)

 

6-2. 압축 도구 비교 ⭐⭐⭐⭐⭐

도구 알고리즘 확장자 압축 해제 tar 옵션 내용 확인
compress LZW .Z compress uncompress -Z zcat
gzip DEFLATE .gz gzip gunzip / -d -z zcat · zless · zmore
bzip2 Burrows-Wheeler .bz2 bzip2 bunzip2 / -d -j bzcat · bzless · bzmore
xz LZMA2 .xz xz unxz / -d -J xzcat · xzless · xzmore

압축률: xz > bzip2 > gzip / 속도: gzip이 가장 빠름 (반대 방향)
압축하면 원본이 삭제되고 확장자 파일이 생깁니다.
원본을 유지하려면 -k (bzip2·xz, 최신 gzip) 또는 -c로 표준출력 리다이렉션.

 

 

⚠️ 기출 함정 — "gzip 압축 파일의 내용을 풀지 않고 볼 때 아닌 것" → ztail (zcat·zless·zmore만 존재)


7. 소스코드 설치 ⭐⭐⭐⭐

패키지가 아니라 소스를 내 환경에서 직접 컴파일해 설치하는 방식입니다.

최신 기능을 쓰거나, 특정 모듈을 넣고 빼는 최적화가 필요할 때 사용합니다.

7-1. 표준 3단계

소스 tarball 내려받기 → tar xvf 로 해제 → 해당 디렉터리로 이동
   ① ./configure      환경 검사, 설치 경로 지정   → Makefile 생성
   ② make             컴파일                       → 바이너리 생성 (가장 오래 걸림)
   ③ make install     시스템 경로로 복사           → 설치 완료
단계 결과물
./configure Makefile (기출: "Makefile이 생성되는 단계" → configure)
make 목적 파일(.o), 실행 파일
make install /usr/local/bin, /usr/local/lib 등에 설치
  • 설치 경로 지정: ./configure --prefix=/usr/local/apache
  • make clean: 컴파일로 생긴 목적 파일 등을 지우고 다시 설정부터 깨끗하게 진행할 때
    (기출: "make init/zero/neat"는 없는 명령)
  • 소스 설치는 패키지 DB에 등록되지 않아 rpm/dpkg로 추적할 수 없습니다. 관례상 /usr/local 하위에 설치합니다.

 

7-2. CMake

./configure 대신 쓰는 빌드 시스템 생성기입니다.

소스 폴더와 빌드 결과물 폴더를 분리하는 Out-of-Source 빌드가 특징입니다.

mkdir build && cd build
cmake ..          # 상위 디렉터리의 CMakeLists.txt를 읽어 Makefile 생성
make
make install

configure ↔ cmake .. 는 둘 다 Makefile을 만드는 1단계이고, 이후 make / make install은 같습니다.
(교재 기준 MySQL은 CMake, Apache·PHP·Nmap은 전통적 configure)


기출 문제 Q&A

Q. rpm 명령으로 의존성 있는 nmap 패키지를 제거하는 명령은?
A. rpm -e nmap --nodeps — 삭제는 -e, 의존성 무시는 --nodeps.

 

Q. /bin/ls를 설치한 패키지명을 확인하는 rpm 옵션은?
A. -qf (-qi 정보 / -ql 파일 목록 / -qa 전체 목록)

 

Q. 데비안 계열에서 환경 설정 파일까지 포함해 vsftpd를 제거하는 명령은?
A. apt-get purge vsftpd

 

Q. 소스 설치 과정 중 Makefile이 만들어지는 단계는?
A. configure (cmake도 Makefile을 만들지만, "소스 설치 표준 단계"에서는 configure)

 

Q. 현재 디렉터리의 C 파일만 source.tar로 묶는 명령은?
A. tar cvf source.tar *.c

 

Q. tar로 묶으면서 동시에 bzip2로 압축하는 방법은?
A. tar -cjvf — j가 bzip2, z는 gzip.

 

Q. 다음 중 온라인 패키지 관리 도구로 거리가 먼 것은? (dnf / dpkg / zypper / apt-get)
A. dpkg — 로컬 파일 기반 도구입니다. (rpm도 같은 이유)

 

Q. 소스 설치 후 설정을 지우고 처음부터 다시 하고 싶을 때 쓰는 명령은?
A. make clean


💡 실무에서는?

운영 서버에서는 패키지 설치 전에 yum list/yum info로 버전을 확인하고, 업데이트 전에는 yum history로 언제 무엇을 바꿨는지 남겨 둡니다. 장애가 나면 yum history undo로 롤백이 가능한 경우가 많거든요. (dnf도 동일)

 

보안 쪽에서는 rpm -V 패키지명을 무결성 점검에 씁니다.

침해 사고가 의심될 때 /bin/ls, /usr/bin/ssh 같은 핵심 바이너리가 변조됐는지 5(체크섬), S(크기), T(시간) 변화를 보는 거죠. 폐쇄망이라면 /etc/yum.repos.d/의 .repo 파일을 사내 미러로 돌려서 외부 저장소 없이 패치를 관리합니다.

 

소스 설치는 편하지만 패키지 DB에 안 남아서 나중에 누가 뭘 깔았는지 추적이 안 됩니다.

꼭 필요하면 /usr/local 하위에 설치하고 설치 기록을 문서화해 두세요.


핵심 정리

✅ 레드햇: rpm(저수준) → yum/dnf(고수준) / 데비안: dpkg → apt-get / SUSE: zypper·YaST
✅ 저수준은 의존성 해결 불가, 고수준은 저장소에서 자동 해결 (rpm·dpkg는 온라인 도구 아님)
✅ rpm -i 설치 / -U 업그레이드(없으면 설치) / -F 있을 때만 / -e 삭제 / -h # 표시 / --nodeps
✅ rpm -qa 전체 / -qi 정보 / -ql 파일목록 / -qf 파일→패키지 / -qp 미설치 rpm
✅ rpm -V 검증: S M 5 D L U G T
✅ yum install / remove / search / info / provides / history / clean all
✅ yum 설정: /etc/yum.conf, /etc/yum.repos.d/ — apt 저장소: /etc/apt/sources.list
✅ dpkg -i 설치 / -r 삭제(설정 유지) / -P 완전삭제 / -l 목록 / -L 파일 / -c 미설치 deb
✅ apt-get update(목록 갱신) vs upgrade / remove(설정 유지) vs purge(설정까지)
✅ tar: c 생성 / x 해제 / t 목록 / r 추가 / f 파일명(맨 뒤) / C 위치 / z=gzip j=bzip2 J=xz
✅ 압축률 xz > bzip2 > gzip / 보기: zcat·bzcat·xzcat
✅ 소스 설치: ./configure(→Makefile) → make → make install / make clean / cmake ..

다음 편 예고: 13편은 장치 설정입니다.

프린터(CUPS)부터 장치 파일, 하드웨어 설정까지 — 1과목의 마지막 단원이에요!

 

궁금한 점은 댓글로 남겨주세요!

반응형
개인정보처리방침  |  블로그 소개