티스토리 뷰

linux-source-install

Table Of Contents

  1. 소스파일 받아서 컴파일 하기
  2. 바이너리 받아서 설치하기
  3. 빌드된 소스 다운로드 및 bin 설치 with ROOT권한
  4. 빌드된 소스 다운로드 및 bin 설치 without ROOT권한
  5. 빌드된 소스 다운로드 및 library 설치
  6. ldconfig 방법
  7. LD_LIBRARY_PATH 방법

서론

linux 컴퓨터에 어떤 프로그램을 설치하는 방법은 3가지가 있다. 여기선 제일쉬운 패키지 관리자 사용방법을 제외한 3번 빌드된 바이너리 파일을 받아서 설치 하는 방법을 설명한다.

  1. APT, YUM같은 패키지 관라자 로 실치
  2. 소스 파일을 받아서, 빌드해서 설치 (configure)
  3. 빌드된 바이너리 파일을 받아서, 설치하기 난 라즈베리파이 Zero 에 nodejs를 설치하려는데, apt installarmv6l 을 지원하지 않는다고 에러가 나서, 소스로 설치해야 했다. 제길!!1818 apt/yum에서 설치가 안되는 그때부터 힘들어 진다

소스파일 받아서 컴파일 하기

아래처럼 파일처럼 OS타입(linux)나 CPU타입(armv6l) 이 없으면, 이건 빌드(configure/make)를 해야하는 파일이라고 생각하면 된다.

$ node-v4.2.3.tar.gz

빌드하는 방법은 아래처럼 ./configure -> make -> make install 의 3단계를 거쳐야 한다. 여기서 제일 중요한건 configure 로서, 어디에 설치할치, CPU타입, 빌드타입을 적어서 알려줘야 한다. 여기선 바이너리 설치를 우선적으로 설명한다.

$ node-v4.2.3.tar.gz
$ tar -zxvf node-v4.2.3.tar.gz
$ cd node-v4.2.3
$ export CROSS_COMPILE="arm-linux-gnueabi"
$ ./configure --prefix=/usr/local/nodejs/v4.2.3 --target=${CROSS_COMPILE} --host=${CROSS_COMPILE} --build=${CROSS_COMPILE}
$ make
$ make install

바이너리 받아서 설치 하기

소스파일 이름에 OS타입(linux)나 CPU타입(armv6l) 이 적혀 있으면, 이건 바이너리 버전 즉 빌드된 파일이라고 생각하면 된다.

$ node-v4.9.1-linux-armv6l.tar

바이너리 다운로드 및 bin 설치 with root권한

linux에는 아래와 같은 암묵적인 규칙이 있다. 시스템 실행파일은 보통 /usr/bin, 사용자가 설치하는 실행파일은 /usr/local/bin경로에 설치하는 규칙말이다. 물론 사용자가 설치하는 실행파일을 /usr/bin에 설치하는것도 가능하다. sudo 권한만 있으면 불가능 한게 없다. 그러나 개판이 되겠지? 그러나, 안하는게 좋다.

경로 설명
/bin 시스템이 설치하는 가장 기본적인 프로그램의 경로
/usr/bin 시스템이 설치하는 기본보다 확장된 프로그램의 경로
/usr/local/bin 일반 사용자가 직접 설치하는 프로그램을 위한 경로

그리고, linux 시스템적으로 /usr/local/bin폴더 가 /usr보다 우선순위를 높게 해주었다. 왜냐면 사용자가 시스템 디폴트 환경이 마음에 안들어서, 소스받아서 설치하면 이게 우선순위가 높아야 그걸 쓸수 있지 않겠는가?? 아래처럼 PATH 환경변수를 보면, /usr/local/bin 의 우선순의가 높아서, 똑같은 실행파일이 있을시 /usr/local/bin의 실행파일이 overwrite해서 실행된다.

$ export
declare -x PATH="/usr/local/bin:/usr/bin:/bin::

이런 규칙을 따라서, /usr/local/src에 다운 받고, 압축은 /usr/local/nodejs에서 해제한다.

$ sudo mkdir -p /usr/local/src /usr/local/nodejs
$ cd /usr/local/src
$ wget http://nodejs.org/dist/v0.8.2/node-v4.9.1-linux-armv6l.tar.gz
$ tar -xvf node-v4.9.1-linux-armv6l.tar -C /usr/local/nodejs

그럼 실행파일은 어디? /usr/local/bin 에 설치해야 한다. 아래처럼 링크된 실행파일을 /usr/local/bin에 설치해주면 끝이다.

$ sudo ln -sf /usr/local/nodejs/v4.9.1/bin/node /usr/local/bin/node
$ sudo ln -sf /usr/local/nodejs/v4.9.1/bin/npm /usr/local/bin/npm
$ node --version
v4.9.1

바이너리 다운로드 및 bin 설치 without root권한

root권한 이 없으면, 위처럼 /usr/local/ 에 설치할수가 없다. 이럴때는 HOME폴더에 설치를 해야 한다. xz 확장자는 새로나온 압축툴입니다. gzip보다 30% 압축률이 높다네요

$ mkdir ~/src
$ cd ~/src
$ wget https://nodejs.org/download/release/v14.15.5/node-v14.x-linux-x64.tar.xz
$ tar -Jxvf node-v14.x-linux-tar.xz

바이너리 다운로드 후에, 시스템에게 알려줘야 한다. 시스템에 알려주는 방법은 PATH 설정을 통해서 하면 된다. PATH에 바이너리가 설치된 경로를 추가해 주자. 이렇게 하면 node의 global(-g) 경로로 인식을 한다.

$ vi ~/.bash_profile
$ export PATH=$HOME/src/bin:$PATH
$ source ~/.bash_profile

설치후 node tool을 설치해 보자. 설치로그를 보면 설치경로가 ~/src/node-v14.X.X/lib/node_modules 가 되었다.

$ which node
~/src/node/bin/node
$ npm install -g pm2
/home/manager/src/node-v14.15.5-linux-x64/bin/pm2 -> /home/manager/src/node-v14.15.5-linux-x64/lib/node_modules/pm2/bin/pm2
/home/manager/src/node-v14.15.5-linux-x64/bin/pm2-dev -> /home/manager/src/node-v14.15.5-linux-x64/lib/node_modules/pm2/bin/pm2-dev

node가 설치가 된 경로가 아닌, HOME같은 이상한 경로로 설치될수도 있다. 이런경우는 yum으로 설치하고, 바이너리로도 설치하고 섞어서 설치할때 이런 에러가 발생할수 있다. 이럴때는 아래처럼 설정파일을 삭제해 주자.

$ rm -rf ~/.npm
$ rm -rf node_modules

빌드된 소스 다운로드 및 library 설치

library도 아래와 같은 암묵적인 규칙이 있다. 즉 /usr/local/lib 에다가 사용자가 직접설치하는 lib을 설치하는게 좋다.

경로 설명
/lib 시스템이 설치하는 가장 기본적인 library 경로
/usr/lib 시스템이 설치하는 기본보다 확장된 library 경로
/usr/local/lib 일반 사용자가 직접 설치하는 library를 위한 경로
아래처럼 /usr/local/lib/oracle 밑에 oracle client 라이브러리를 설치한다.
$ mkdir /usr/local/lib/oracle
$ cd /usr/local/lib/oracle
$ wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basic-linuxx64.zip
$ unzip instantclient-basic-linuxx64.zip

그럼, 설치한 library를 쓸려면 어떻게 해야 할까? library파일을 시스템이 인식하게 하려면 2가지 방법이 있다. ldconfig 방법과 LD_LIBRARY_PATH 방법이다.

ldconfig방법

ldconfig를 실행하면, /etc/ld.so.conf 에 설정된 폴더들에 존재하는 so파일들을 /etc/ld.so.cache 에 저장해서 쓰게 해 준다. https://stackoverflow.com/questions/4743233/is-usr-local-lib-searched-for-shared-libraries

sudo sh -c "echo /usr/local/lib/oracle/instantclient_21_1 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig
...이제 SO파일 쓸수 있다.

LD_LIBRARY_PATH를 수정하는 방법

LD_LIBRARY_PATH는 PATH 와 비슷하게, SO파일이 존재하는 경로이다. 또한 /usr/local/lib/usr/lib 보다 우선순위가 높은것을 알수 있다.

echo $LD_LIBRARY_PATH
declare -x LD_LIBRARY_PATH="/usr/local/lib:/usr/lib"

만약! ldconfig를 안한다면, 오라클 라이브러리 SO가 있는 폴더를 LD_LIBRARY_PATH에 제일 앞에 추가해 준다.

vi ~/.bash_profile
LD_LIBRARY_PATH="/opt/oracle/instantclient_21_1:/usr/local/lib:/usr/lib"
expot LD_LIBRARY_PATH

'Linux > TIP' 카테고리의 다른 글

FTP 서버 설치 (ubuntu 기준)  (0) 2020.12.04
계정 관리  (0) 2020.04.19
유저그룹 (USER GROUP)  (0) 2018.09.18
syntaxhighlighter  (0) 2013.01.14
좀비프로세스 죽이기  (0) 2013.01.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함