패키지 만들기
패키지 만들기 (Creating Packages)
Octave 패키지는 내부적으로 gzipped tar 파일이에요. 그 안에는 최상위 디렉토리가 있고, 필요한 파일들과 선택적인 파일들이 함께 들어가죠. 패키지가 어떤 구조를 갖는지 Octave 매뉴얼 37.5절을 정리해 볼게요.
본문
내부적으로 패키지는 단순히 임의의 이름을 가진 최상위 디렉토리를 포함하는 gzipped tar 파일이에요. 이 디렉토리를 이하에서는 package라고 부르겠고, 다음 파일들을 포함할 수 있어요.
- package/CITATION — 출판 시 패키지를 어떻게 인용해야 하는지 설명하는 선택 파일.
citation함수가 이를 그대로 표시해요. - package/COPYING — 패키지의 라이선스를 담은 필수 파일. 일반적으로 라이선스에는 제한이 없지만, 패키지에 동적 연결 함수가 포함되어 있으면 라이선스가 GNU General Public License와 호환되어야 해요.
- package/DESCRIPTION — 패키지에 대한 정보를 담은 필수 파일. 자세한 내용은 The DESCRIPTION File 참고.
- package/ChangeLog — 패키지 소스 파일에 가해진 모든 변경을 설명하는 선택 파일.
- package/INDEX — 패키지가 제공하는 함수를 설명하는 선택 파일. 이 파일이 주어지지 않으면 패키지의 함수와 DESCRIPTION 파일의 Categories 키워드로부터 자동으로 만들어져요. 자세한 내용은 The INDEX File 참고.
- package/NEWS — 언급할 만한 사용자에게 보이는 변경을 모두 설명하는 선택 파일. 이 파일의 크기가 커지면 이전 항목들을 package/ONEWS로 옮길 수 있어요.
- package/ONEWS — NEWS 파일의 이전 항목들을 설명하는 선택 파일.
- package/PKG_ADD — 패키지가 사용자 경로에 추가될 때 실행되는 명령을 담은 선택 파일. 패키지 소스 코드의 PKG_ADD 지시문도 Octave 패키지 관리자가 이 파일에 추가한다는 점을 유의하세요. 또 패키지에서는 심볼릭 링크를 피해야 하는데, 심볼릭 링크는 일부 파일 시스템에 존재하지 않기 때문이에요. 그래서 이 파일의 전형적인 용도는 심볼릭 링크
ln -s foo.oct bar.oct
를 다음과 같은 autoload 지시문으로 대체하는 것이에요.
autoload ('bar', which ('foo'));
자세한 내용은 PKG_ADD and PKG_DEL Directives 참고.
- package/PKG_DEL — 패키지가 사용자 경로에서 제거될 때 실행되는 명령을 담은 선택 파일. 패키지 소스 코드의 PKG_DEL 지시문도 Octave 패키지 관리자가 이 파일에 추가한다는 점을 유의하세요. 자세한 내용은 PKG_ADD and PKG_DEL Directives 참고.
- package/pre_install.m — 패키지 설치 전에 실행되는 선택 함수. 이 함수는 DESCRIPTION의 데이터 이름을 딴 필드를 가진 구조체 하나와 패키지 함수가 설치될 경로들을 인자로 호출됩니다.
- package/post_install.m — 패키지 설치 후에 실행되는 선택 함수. 이 함수는 DESCRIPTION의 데이터 이름을 딴 필드를 가진 구조체 하나와 패키지 함수가 설치된 경로들을 인자로 호출됩니다.
- package/on_uninstall.m — 패키지 제거 전에 실행되는 선택 함수. 이 함수는 DESCRIPTION의 데이터 이름을 딴 필드를 가진 구조체, 패키지 함수가 설치된 경로들, 그리고 패키지가 현재 로드되어 있는지 여부를 인자로 호출됩니다.
위에 언급한 파일들 외에도 패키지는 다음 디렉토리 중 하나 이상을 포함할 수 있어요.
- package/inst — 패키지가 직접 설치하는 파일이 들어 있는 선택 디렉토리. 보통 모든 m-파일이 여기 포함됩니다.
- package/src — 패키지 설치 전에 빌드해야 하는 코드가 들어 있는 선택 디렉토리.
./configure스크립트가 이 디렉토리에 있으면 Octave 패키지 관리자가 그것을 실행하고, 이 디렉토리에Makefile이 있으면make를 호출해요. 다만make install은 호출되지 않습니다.configure와make가 호출될 때 환경 변수MKOCTFILE,OCTAVE_CONFIG,OCTAVE가 올바른 버전의mkoctfile,octave-config,octave프로그램의 전체 경로로 설정됩니다.FILES라는 파일이 있으면 그곳에 나열된 모든 파일이inst디렉토리로 복사되어 역시 설치돼요.FILES파일이 없으면src/*.m과src/*.oct가inst디렉토리로 복사됩니다. - package/doc — 패키지에 대한 문서를 담은 선택 디렉토리. 이 디렉토리의 파일들은 설치된 패키지의 하위 디렉토리에 직접 설치되어 나중에 참조할 수 있어요. Octave GUI가 실행 중이면, 선택적 Qt 도움말 파일
package/doc/pkg-name.qch가 패키지 로드 중에 문서 브라우저에 추가됩니다. 도움말 파일은 패키지가 언로드될 때 문서 브라우저에서 제거돼요. - package/bin — 패키지가 로드될 때 Octave의
EXEC_PATH에 추가될 파일들이 들어 있는 선택 디렉토리. 패키지 안의 함수가 호출하는 외부 스크립트 등을 포함할 수 있어요.
이어지는 절인 The DESCRIPTION File, The INDEX File, PKG_ADD and PKG_DEL Directives, Missing Components 에서 각 파일의 세부 내용을 다룹니다.
더 알아보기
- octave-background-information — 패키지 설치의 배경 지식
- octave-external-packages — 외부 패키지 사용
- octave-installation — Octave 설치