혼자 사용하는 서버는 환경 설정을 자유롭게 할 수 있습니다. 자주 사용하는 경로의 지정이나 무언가를 설치했을 때 경로까지 익숙함을 바탕으로 찾아내는데 어려움이 없을 겁니다. 하지만, 서버의 운영체제 버전이 조금 다르다던가 계정 정책의 차이 등으로 패키지가 어디에 설치되었는지 헤메는 경우가 종종 생깁니다.
서버 환경으로 CentOS 를 자주 사용하다보니 패키지 설치는 거의 yum 을 사용합니다. 간혹 커스텀한 구성이 필요하여 직접 빌드하는 경우를 제외하면 관리가 편하기 때문에 yum 을 쓰는 편이죠. 오늘 아침, 자주 안들어가던 서버에서 mtr 패키지가 필요해서 yum 으로 설치했으나 실행이 되지 않는 문제가 있어서 패키지 설치 디렉토리를 찾느라 잠시 헤프닝이 있었습니다.
// yum 은 패키지는 잘 설치해 주지만, 설치된 위치를 알려주진 않습니다
$ sudo yum install mtr
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* centos-sclo-rh: mirrors.aliyun.com
* epel: xxxx.xxxx.xxx
Resolving Dependencies
--> Running transaction check
---> Package mtr.x86_64 2:0.75-5.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
======================================================================================================================
Package Arch Version Repository Size
======================================================================================================================
Installing:
mtr x86_64 2:0.75-5.el6 base 54 k
Transaction Summary
======================================================================================================================
Install 1 Package(s)
Total download size: 54 k
Installed size: 96 k
Is this ok [y/N]: y
Downloading Packages:
mtr-0.75-5.el6.x86_64.rpm | 54 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : 2:mtr-0.75-5.el6.x86_64 1/1
Verifying : 2:mtr-0.75-5.el6.x86_64 1/1
Installed:
mtr.x86_64 2:0.75-5.el6
설치는 잘 되었으나 Shell 환경에 지정된 Path 에 잡혀있지 않은지 실행이 되지 않았습니다. 패키지가 설치된 경로를 찾아야 할 때는 rpm 을 사용하면 좋습니다. rpm 과 grep 으로 패키지가 설치되어 있는지 찾아보거나 rpm 에 옵션을 지정하여 패키지 설치 경로를 확인할 수 있습니다.
// 설치된 패키지의 이름을 확인
$ rpm -qa | grep mtr
mtr-0.75-5.el6.x86_64
// 설치된 패키지의 경로를 확인
$ rpm -ql mtr
/usr/sbin/mtr
일반적인 설치 경로인데 왜 실행이 안되었을까요? 그건 리눅스의 환경 변수중 명령어를 실행할 수 있는 경로의 집합을 나타내는 $PATH 에 경로가 빠져 있기 때문입니다. 한 번 확인해 보고 누락된 경우 추가를 해보도록 하겠습니다. 매번 전체 경로를 넣고 실행하기는 좀 번거롭겠죠? 실제로는 profile 설정 등에서 추가해 주어야 다음번 로그인시에도 경로가 추가된다는 점 잊지 마시구요.
// 꼴랑 두개 들어가 있네요
$ echo $PATH
/bin:/usr/bin
// 기존 $PATH 값에 콜론으로 연결하여 경로를 지정합니다
// 잘 들어갔는지 절대 알려주지 않으니 echo 로 다시 확인을...
$ PATH=$PATH:/usr/sbin
$ echo $PATH
/bin:/usr/bin:/usr/sbin