개발을 하는 우리는 항상 리눅스를 사용한다.
그런데, 사람들의 블로그 포스팅을 보면 항상 이해되지 않는 한 가지가 존재했다.
왜 어떤 사람은 yum을 쓰고 어떤 사람은 apt를 쓸까?
이 질문에서 패키지라는 것을 학습해봐야겠다는 생각이 들었다.
What is Package?
패키지는 소스코드 패키지
, 바이너리 패키지
로 분류된다. (저급언어/고급언어에 대해 안다면 이해가 쉬울 것 같다)
소스 패키지는 소스 코드로 이루어져 있는 패키지이다.
이를 읽고 실제로 컴퓨터에 적용시키려면 컴파일을 한 후 바이너리 코드를 컴퓨터에서 실행시켜야 한다.
그래서 설치가 더 오래걸린다는 단점이 존재한다.
또한, 하드웨어의 더 많은 저장공간을 차지한다고 한다.
그리고, 컴파일 에러가 발생할 수 있다는 단점이 있다.
바이너리 패키지는 반대로 이진 파일로 이루어져 있다.
컴퓨터에 바로 적용할 수 있고 더 가볍다고 한다.
더 빠른 운영체제의 설치를 위해 리눅스는 바이너리 패키지를 이용한 배포를 한다.
궁금증. NPM
(아직도 곰터뷰를 안가봤다고?)
네이버 부스트캠프에서 진행했던, 지금은 같이 하던 팀원들과 계속해서 진행중인 곰터뷰 서비스이다.
해당 프로젝트는 내가 살면서 처음으로 nest.js를 이용해 만든 서비스이다.
프론트엔드/백엔드를 막론하고 js는 수많은 라이브러리를 사용한다.
그리고 이런 라이브러리들을 npm을 이용해 가져와 사용한다.
npm을 통해 nodejs, nest말고도 수많은 라이브러리 패키지를 가져온다.
그리고 이런 라이브러리들을 사용하다가 모르는 부분이 있으면 cmd+클릭을 이용해 사용하고 있는
라이브러리의 코드들을 볼 수 있다.
그렇다면 이런 라이브러리들, 그리고 npm은 고급 언어로 되어있는 소스 패키지일까?
이 부분이 궁금해졌다.
어찌보면 당연하다.
소스코드로 이루어져있는 패키지니까.
그리고 이런 소스 패키지도 모두 소스코드로 이루어져있진 않다고 한다.
npm이나 yarn과 같은 것들로 다운로드해 사용할 때 일부 라이브러리는 미리 빌드된 바이너리 파일이 포함될 수 있다.
이를 통해 직접 수정해서 조금 느리더라도 자유롭게 사용할 수 있는 것들과, 미리 빌드되어 소스코드를 추가 빌드하지 않고 쉽게 사용할 수 있게 해준다.
각자의 장점이 있을 것이다.
- 소스 코드로 이루어진 패키지
- 이 경우에는 소스 코드가 직접 제공된다.
- 개발자는 이 소스 코드를 자유롭게 수정하고 커스터마이징할 수 있다.
- 수정이 가능하기 때문에 특정한 요구 사항에 맞게 소프트웨어를 사용할 수 있다.
- 하지만 이 소스 코드를 컴파일하고 빌드하는 과정이 필요하기 때문에 설치 과정이 느릴 수 있다.
- 바이너리 파일로 줄 경우 : 빠르게 적용되고 사용하기 쉽다. 하지만 수정은 못한다.
- 이 경우에는 라이브러리의 빌드된 실행 파일이 제공된다.
- 따라서 컴파일이나 빌드 과정이 필요하지 않다.
- 설치가 빠르고 사용하기 편리하며 수정이 불가능하다.
- 일반적으로 사용자는 해당 라이브러리를 그대로 사용하거나 설정 파일을 조정하여 사용한다.
아직 한발 남았다...
패키지라는 것에 대한 호기심은 풀었지만,
내 스스로의 요구사항에서는 조금 벗어난 학습이다.
나는 리눅스 yum, apt를 혼용하며 생긴 이슈에 대한 원인을 찾고싶은 것이었다.
이를 위한 학습을 추가로 진행해야겠다.
그럼...twenty thousand...🔥
'CS > 운영 체제' 카테고리의 다른 글
[운영체제] 리눅스 패키지(내가 맨날 헷갈린 apt쓸 때와 yum을 쓸 때) (1) | 2024.04.03 |
---|---|
[운영체제] 컴퓨터 구조 간단하게 정리해보기(부제. 왜 스왑 메모리가 느렸을까?) (0) | 2024.03.15 |
[운영체제] 주소지정 방식!(이거만 하고 진짜 컴퓨터구조와 운영체제를 봅시다) (0) | 2024.03.11 |
[운영체제] 소스코드 찍어먹기(부제 : 프로그래머스에서 js가 java보다 느린 이유?) (0) | 2024.03.06 |
[OS] 파일 시스템 (부제 : 익숙함에 속아 소중함을 잊지 말자) (0) | 2023.08.08 |