우분투 12.04 bash에서 g95 compiler 경로 설정

안녕하세요?

g95 compiler를 설치하고 bash 환경변수에서 경로를 설정해주었는데 실행을 하면 다음과 같은 에러가 뜹니다.

[b:3ma8fofo]g95: installation problem, cannot exec ‘f951’: No such file or directory[/b:3ma8fofo]

설치 과정 중이나 경로 설정에서 잘못한 것이 있을까요?
구글을 뒤져도 답을 찾지 못해 글을 남깁니다. 부탁드립니다.

설치과정중에 사용한 명령어는
[b:3ma8fofo]tar -xzvf g95-x86-linux.tgz
ln -s /usr/local/bin/g95/g95-install/bin/i686-pc-linux-gnu-g95 /bin/g95[/b:3ma8fofo]

bash 환경변수에서 경로는
[b:3ma8fofo]# g95
export PATH=$PATH:/bin[/b:3ma8fofo]

이렇게 하였습니다.

우선 소스인지 바이너리 인지 먼저 확인 하십시오.

바이너리라면 아래를 참조 하십시오.

[code:3uzapzke]ln -s /usr/local/bin/g95/g95-install/bin/i686-pc-linux-gnu-g95 /bin/g95 (wrong)
ln -s /usr/local/bin/g95/g95-install/bin/i686-pc-linux-gnu-g95 ~/bin/g95 (correct)[/code:3uzapzke]

일단 deb 패키지를 제공하고 있는 데 바이너리를 설치하셨는지 조금 의문이오나
터미널에서 $PATH를 치면 전체 패스를 확인 할 수 있습니다.

"~/bin"은 홈의 bin 디렉토리이므로 path가 존재하는지 확인해 보십시오.
우분투는 일반적으로 ~/.local/bin 에 패스가 걸려 있습니다.(맞나요? 수세랑 헤깔립니다.)

나머지 export는 패스만 맞으면 필요 없는 데 이미 .profile에 export 됩니다.

에러 메세지로 봐선

g95를 실행하면 내부적으로(?) f951이란 프로그램을 실행하는데 f951을 못찾는 것 같습니다.

설치 매뉴얼을 다시 살펴보시거나

file /usr/local/bin/g95/g95-install/bin/i686-pc-linux-gnu-g95
위 명령어 확인해보시고

스크립트면 파일 열어서 보시고

바이너리면 strace 명령어로 무슨 짓을 하는지 확인해 볼 수 있습니다.

아마도 f951은 /usr/local/bin/g95/g95-install/bin 여기에 설치돼있지 않을까 추측해봅니다.

PATH=/usr/local/bin/g95/g95-install/bin:$PATH

이렇게 추가하시고 다시 한번 실행해보세요

[quote="SY":l8nn54jd]안녕하세요?

g95 compiler를 설치하고 bash 환경변수에서 경로를 설정해주었는데 실행을 하면 다음과 같은 에러가 뜹니다.

[b:l8nn54jd]g95: installation problem, cannot exec ‘f951’: No such file or directory[/b:l8nn54jd]

설치 과정 중이나 경로 설정에서 잘못한 것이 있을까요?
구글을 뒤져도 답을 찾지 못해 글을 남깁니다. 부탁드립니다.

설치과정중에 사용한 명령어는
[b:l8nn54jd]tar -xzvf g95-x86-linux.tgz
ln -s /usr/local/bin/g95/g95-install/bin/i686-pc-linux-gnu-g95 /bin/g95[/b:l8nn54jd]

bash 환경변수에서 경로는
[b:l8nn54jd]# g95
export PATH=$PATH:/bin[/b:l8nn54jd]

이렇게 하였습니다.[/quote:l8nn54jd]

윗분의 답변도 맞습니다만 정확한 export 방식은 아래 처럼 하시면 됩니다.

PATH="$HOME/bin:$PATH"

그러나 우분투도 .profile 파일을 열어 보시면 이미 패스가 걸려 있습니다.
없으면 추가 하시면 되구요!

따라서 위에서 이미 심볼릭 링크로 홈 디렉토리에 bin 디렉토리가 생성되었으므로
따로 조치해야 할 설정은 없습니다.

참고로 f951는 에러 코드 이며 질문자께서 export 했던 방식은 틀린 방식입니다.
제 생각엔 enviroments를 전역으로 /bin만 설정하신 것 같습니다.

그러면 나머지는 /usr/bin, /usr/local/bin, /sbin 등은 어떻게 하실려구요…^^

보다 자세히 말씀 드리자면 g95 컴파일러가 실행 가능한 위치에 있어야 하는 데
귀찮기도 하지만 일반 사용자에겐 컴파일러 이용이 제한되므로 /bin 디렉토리가 아닌
사용자 계정, 즉 ~/bin 디렉토리에 링크를 거는 것이 보다 편합니다.

아니면 이미 path가 잡혀 있는 /usr/bin, /usr/local/bin등에 컴파일러를 위치 시키면 됩니다.
그리고 /bin, /sbin은 sudo 명령 없이는 사용이 제한 되는 것으로 알고 있습니다. (/etc/sudoers 파일의 default_secure_path 참조)

그러나 질문자께서는 원본을 excute 불가능 곳에 두셨으므로 ~/bin에 링크를 걸어 주는 것 입니다.
윗분께서 답변 하신대로 하셔도 export 하셔도 무방하나 전역이 아닌 사용자 계정의 .profile에 path를 추가 하셔야 됩니다.

참고 하시기 바랍니다.

답변 주신 모든 분들 머리숙여 감사드립니다.
제가 잘 몰라서 다 이해하지는 못하였지만 bin 속에 여러 파일들이 있으니
여기에 경로를 거는게 아니라는 말씀이시죠?

말씀하신대로 bashrc에

[b:37yl6ehi]PATH="$HOME/bin:$PATH"
export PATH[/b:37yl6ehi]

를 설정하고 다시 g95를 실행하였지만 여전히 같은 에러가 나옵니다.
터미널에서

[b:37yl6ehi]$ which g95
bin/g95[/b:37yl6ehi]

경로도 제대로 해줬는데… 어렵네요 ㅠㅠ

음…! 조금 머리가 아프네요…^^

우선 차근히 처음 부터 해 보시기 바랍니다.
원하는 위치에 g95 컴파일러의 압축을 해제 하시고 다음과 같이 이미 PATH가 걸려 있는 디렉토리에 심볼릭을 만들어 줍니다.

[code:37hn60v8]# sudo mv g95-x86-linux.tgz /opt

cd /opt

sudo tar -zxvf g95-x86-linux.tgz

sudo ln -s $PWD/g95-install/bin/g95 ~/bin/g95 또는 /usr/bin/g95 또는 /usr/local/bin/g95[/code:37hn60v8]

일단 헤깔리지 마시라고 /usr/local이 아닌 /opt 디렉토리로 옮겨 압축을 푸는 것으로 수정하였습니다.
여기서 심볼릭 링크가 만들어 지는 $HOME/bin, /usr/bin, /usr/local/bin 의 디렉토리는 이미 시스템 전역으로 path가 걸려 있습니다.

그러니 .bashrc, .profile의 파일을 편집해서 export 할 필요가 없습니다.
그리고 export 하는 방식도 질문자께서 하신 방법이 잘 못 되어 있다고 앞서 지적한 바 있습니다.

현재 시스템에 걸려 있는 전체 path를 확인 하시려면 터미널에서 아래와 같이 하시면 됩니다.

[quote:37hn60v8]# $PATH
bash: /usr/lib64/mpi/gcc/openmpi/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin[/quote:37hn60v8]
현재 수세를 사용 중이라 path가 많이 걸려 있는 데 이러한 PATH의 의미는
PATH가 걸려 있는 위치에 존재하는 파일은 excute, 즉 실행 가능한 위치에 있다라는 의미로 해석 하시면 됩니다.

우분투에서 시스템 전역으로 PATH를 추가하시려면 /etc/profile, /etc/enviroments에 PATH를 추가 하시면 됩니다.
만약 이전에 path를 수정 한 적이 있다면 원 상태로 되돌리시고 /etc/enviroments에 path를 다시 아래와 같이 걸어 주십시오.
참고로 우분투 12.04와 12.10은 /etc/profile에 path 걸면 안되는 버그가 있습니다.(이유는 직접 알아 보십시오.)

[quote:37hn60v8]# sudo vi /etc/enviroments
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"[/quote:37hn60v8]
수정 후 재부팅 하시면 적용이 됩니다.

여기서 중요한 점은 /bin과 /sbin에 있는 파일을 실행하기 위해선 반드시 sudo 명령이 선행되어야 함을 앞서 언급해 드렸습니다.
이는 보안을 위해서 이기도 하고 /bin, /sbin에 있는 파일을 실행함에 있어 엄청난 주의가 필요 하기 때문입니다.
따라서 /bin에 심볼릭을 걸지 마시고 ~/bin, /usr/bin, /usr/local/bin에 심볼릭을 만드는 것을 추천해 드렸습니다.

여기서 가만히 보시면 ~/bin(/bin과 다름)은 위의 PATH에서 빠져 있습니다.
이 빠져 있는 사용자 계정의 ~/bin의 패스는 아래와 같이 .profile 또는 .bashrc 파일에 정의되어 있습니다.

[code:37hn60v8]if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi[/code:37hn60v8]
따라서 제가 추천해 드린 위치에 이미 path가 다 걸려 있으니 export 설정할 필요가 없음을 이제 아실 수 있을 겁니다.

g95 바이너리 파일의 압축을 풀면 아마 bin, lib 디렉토리 두개가 존재 할 것 입니다.
lib 디렉토리에 f951 파일이 있을 걸로 예상되어 집니다.

만약 모든 설정이 정상적이라면 컴파일 시 --g95을 호출했을 때 lib 디렉토리를 참조해야 하는 데
자체를 찾지 못한다는 말은 다시 말씀드려서 g95 컴파일러가 excute(실행) 불가능한 위치에 있다는 말과 같습니다.
혹은 심볼릭 링크가 깨어져 있거나 참조할 lib 디렉토리에 f951 파일이 없음을 의미 합니다.

따라서 질문자께서 path를 export 하기 위해 수정한 파일이(아마도 전역으로 수정하신 것으로 보입니다.) 잘못 되어 있을 겁니다.
앞서 지적한 봐와 같이 터미널에서 $PATH 명령어로 재차 확인해 보시기 바랍니다.

이도 저도 잘 모르시겠다면 path를 수정한 파일을 원 상태로 되돌리시고
아래 g95 홈페이지에서 deb 파일을 다운로드 받아 설치 하시기 바랍니다.

[url:37hn60v8]http://www.g95.org/[/url:37hn60v8]

[quote="workman729":jwmwiiz8]여기서 중요한 점은 /bin과 /sbin에 있는 파일을 실행하기 위해선 반드시 sudo 명령이 선행되어야 함을 앞서 언급해 드렸습니다.[/quote:jwmwiiz8]
음! 우선 질문자님께 잘못 된 정보를 전하게 된 점이 있어 고개 숙여 사과의 말씀 드립니다.
/bin 디렉토리의 파일의 실행시 sudo 명령이 필요한 것은 아니군요!

스스로 질책하여 겸허한 자세를 갖도록 노력 하고 틀린 정보를 제공한 사실이 있다면 바로 바로 수정하고 사과 드리겠습니다.
그리고 고수님들이 많으신 데 아무도 지적해 주지 않아서 조금은 섭섭하군요!

다시 한번 사과 드립니다.