[Node.js][TIL] 패키지 매니저(Package Manager)란?

Trippy·2023년 10월 31일
1

Node.js

목록 보기
1/28
post-thumbnail

패키지 매니저란?

  • 패키지 매니저는 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴이다.
  • 여기서 패키지를 다루는 작업이란 패키지를 설치, 업데이트, 수정, 삭제하는 작업을 의미한다.

패키지가 뭘까요? 어디에 쓰는 걸까요?

  • 패키지는 라이브러리(library)와 유사한 개념이다.

  • 라이브러리가 코드의 작성을 위해 사용되는 코드의 묶음이라면, 패키지는 코드의 배포를 위해 사용되는 코드의 묶음이다.

  • 따라서 패키지는 경우에 따라 라이브러리를 포함할 수도 있으며, 일반적으로 라이브러리나 실행 파일(executable)을 포함한다.

  • 패키지는 다음 3가지 정보를 가지고 있는 코드의 배포 단위이다.

    1) 컴파일한 소프트웨어의 바이너리(binary)

    2) 환경 설정(configuration)에 관련된 정보

    3) 의존(dependency)에 관련된 정보

Dependency란?

  • 많은 패키지들은 다른 패키지가 설치되어 있어야만 제대로 동작한다.

  • 이 경우에 기존 패키지를 제대로 동작시키기 위해 필요한 다른 패키지를 dependency라고 한다.

  • 따라서 패키지를 사용하고자 할 때 dependency에 해당하는 다른 패키지들은 전부 설치해줄 필요가 있다.

  • 하지만 그런 새로운 패키지들을 설치하는 도중 이번엔 설치하고 잇는 패키지의 dependency를 설치해야 하는 상황이 생길 수 있다

  • dependencydependency를 설치하는 경우가 생기며 이런 상황이 끊임없이 이어질 경우 사용자가 수동으로 패키지를 관리하기가 불가능에 가까워진다. 이런 상황을 dependency hell이라고 한다.

  • 따라서 각각의 패키지가 자신의 dependency에 대한 정보를 가지게 한다면, 사용자가 사용하고자 하는 패키지의 dependency를 패키지 매니저를 통해 쉽게 설치할 수 있다.

그럼 패키지 매니저는 dependency만 관리 할까?

  • 패키지 매니저가 공통적으로 수행하는 일

    1) 패키지의 dependency 관리

    2) 패키지의 보안관리 => 신뢰할 수 있고(authenticity), 손상되지 않음(integrity)를 보장

    3) 여러 패키지를 기능에 따라 그룹으로 묶어 정리

    4) 패키지 압축 해제

    5) software repository로부터 패키지를 찾고, 다운로드하고, 설치하고, 업데이트하는 과정을 아울러 관리하는 역할

Software repository는 뭘까?

  • 패키지를 저장하고 관리하는 저장소이다. => repos라고도 함

  • 커뮤니티에 기여하는 것을 목적으로 다른 사용자들을 위해 패키지를 등록할 수도 있다.

  • 성능 문제와 위기상황 대처를 위해 여러 개로 분리되어 있으며, 각각 저장소가 동일한 기능을 수행한다.

  • Software repository에 대한 위치 정보를 관리하는 환경 설정 파일이 존재하므로, 그 경로를 참고하여 software repository에 접근하는 방식을 사용한다.

패키지 매니저의 예

  • 패키지 매니저는 운영체제와 프로그래밍 언어에서 사용되는 툴이다.

  • Ubuntu 운영체제의 apt가 대표적인 운영체제 패키지 매니저의 예이다.

  • 예를 들어콘솔을 사용한 sudo apt-get install 명령어를 통해 패키지를 설치할 수 있다.

  • puthon과 PHP, Node.js등 많은 프로그래밍 언어들은 각각 자신만의 패키지 매니저의 software repository가 존재한다.

  • 여러 종류의 패키지 매니저와 software repository를 가진 언어도 존재한다.


참고한 자료

https://aahc.tistory.com/14


profile
감금 당하고 개발만 하고 싶어요

0개의 댓글