리눅스 패키지(Linux Packag)란 무엇인가?
리눅스 패키지(Linux Packag)를 윈도우와 비교하자면, 윈도우의 인스톨러 파일(.msi, .exe)는 소프트웨어를 설치하는 데 사용되며, 리눅스에서는 비슷한 개념으로 패키지 관리자를 이용하여 소프트웨어를 설치합니다. 리눅스 패키지는 실행파일, 라이브러리, 설정 파일 등을 하나의 패키지로 묶어 제공하며, 패키지 관리자를 통해 해당 패키지를 다운로드하고 시스템에 설치합니다.
윈도우의 인스톨러와 유사하게, 리눅스는 패키지 관리자를 통해 사용자가 소프트웨어를 쉽게 설치, 업데이트, 삭제할 수 있도록 도와줍니다. 이와 같이 사용자는 명령 줄을 통해 패키지 관리자를 사용하거나 그래픽 사용자 인터페이스를 통해 소프트웨어를 관리할 수 있습니다.
이러한 패키지 관리자를 통해 소프트웨어의 의존성 및 버전 관리를 수행하여 시스템을 효율적으로 유지할 수 있습니다.
✅ 리눅스 패키지(Linux Packag) 정의
리눅스 패키지는 실행 파일, 라이브러리, 설정 파일 등이 담겨 있는 설치 파일 묶음입니다. 패키지는 소스 패키지(Source Package)와 바이너리 패키지(Binary Package)로 구분하게 됩니다.
1. 소스 패키지(Source Package)
소프트웨어의 소스 코드를 포함하며, 이를 컴파일하여 실행 가능한 바이너리 파일로 변환해야 합니다. 소스 패키지를 사용하면 사용자가 컴파일 옵션을 변경하거나 특정 환경에 맞게 소프트웨어를 커스터마이징 할 수 있습니다.
바이너리 파일(binary file)은 컴파일 된 소스 코드나 기계어 코드를 포함하는 실행 가능한 파일(executable file)로서 텍스트 파일이 아닌 컴퓨터 파일이며, 이진 파일로 부르기도 합니다.
2. 바이너리 패키지(Binary Package)
이미 컴파일이 완료 된 바이너리 파일이 들어 있는 패키지 저장소입니다. 리눅스의 기본 설치 가능한 패키지들은 바이너리 패키지가 더 많습니다. 소스 패키지를 사용하는 것 이유는 일반적으로 고급 사용자나 소프트웨어 개발자, 시스템 관리자 등에게 유용합니다. 일반 사용자들은 주로 바이너리 패키지를 사용하여 더 편리하게 소프트웨어를 설치하고 관리하는 경향이 있습니다.
3. 소스 패키지를 사용하는 이유
소스 패키지를 선호하는 주된 이유는 다음과 같습니다.
✅ 종속성(의존성: Package Dependencies)
일부 패키지가 올바르게 작동하려면 사전 설치된 다른 소프트웨어가 필요할 수 있습니다. 패키지가 의존하는 리소스나 소프트웨어를 종속성이라고 합니다. 종속성에는 의존하는 코드를 작성하는 방법에 대한 메타데이터와 이를 포함하는 파일을 찾을 수 있는 위치에 대한 정보가 포함됩니다. 패키지 관리자는 이러한 모든 문제를 처리합니다.
패키지 파일을 설치, 수정, 업그레이드, 업데이트 및 제거하고 종속성 해결을 제공합니다. 종속성을 해결한다는 것은 PHP 버전 8.0이라는 필요한 소프트웨어가 있다고 가정하는 것을 의미합니다. PHP 버전 8.0이 필요한 다른 소프트웨어를 설치하려고 하는데 이로 인해 충돌이 발생한다면 이 소프트웨어의 설치를 진행하기 전에 충돌 문제를 해결해야 합니다.
✅ 패키지 관리 도구(Package Management Tool)
저수준 패키지 도구와 고수준 패키지 도구는 소프트웨어 패키지를 관리하는 데 사용되는 두 가지 유형의 도구입니다. 이 두 유형은 주로 다음과 같은 기능과 사용자층을 대상으로 설계되어 있습니다.
1. 저수준 패키지 도구 (Low-Level Package Management Tools)
2. 고수준 패키지 도구 (High-Level Package Management Tools)
고수준 패키지 관리 도구는 사용자에게 더 추상화 된 인터페이스를 제공하여 패키지를 쉽게 관리할 수 있도록 돕습니다. 이러한 도구들은 저수준 패키지 도구 위에서 작동하며, 보다 편리한 사용자 경험을 제공하고 시스템 유지보수를 용이하게 합니다. 고수준 패키지 도구는 패키지의 설치, 업데이트, 의존성 해결 등을 자동화하고 사용자 편의성을 높이는 데 중점을 둡니다.
✅ 리눅스 패키지 저장소(Linux Package Repository)
리눅스 패키지 저장소(Repository)는 소프트웨어 패키지들이 저장되어 있는 온라인 저장소(서버에 저장)입니다. 이 저장소는 사용자가 패키지 관리 도구를 통해 소프트웨어를 검색, 설치, 업데이트, 삭제할 수 있도록 패키지들을 호스팅하고 관리합니다. 리눅스 시스템은 이러한 저장소를 통해 필요한 소프트웨어를 손쉽게 관리할 수 있습니다.
저장소는 보통 다음과 같은 특징을 갖습니다
리눅스 패키지 저장소는 다음과 같은 기능을 제공합니다.