(패키지라는 것이 무엇인지 알고 보는게 편하다. 이전 포스트를 보고오자.
리눅스에서는 리눅스 패키지라는 것이 존재한다.
리눅스 패키지란 리눅스 시스템에서 소프트웨어를 실행하는데 필요한 파일들(실행 파일, 설정 파일, 라이브러리 등)이 담겨 있는 설치 파일 묶음이다.
리눅스는 배포판에 따라 다른 패키지 형식을 지원한다.
여기에서 yum을 사용하는 경우와 apt를 사용하는 경우가 달라지게 된다.
- debian : ec2에서 사용하던 apt가 들어있다. 패키지는 .deb파일로 되어있다.
- 레드헷 : yum이 들어있다. 패키지는 .rpm파일로 되어있다.
- openSUSE : zypper이 들어있다고 한다. openSUSE를 위해 특별히 빌드된 패키지 형식이다. .rpm파일로 되어있다.
if(rpm(레드헷) === rpm(openSUSE)) 배표판_공유하기();
내가 스스로 해본 생각이다.
둘의 리눅스 배포판 패키지가 같은 확장자라면, 둘을 혼용할 수 있지 않을까? 라는 생각이 들었다.
openSUSE는 zypper이 들어있고, 특별히 빌드된 패키지라지만, 레드헷 배보판에서 같은 패키지 확장자니까
그래도 읽고 사용할 수 있긴 하지 않을까?
라는 생각을 해보았다.
두 배포판이 각각 고유한 라이브러리 버전, 컴파일 옵션 및 시스템 구성을 가지고 있기 때문에 둘의 리눅스 패키지를 공유할 수 없다고 한다.
이에 대한 더 자세한 이유는 아래에서 더 풀어보자.
패키지 관리 툴
일반적으로 운영체제에서는 패키지 관리 툴이라는 것이 존재한다.
패키지 관리 툴은 크게 저수준 툴, 고수준 툴로 나뉜다.
이 중에서 리눅스에 관해서 조금 더 깊게 찾아보자.
- 저수준 툴
- 리눅스 커널 (Linux Kernel)
- 리눅스의 핵심 부분으로, 하드웨어와의 통신을 관리하고 프로세스 간의 자원을 분배한다
- GNU Core Utilities
- 리눅스 시스템에서 핵심적인 유틸리티를 제공한다
- 이에는 파일 및 디렉토리 관리, 텍스트 처리, 셸 스크립팅 등을 위한 명령어들이 포함된다
- 시스템 라이브러리 (System Libraries)
- C 라이브러리 (libc) 등의 저수준 라이브러리는 시스템 호출 및 다양한 하드웨어 기능에 대한 접근을 한다
- 디바이스 드라이버 (Device Drivers)
- 하드웨어와 통신하기 위한 인터페이스를 제공한다
- 디스크, 네트워크, 그래픽 카드 등의 하드웨어를 제어한다
- 리눅스 커널 (Linux Kernel)
- 고수준 툴
- 커맨드 라인 인터페이스 (CLI) 도구
- 터미널을 통해 사용자가 명령어를 입력하여 시스템을 제어한다
- 예를 들어, ls, grep, sed, awk 등의 명령어들이 있다
- 패키지 관리자 (Package Manager)
- 리눅스 시스템에서 소프트웨어를 설치, 업데이트, 제거하는 데 사용된다
- 예를 들어, apt, yum, dnf 등이 있다
- 그래픽 사용자 인터페이스 (GUI) 도구
- 리눅스의 그래픽 환경에서 작동하며, 시스템 설정, 파일 관리, 응용 프로그램 실행 등을 위한 도구들을 제공한다
- GNOME, KDE, Xfce 등의 데스크톱 환경은 이러한 GUI 도구들이 있다
- 개발 도구 (Development Tools)
- 리눅스에서 소프트웨어 개발을 위한 도구들은 고수준 툴이다
- 통합 개발 환경 (IDE)인 Visual Studio Code, Vim, Emacs 등의 텍스트 편집기, 컴파일러, 디버거 등이 포함된다
- 커맨드 라인 인터페이스 (CLI) 도구
고수준 툴은 사용자 편의성을 높이기 위해 설계되었으며, CLI 도구와 GUI 도구를 통해 사용자가 리눅스 시스템을 더 효과적으로 관리할 수 있도록 도와준다.
리눅스 배포판 패키지의 종류는 패키지 관리자에서 크게 차이가 존재하게 된다.
배포판 이름 | 저수준 툴(설치, 업데이트, 삭제 등을 수행) | 고수준 툴(의존성의 해결, 패키지 검색 등의 기능) |
데비안 | dpkg | apt/apt-get |
레드헷 | rpm | yum |
openSUSE | rpm | zypper |
이렇게 보면 아까 말했던 두 rpm파일이 같이 공유될 수 없는 이유를 느낄 수 있었다.
패키지 설치/업데이트/삭제등은 같은 툴을 사용하지만, 고수준 툴이 다르다. 즉, 설치는 같게 해도 둘의 의존성 해결등의 문제는 서로 다른 로직을 사용해 해결한다는 것이다.
호기심. 그래서 뭐가 더 좋은데?
이에 대해 몇몇 게시물들을 찾아보았지만,
정확히 어떤게 더 좋다 라고 말하는 게시물은 찾지 못했다.
또한, 상황에 따라 혹은 환경에 따라 달라진다고 하는데,
그렇다면 일반적인 사용자의 입장에서는
이게 더 좋으니 뭐 써라
그럴바엔~~ 써라 같은 사유가 발생하기 힘들어진다는 느낌을 받았다.
리눅스 명령어가 왜 다를까 부터 시작해서
패키지의 구조 및 차이점을 찾아보고
리눅스 패키지의 배포판마다의 차이점을 다시 찾아보았다.
역시 궁금한건 그때그때 파보는게 재밌다.
다른 궁금해지는 것들이 있으면 찾아서 또 정리해야겠다.
그럼...twenty thousand...🔥
'CS > 운영 체제' 카테고리의 다른 글
[운영체제] 패키지(리눅스 배포 패키지, npm) (0) | 2024.04.03 |
---|---|
[운영체제] 컴퓨터 구조 간단하게 정리해보기(부제. 왜 스왑 메모리가 느렸을까?) (0) | 2024.03.15 |
[운영체제] 주소지정 방식!(이거만 하고 진짜 컴퓨터구조와 운영체제를 봅시다) (0) | 2024.03.11 |
[운영체제] 소스코드 찍어먹기(부제 : 프로그래머스에서 js가 java보다 느린 이유?) (0) | 2024.03.06 |
[OS] 파일 시스템 (부제 : 익숙함에 속아 소중함을 잊지 말자) (0) | 2023.08.08 |