일반적으로 리눅스 컴퓨터에서 새 프로그램을 설치할 경우, yum을 이용하는 것이 간단하고도 빠른 방법이 되겠다. 예를 들어, Octave를 설치한다면 다음과 같이 입력하면 된다.

[root@localhost ~]# yum install octave

그러나, 자신이 쓰고 있는 리눅스 배포판이 Centos (Community ENTerprise Operating System) 인 경우, 아래와 같은 메시지만 보게 되고, 설치가 되지 않는다. 

[root@localhost ~]# yum install octave
Loading "priorities" plugin
Loading "fastestmirror" plugin
Determining fastest mirrors
0 packages excluded due to repository priority protections

이러한 이유는 Octave 프로그램이 RHEL (Red Hat Enterprise Linux) 에 포함되지 않으면서, 자동적으로 Centos 에서도 배제되었기 때문이다. 하지만, 다행히도 EPEL (Extra Packages for Enterprise Linux) 로부터 Octave를 내려받을 수 있다. 이를 위해서, 우선 yum의 저장소 목록(repository list)에 EPEL을 추가하여야 한다.[각주:1] [각주:2]

현 저장소 목록에 등록되어 있는 저장소(repository)들을 확인해 보자.
[root@localhost ~]# yum repolist
Loading "priorities" plugin
Loading "fastestmirror" plugin
repo id                  repo name                                          status
addons                 CentOS-5 - Addons                             enabled
base                    CentOS-5 - Base                                 enabled
extras                   CentOS-5 - Extras                               enabled
updates                CentOS-5 - Updates                             enabled

그리고, 아래의 명령어로 yum 의 repo list 에 EPEL repository를 추가한다. 
[root@localhost ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
Retrieving http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
warning: /var/tmp/rpm-xfer.n5lIiD: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing...                ########################################### [100%]
   1:epel-release         ########################################### [100%]

이제 다시금 yum의 repo list 를 확인해 보면 epel 이란 ID로 EPEL repository가 추가되었음을 알 수 있다. 
[root@localhost ~]# yum repolist
Loading "priorities" plugin
Loading "fastestmirror" plugin
repo id                  repo name                                          status
addons                 CentOS-5 - Addons                             enabled
base                    CentOS-5 - Base                                 enabled
epel                     Extra Packages for Enterprise Linux 5 -   enabled
extras                   CentOS-5 - Extras                               enabled
updates                CentOS-5 - Updates                             enabled

실제로 하드 공간을 살펴보면, /etc/yum.repos.d 디렉토리 아래에 기존에 있던 CentOS-Base.repo 파일 외에 새로 epel.repo 생성되었음을 확인할 수 있다.
 
[root@localhost ~]# cat /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
...

이제 yum을 이용해서 Octave를 설치하자. yum install octave라고 아래와 같이 명령어를 친 후, Is this ok [y/N]를 보면 y를 입력하여 설치를 진행한다.

[root@meso src]# yum install octave
Loading "priorities" plugin
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
0 packages excluded due to repository priority protections
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package octave.i386 6:3.0.5-1.el5 set to be updated
--> Processing Dependency: libglpk.so.0 for package: octave
--> Processing Dependency: libcolamd.so.2 for package: octave
--> Processing Dependency: libccolamd.so.2 for package: octave
--> Processing Dependency: libcholmod.so.1 for package: octave
--> Processing Dependency: libhdf5.so.0 for package: octave
--> Processing Dependency: libfftw3.so.3 for package: octave
--> Processing Dependency: libqhull.so.5 for package: octave
--> Processing Dependency: libcamd.so.2 for package: octave
--> Processing Dependency: libumfpack.so.5 for package: octave
--> Processing Dependency: libamd.so.2 for package: octave
--> Processing Dependency: libcxsparse.so.2 for package: octave
--> Running transaction check
---> Package fftw3.i386 0:3.2.2-3.el5 set to be updated
---> Package glpk.i386 0:4.20-2.el5 set to be updated
---> Package suitesparse.i386 0:3.1.0-1.el5 set to be updated
---> Package hdf5.i386 0:1.6.10-1.el5 set to be updated
---> Package qhull.i386 0:2003.1-8.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================
 Package              Arch       Version          Repository        Size 
=============================================================================
Installing:
 octave                  i386       6:3.0.5-1.el5    epel               12 M
Installing for dependencies:
 fftw3                     i386       3.2.2-3.el5       epel              1.3 M
 glpk                      i386       4.20-2.el5        epel              737 k
 hdf5                      i386       1.6.10-1.el5     epel              4.6 M
 qhull                     i386       2003.1-8.el5     epel              380 k
 suitesparse             i386       3.1.0-1.el5      epel             931 k

Transaction Summary
=============================================================================
Install      6 Package(s)         
Update       0 Package(s)         
Remove       0 Package(s)         

Total download size: 20 M
Is this ok [y/N]: 

옥타브 설치를 완료하였다.
  1. http://jamesreubenknowles.com/how-to-install-octave-on-centos-5-using-yum-757 [본문으로]
  2. http://fedoraproject.org/wiki/EPEL/FAQ#howtouse [본문으로]
Posted by 참향그늘
,
http://www.gnu.org/software/octave/doc/interpreter/Function-Files.html#Function-Files

옥타브(Octave) 스크립트(script)를 실행하면, 스크립트에 적혀 있는 명령어(command)나 변수(variable)들을 순차적으로 옥타브가 실행한다. 이 때, 옥타브는 우선 이미 컴파일(compile) 되어서 부호표(symbol table)에 저장되어 있는 명령어, 변수부터 찾기 시작한다. 만약 여기서 찾을 수 없으면, 경로(path)에 나와 있는 디렉토리(directory) 아래에 있는 .m 파일들 중에서 명령어와 파일이름이 동일한 것으로 고른다.

옥타브 경로 변수는 DEFAULT_LOADPATH와 LOADPATH가 있다. DEFAULT_LOADPATH는 옥타브 내부적으로 내정한 값으로 일반 사용자가 건드리지 않는 것이 좋다. 옥타브 명령 창 (command window) 에  DEFAULT_LOADPATH 를 치고 엔터 키를 누르면 아래와 같이 콜론(:)으로 구분된 일련의 디렉토리들이 나열된다.

octave:1> DEFAULT_LOADPATH
DEFAULT_LOADPATH =.:/usr/local/libexec/octave/2.1.73/site/oct/i686-pc-linux-gnu//:/usr/local/libexec/
octave/site/oct/api-v13/i686-pc-linux-gnu//:/usr/local/libexec/octave/site/oct/i686-pc-linux-gnu//:/usr/local/
share/octave/2.1.73/site/m//:/usr/local/share/octave/site/api-v13/m//:/usr/local/share/octave/site/m//:/usr/local/
libexec/octave/2.1.73/oct/i686-pc-linux-gnu//:/usr/local/share/octave/2.1.73/m//

*.m 소스 파일들은 /usr/local/share/octave/2.1.73/m 디렉토리 아래에 들어 있다.

LOADPATH 는 사용자가 편집할 수 있는 경로로서 ~/.octaverc 파일에서 LOADPATH를 정의할 수 있다. 예를
들어, 개인 홈 디렉토리 아래 Codes/OctaveScripts 디렉토리 안에 옥타브 스크립트들이 있다면,
~/.octaverc 파일을 열어서 LOADPATH를 다음과 같이 정의한다.

LOADPATH = "::~/Codes/OctaveScripts//"

주의할 점은 두 개의 콜론을 반드시 넣어야 한다는 것이다. 이는 DEFAULT_LOADPATH에서 정의된 디렉토리들을 LOADPATH로 불러오기 위함이다. 이를 빠뜨리게 되면, 기본적인 명령어도 Octave가 이해하지 못하는 경우가 생긴다. 두 개의 콜론은 하나의 첫 콜론이나 하나의 마지막 콜론으로도 대체될 수 있다. 즉, 아래 표현들은 다 동일하다.

LOADPATH = "::~/Codes/OctaveScripts//"
LOADPATH = ":~/Codes/OctaveScripts//"
LOADPATH = "~/Codes/OctaveScripts//:"

위 예에서 // 는 OctaveScripts 자체 디렉토리 및 그 하위 모든 디렉토리를 의미한다.

옥타브 버전 3 부터는 직접 ~/.octaverc 파일을 건드리는 대신에 Octave 명령 창에서 path 관련 명령어를
이용하도록 바뀌었다.[각주:1] 예를 들어 ~/Octave 란 디렉토리를 Octave 검색 경로에 넣고 싶다면, 아래와 같이 입력한다.

octave:2> addpath("~/Octave")

디렉토리를 경로에서 지우고 싶으면 rmpath 명령어를 이용한다.

octave:3> rmpath("~/Octave")

옥타브의 검색 경로를 확인하고 싶으면 pathdef() 나 path 를 이용한다.

octave:4> pathdef()


  1. http://www.gnu.org/software/octave/NEWS-3.html [본문으로]
Posted by 참향그늘
,