라이선스와 배포판 계열은 1급 단골 출제 영역이다. 출발점은 "공짜 소프트웨어"와 "오픈소스"가 역사적·철학적으로 다른 두 운동이라는 사실이다.
자유 소프트웨어(Free Software)
오픈소스(Open Source)
📚 유래/사례: 스톨먼이 자유 소프트웨어 운동을 시작한 계기는 사소한 사건이었다. MIT 시절 그는 제록스 프린터의 종이 걸림을 알려주는 기능을 추가하려 했지만, 제조사가 소스 코드 공개를 거부했다. "내 손에 있는 도구를 내가 고칠 수 없다"는 좌절이 평생의 운동으로 이어졌다. 작은 프린터 한 대가 거대한 자유 소프트웨어 운동의 씨앗이 된 셈이다.
💡 개념: "Copyleft"는 "Copyright"의 반대말 말장난이다. Right(오른쪽/권리)를 Left(왼쪽)로 뒤집어, 권리를 독점하는 대신 자유를 보존한다는 뜻을 담았다. FSF 로고에 "All rights reversed(모든 권리 역전)"라고 써 있는 것도 같은 농담이다.
라이선스는 크게 **카피레프트 계열(GPL)**과 **허용적(permissive) 계열(BSD, MIT, Apache)**로 나뉜다. 시험에서는 "파생물 공개 의무"의 유무를 정확히 구분하는 것이 핵심이다.
| 라이선스 | 계열 | 파생물 소스 공개 | 특징 |
|---|---|---|---|
| GPL | 강한 카피레프트 | 의무(전체) | 링크된 코드까지 GPL 강제 |
| LGPL | 약한 카피레프트 | 라이브러리만 | 동적 링크 시 비공개 앱과 결합 가능 |
| BSD | 허용적 | 의무 없음 | 저작권 표시만 유지하면 자유 사용 |
| MIT | 허용적 | 의무 없음 | 가장 간결, 상업적 폐쇄 소스 가능 |
| Apache 2.0 | 허용적 | 의무 없음 | 특허 보호 조항 포함 |
# 시스템에 설치된 패키지의 라이선스 정보 확인
# RPM 계열
rpm -qi bash | grep License
# Debian 계열 - 패키지 저작권 문서 위치
ls /usr/share/doc/bash/copyright⚠️ 함정: 시험에서 "LGPL 라이브러리를 동적 링크한 폐쇄 소스 프로그램은 소스를 공개해야 하는가?"라는 함정이 자주 나온다. 답은 공개하지 않아도 된다이다. LGPL의 핵심이 바로 이 점이다. 반면 GPL 라이브러리를 링크하면 전체를 공개해야 한다. "동적 링크 + LGPL = 비공개 가능"을 기억하자.
🔍 더 깊이: GPL에는 버전이 있다. GPLv2(1991)와 GPLv3(2007)가 대표적이다. GPLv3는 "Tivoization(하드웨어로 GPL 소프트웨어 수정을 막는 행위)"을 금지하고 특허 조항을 강화했다. 리누스 토르발스는 GPLv3의 일부 조항에 반대해 리눅스 커널을 여전히 GPLv2에 묶어두고 있다. 이는 리눅스 커널의 중요한 라이선스 특징이다.
Day 1에서 "리눅스는 커널만"이라 배웠다. 우리가 설치하는 우분투·CentOS는 배포판(distribution, distro), 즉 다음을 하나로 묶은 완제품이다.
리눅스 커널
GNU 시스템 도구(bash, coreutils, gcc 등)
패키지 관리 시스템(설치·업데이트·의존성 관리)
데스크톱 환경(GNOME, KDE 등, 서버판은 생략)
기본 응용 프로그램과 설정
배포판마다 철학과 대상이 다르다: 안정성 최우선 서버용, 최신 기술을 빠르게 도입하는 데스크톱용, 학습용, 보안 특화 등 수백 개.
시험에서 중요한 것은 **계열(family)**이다. 대부분의 배포판은 세 뿌리에서 갈라졌고, 같은 계열은 패키지 관리 방식과 디렉터리 구조가 비슷하다.
| 배포판 | 위치 | 설명 |
|---|---|---|
| RHEL | 상용 | 레드햇의 유료 엔터프라이즈 제품, 기술 지원 포함 |
| CentOS | 무료 클론 | RHEL 소스 기반 무료판(현재 CentOS Stream으로 전환) |
| Fedora | 선행 개발 | 최신 기술 테스트베드, RHEL의 상류(upstream) |
| Rocky/AlmaLinux | 무료 클론 | CentOS의 노선 변경 후 등장한 RHEL 호환 클론 |
| Amazon Linux | 클라우드 | AWS 최적화 RHEL 계열 |
rpm: 개별 .rpm 파일을 설치하지만 의존성을 자동 해결하지 못한다.yum(구버전)·dnf(신버전): 저장소(repository)에서 패키지와 의존성을 함께 내려받아 자동 설치.# 저수준 - 개별 패키지 파일 설치(의존성 수동)
rpm -ivh package.rpm # install, verbose, hash
rpm -qa # 설치된 모든 패키지 조회
rpm -e package # 패키지 제거
# 고수준 - 의존성 자동 해결(저장소 기반)
dnf install httpd # 또는 yum install httpd
dnf update # 전체 업데이트
dnf remove httpd
dnf search keyword📚 유래/사례: "Fedora"라는 이름은 레드햇 로고의 빨간 중절모(fedora hat)에서 왔다. Fedora는 레드햇의 실험실 역할을 한다. 여기서 검증된 최신 기술이 안정화되면 RHEL에 들어간다. 즉 Fedora → RHEL → CentOS(클론)로 기술이 흘러내려가는 구조다.
| 배포판 | 위치 | 설명 |
|---|---|---|
| Debian | 기반 | 안정성 극대화, 모든 데비안 계열의 뿌리 |
| Ubuntu | 데스크톱/서버 | 캐노니컬사가 만든 가장 대중적인 배포판 |
| Linux Mint | 데스크톱 | 우분투 기반, 사용 편의성 강조 |
| Kali Linux | 보안 | 데비안 기반 모의 침투 테스트 특화 |
| Raspberry Pi OS | 임베디드 | 라즈베리파이용 데비안 기반 |
dpkg: 개별 .deb 파일을 다루지만 의존성 자동 해결 불가.apt(또는 apt-get): 저장소에서 의존성까지 자동 처리.# 저수준 - 개별 패키지 파일(의존성 수동)
dpkg -i package.deb # 설치
dpkg -l # 설치된 패키지 목록
dpkg -r package # 제거
dpkg -L package # 패키지가 설치한 파일 목록
# 고수준 - 의존성 자동 해결(저장소 기반)
apt update # 저장소 패키지 목록 갱신
apt install nginx # 설치
apt upgrade # 업그레이드
apt remove nginx # 제거💡 개념: RPM 계열과 DEB 계열의 대응 관계를 표로 외워두면 시험에 매우 유용하다. 저수준:
rpm↔dpkg. 고수준(의존성 자동):dnf/yum↔apt/apt-get. 패키지 확장자:.rpm↔.deb. 이 대응을 묻는 문제가 거의 매 회차 출제된다.
| 배포판 | 위치 | 설명 |
|---|---|---|
| SLES | 상용 | SUSE Linux Enterprise Server, 기업용 |
| openSUSE | 무료 | 커뮤니티판(Leap: 안정, Tumbleweed: 롤링릴리스) |
zypper install apache2 # SUSE의 패키지 설치
zypper update # 업데이트
yast # 텍스트/GUI 통합 시스템 설정 도구🔍 더 깊이: SUSE는 RPM을 쓰지만 레드햇 계열로 분류하지 않고 독립 계열로 보는 것이 일반적이다. 패키지 "형식"(.rpm)과 패키지 "관리 도구"(zypper vs dnf), 그리고 시스템 관리 철학(YaST)이 모두 다르기 때문이다. 시험에서 "SUSE는 어떤 패키지 형식을 쓰는가"라는 함정 문제가 나오면 답은 RPM임에 주의하자. 계열은 다르지만 형식은 RPM이다.
rpm, dpkg)과 고수준(dnf, apt)이 따로 있는 이유는 의존성(dependency) 때문이다.apt install nginx 한 번이면 nginx가 필요로 하는 모든 라이브러리를 자동으로 찾아 함께 설치한다. 현대 리눅스 배포판이 쓰기 편한 핵심 이유다.⚠️ 함정:
rpm -ivh로 패키지를 설치하다 "Failed dependencies" 오류가 나는 것은 정상이다. 저수준 도구는 의존성을 해결하지 못하기 때문이다. 이때--nodeps옵션으로 강제 설치하면 프로그램이 깨질 수 있으므로, 의존성이 필요하면 반드시dnf/yum같은 고수준 도구를 써야 한다는 점이 출제 포인트다.
다음 시간에는 실제로 리눅스를 설치할 때 마주치는 파티션 설계, 부트로더 GRUB2, 그리고 전원을 켜는 순간부터 시스템이 살아나는 부팅 과정을 다룬다.
.rpm)이자 저수준 설치 명령..deb)과 그것을 다루는 저수준 명령.apt·dnf가 여기서 내려받는다.선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
다음 중 카피레프트(Copyleft)와 GPL 라이선스에 대한 설명으로 옳은 것은?
문제 2
폐쇄 소스 상업용 프로그램이 어떤 라이브러리를 동적 링크하여 사용하면서도 자신의 소스 코드를 공개하지 않을 수 있게 해주는 라이선스는?
문제 3
레드햇 계열과 데비안 계열의 패키지 관리 도구 대응 관계로 옳은 것은?
문제 4
다음 배포판과 그 계열의 연결이 옳지 않은 것은?
문제 5
SUSE 계열 배포판에 대한 설명으로 옳은 것은?
문제 6
자유 소프트웨어(Free Software) 운동에서 말하는 "Free"의 의미와 네 가지 자유에 대한 설명으로 옳은 것은?