|
| 1 | +# Package Manager? |
| 2 | + |
| 3 | +패키지 매니저란, 패키지를 다루는 작업(설치, 업데이트, 수정, 삭제)을 편리하고 안전하게 수행하기 위해 사용되는 툴이다. |
| 4 | + |
| 5 | +## Package |
| 6 | + |
| 7 | +* 라이브러리와 유사한 개념 |
| 8 | + |
| 9 | + * 라이브러리: **코드의 작성**을 위해 사용되는 코드의 묶음 |
| 10 | + * 패키지: **코드의 배포**를 위해 사용되는 코드의 묶음 |
| 11 | + |
| 12 | +* 일반적으로 라이브러리나 실행파일(executable)을 포함 |
| 13 | + |
| 14 | +* 3가지 정보를 가지고 있는 코드의 배포단위 |
| 15 | + |
| 16 | + * 컴파일한 소프트웨어의 바이너리 |
| 17 | + |
| 18 | + * 환경설정(configuration)에 관련된 정보 |
| 19 | + |
| 20 | + * 의존(dependency)에 관련된 정보 |
| 21 | + |
| 22 | + > Dependency? |
| 23 | + > |
| 24 | + > * 기존 패키지를 제대로 동작시키기 위해 필요한 다른 패키지 |
| 25 | + > * 패키지를 사용하고자 할 때 dependency에 해당되는 다른 패키지들은 전부 설치해야함 |
| 26 | + > * dependency hell: dependency의 dependency를 설치하는 경우가 끊임없이 이어질 경우, 사용자가 수동으로 패키지를 관리하기가 불가능에 가까운 상황 |
| 27 | + > * 각각의 패키지가 자신의 dependency에 대한 정보를 가지게 한다면, 사용자가 사용하고자 하는 패키지의 dependency를 패키지 매니저를 통해 쉽게 설치하도록 도울 수 있다. |
| 28 | +
|
| 29 | +## Package manager |
| 30 | + |
| 31 | +- 패키지 매니저는 운영체제와 프로그래밍 언어에서 사용되는 툴이다. |
| 32 | +- Ubuntu 운영체제의 apt(Advanced Package Tool)가 대표적인 운영체제 패키지 매니저의 예다. |
| 33 | +- 예를 들어 콘솔을 사용한 sudo apt-get install 명령어를 통해 패키지를 설치할 수 있다. |
| 34 | +- Python과 PHP, Node.js 등 많은 프로그래밍 언어들은 각각 자신만의 패키지 매니저와 software repository를 가지고 있다. |
| 35 | +- 여러 종류의 패키지 매니저와 software repository를 가진 언어도 존재한다. (Node.js, Java, Ruby...) |
| 36 | + |
| 37 | +### 수행하는 일 |
| 38 | + |
| 39 | +1. 패키지의 dependency 관리 |
| 40 | +2. 패키지의 보안 관리 - 신뢰(authenticity), 무결성(integrity) |
| 41 | +3. 여러 패키지를 기능에 따라 그룹으로 묶어 정리 |
| 42 | +4. 패키지 압축 해제 |
| 43 | +5. Software repository로부터 패키지를 검색, 다운로드, 설치, 업데이트 |
| 44 | + |
| 45 | +### Package manager example |
| 46 | + |
| 47 | +| Language | Package manager | Software repository | |
| 48 | +| -------- | ----------------- | ------------------- | |
| 49 | +| Python | pip | PyPI | |
| 50 | +| PHP | Composer | Packagist | |
| 51 | +| Node.js | NPM, Yarn | NPM, Yarn | |
| 52 | +| Java | Maven, Gradle | Maven | |
| 53 | +| Ruby | RubyGems, Bundler | RubyGems, Bundler | |
| 54 | + |
| 55 | + |
| 56 | + |
| 57 | +### 참고 |
| 58 | + |
| 59 | +* https://aahc.tistory.com/14 |
0 commit comments