피드로 돌아가기
Node.js BlogBackend
원문 읽기
소프트웨어 개발자가 $HOME/local 디렉토리 구조로 자체 컴파일 패키지를 관리하고 .zshrc에서 PATH, LD_LIBRARY_PATH, CPATH, PKG_CONFIG_PATH, MANPATH를 동적으로 설정해 개발 환경 구성의 유지보수 부담 제거
Development Environment
AI 요약
Context
package manager를 사용하지 않고 소프트웨어를 직접 컴파일할 때는 설치된 패키지의 경로와 환경 변수를 수동으로 관리해야 하므로 상당한 유지보수 비용이 발생한다.
Technical Solution
- 컴파일된 패키지를 시스템 디렉토리(/usr) 대신 $HOME/local/$PACKAGE 구조로 설치
- .zshrc 셸 설정에서 $HOME/local 하위의 모든 패키지를 자동 감지하는 반복문 추가
- 감지된 패키지의 bin, sbin, lib, include, lib/pkgconfig, share/man 디렉토리를 각각의 환경 변수(PATH, LD_LIBRARY_PATH, CPATH, PKG_CONFIG_PATH, MANPATH)에 자동으로 prepend
- Node.js의 경우 npm을 함께 설치하고, npm이 root 권한 없이 패키지 설치 가능하도록 구성
- npm을 development tool로 명확히 규정하고, 최종 배포 시에는 tarball, .deb, .rpm 등 시스템 패키지 포맷 사용
Key Takeaway
자체 컴파일 패키지의 경로 관리는 일회성 설정이 아니라 셸 설정에서 동적 감지 로직으로 자동화하면, 새로운 패키지 추가 시에도 수동 경로 설정이 불필요해진다. npm과 같은 development tool은 시스템 package manager와 명확하게 역할을 구분해야 개발 환경과 배포 환경 간의 혼선을 방지할 수 있다.
실천 포인트
소프트웨어 개발자가 자체 컴파일 도구(Node.js, Python, Go 등)를 여러 개 관리할 때, 각 패키지를 $HOME/local/$PACKAGE_NAME 구조로 통일하고 .bashrc 또는 .zshrc에서 반복문으로 PATH와 LD_LIBRARY_PATH를 자동 설정하면 패키지 추가 시마다 환경 변수를 수정할 필요가 없다.