배경 정보
배경 정보 (Background Information)
Octave 패키지는 전역(global) 또는 로컬(local)로 설치할 수 있어요. 어디에 설치되는지에 따라 관리자 권한이 필요할 수도 있고, 같은 패키지의 여러 버전을 나란히 깔 수도 있죠. pkg 시스템의 배경 지식을 Octave 매뉴얼 37.1절을 중심으로 정리해 볼게요.
본문
패키지는 시스템의 모든 사용자를 위해 전역(global) 으로, 또는 현재 사용자만을 위해 로컬(local) 로 설치할 수 있어요.
전역 패키지는 기본적으로 시스템 전체 위치에 설치됩니다. 이는 보통 Octave 자체가 설치된 폴더의 하위 디렉토리예요. 그래서 전역 패키지를 설치하려면 Octave가 이 폴더에 대한 쓰기 권한이 필요해요. 이 권한은 보통 Octave를 관리자 권한으로 실행할 때만 쓸 수 있죠. Unix 계열 시스템에서 root(또는 슈퍼유저)로 실행하거나, Windows에서 "관리자 권한으로 실행"으로 실행하는 경우가 그렇습니다.
반면 로컬 패키지는 기본적으로 사용자의 홈 디렉토리(Windows에서는 사용자 프로필)에 설치되고, 그 특정 사용자만 사용할 수 있어요. 보통 관리자 권한 없이도 설치할 수 있습니다.
Octave가 관리자 권한으로 실행되고 있으면 pkg는 기본적으로 전역 패키지 위치에 패키지를 설치해요. 그 외에는 로컬 위치에 설치됩니다. 사용자는 아래에서 설명하는 선택 인자(-local 또는 -global)로 이 기본 설치 위치를 재정의할 수 있어요. 현재 사용 중인 기본 패키지 설치 위치는 pkg prefix로 조회할 수 있어요.
전역 패키지와 로컬 패키지에는 각각 설치된 패키지 정보를 담는 별도의 데이터베이스가 있어요. 어떤 패키지가 전역으로도, 로컬로도 설치되어 있으면 로컬 설치가 전역 설치보다 우선("그림자", shadow)합니다. 어떤 (전역 또는 로컬) 패키지 설치를 사용할지는 prefix나 local_list 입력 인자를 써서 조작할 수도 있어요. 이러한 메커니즘을 쓰면 같은 패키지의 서로 다른 여러 릴리즈를 나란히 설치할 수도 있지만, 동시에 로드할 수는 없습니다.
패키지는 외부 소프트웨어나 다른 패키지에 의존할 수 있어요. 그런 패키지를 설치하려면 해당 의존성이 먼저 설치되어 있어야 합니다. 다른 패키지에 의존하는 패키지라도 -nodeps 플래그를 쓰면 여전히 설치할 수 있어요. 라이브러리 같은 외부 소프트웨어에 대한 충족되지 않은 의존성의 영향은 개별 패키지에 따라 달라요.
패키지는 사용하기 전에 반드시 로드되어야 해요. 패키지를 로드할 때 Octave는 다음 작업을 수행합니다.
- 패키지가 다른 패키지에 의존하고 있다면(
-nodeps옵션 없이pkg load를 호출하면), 패키지는 즉시 로드되지 않아요. 대신 그 의존성들이 먼저 로드됩니다 (필요하면 재귀적으로). - 모든 의존성이 충족되면, 패키지의 하위 디렉토리들이 검색 경로에 추가됩니다.
이 로드 순서 때문에 의존성이 제공하는 함수가 최상위 패키지가 제공하는 같은 이름의 함수에 의해 잠재적으로 그림자(shadow) 처리됩니다. 패키지가 검색 경로에 추가될 때마다, 패키지가 초기화 스크립트(s)를 제공한다면 그것들이 자동으로 실행됩니다.
더 알아보기
- octave-creating-packages — 패키지 만들기
- octave-external-packages — 외부 패키지 사용
- octave-installation — Octave 설치