system directory 정리

steadycode·2023년 1월 30일
0

여러 source code 를 빌드하다보면 library link 가 깨지는 현상이 발생함. 또한 library 를 sudo apt install 혹은 sudo dpkg 로 install 하거나 source code 로 빌드했을 경우. 빌드 이후에 설치되는 directory 가 변경되어 버전 관리에 많은 어려움이 발생함. 본 포스팅은 library 및 include file 빌드에 많이 사용되는 /usr 그리고 /usr/local 의 차이점에 대해 기술했음.


/usr/local and /usr

위 directory 는 둘 다 linux 같은 unix-like system에서 사용하는 top-level directory 임.

먼저 /usr/usr/local 은 거의 동일한 구조를 가지고 있음.

ls /usr

bin  games  include  lib  lib32  lib64  libexec  libx32  local  mpi  sbin  share  src
ls /usr/local

bin  doc  etc  games  include  lib  man  sbin  share  src  usr

그렇다면 두 개의 디렉토리는 어떤 차이가 있을까. 차이점은 다음과 같음


/usr

/usr 은 system 의 standard distribution 을 포함하고 있음. /usr 의 목적은 system-wide 한 파일들을 저장하고 관리하기 위한 목적으로 사용됨. executables, libraries, documentation, 그리고 다른 유저들과 system 에서 공유하기 위한 파일들을 관리함.

  • /usr/bin (for executables)
  • /usr/lib (for libraries)
  • /usr/share (for shared data)
  • /usr/include (for header files).

/usr 의 파일들은 system administrator 에 의해 관리되며, software upgrade 혹은 system 유지를 위해 업데이트 됨.

/usr/local

본 디렉토리는 standard distribution 에 포함되지 않은 software 들을 포함함. 따라서 system 에 'local' 하게 설치되는 소프트웨어들을 관리함. 따라서 'local' 하게 컴파일된 소프트웨어, third-party software 혹은 custom script 가 사용됨.

따라서 보통은, /usr/local 의 내용은 시스템 업그레이드를 하며 덮어쓰기가 되지 않으며 오직 /usr 만 덮어쓰기가 됨. 따라서 개발을 진행할 때, system upgrade 에 따라 변경되기 싫고, 버전을 유지하고 싶다면 /usr/local 디렉토리에 설치하는 것이 좋은 선택지임.

~/.local

추가적으로, 빌드를 하면서 홈 디렉토리에 다음과 같은 디렉토리를 확인할 수 있음. ~/.local 의 경우, 다른 유저의 사용을 '금지' 하고 오직 유저 본인만 접근할 수 있는 library, executables 들이 존재함. 그리고 system-level 에서도 사용할 수 없음.

profile
steadycode

0개의 댓글