makeself를 이용하여 실행파일 형태의 installer를 만드는 방법에 대해 알아 본다.
makeself 프로젝트 공식사이트 주소 :
https://makeself.io/
목차
1. makeself 설치
[root@pyhost ~]# yum install -y makeself
2. 파일 배치
특정 디렉토리를 만들 고 install 파일들을 배치
[root@pyhost ~]# mkdir /opt/MyProject
[root@pyhost ~]# cd /opt/MyProject
[root@pyhost MyProject]# ls -la
-rw-r--r-- 1 root root 82768 Sep 28 16:15 mypro.conf
-rwxr-xr-x 1 root root 116068 Sep 28 16:15 mypro.py
3. install 할 파일들 압축
[root@pyhost MyProject]# tar zcvf mypro.tar.gz mypro.conf mypro.py --remove-files
4. install 스크립트 작성
[root@pyhost MyProject]# vim install-mypro.sh
#!/bin/bash
## decompress files
tar zxvf mypro.tar.gz
rm -f mypro.tar.gz
chmod 755 mypro.py
## moving conf file into /etc
if [ ! -d /etc/mypro-conf ]; then
mkdir -p /etc/mypro-conf
fi
mv mypro.conf /etc/mypro-conf
## remove install-mypro.sh file
rm -f $0
-> install-mypro.sh는 run을 통해 실행되는 스크립트
1) mypro.tar.gz 압축 해제
2) mypro.tar.gz 파일 삭제
3) mypro.py 를 /usr/sbin/mypro 디렉토리에 위치 시킴
4) mypro.conf 를 /etc/mypro-conf 에 위치 시킴 (먼저 디렉토리를 생성하고)
5) install-mypro.sh는 수행 후 삭제 됨
5. run 파일 작성
[root@pyhost MyProject]# cd ..
[root@pyhost opt]# makeself --target /usr/sbin/mypro ./MyProject ./mypro-install.run "SFX installer for mypro" ./install-mypro.sh
ls-Header is 500 lines long
About to compress 44 KB of data...
Adding files to archive named "./mypro-install.run"...
./
./mypro.tar.gz
./install-mypro.sh
CRC: 2930672434
MD5: 15a4f86e589194981ae7dd1e46541594
Self-extractable archive "./mypro-install.run" successfully created.
-> --target : run 파일을 만들 때 이 옵션을 지정 하지 않으면 만들어진 run 파일을 실행하는 시점에 --target을 지정해 줘야만 함.
-> ./MyProject : 소스 파일들을 포함하는 디렉토리
-> ./mypro-install.run : 생성될 run 파일 이름
-> "SFX installer for mypro" : mypro-install.run 이 수행될 때 표시되는 내용
-> ./install-mypro.sh : MyProject 디렉토리안에 위치. mypro-install.run이 수행될 때 실행되는 스크립트
6. run 파일 수행 테스트
mypro-intall.run 파일을 다른 서버에서 진행해 본다.
[root@indigoNAS ~]# ./mypro-install.run
Creating directory /usr/sbin/mypro
Verifying archive integrity... All good.
Uncompressing SFX installer for nShortURL 100%
mypro.conf
mypro.py
[root@indigoNAS ~]# ls -la /usr/sbin/mypro/
합계 132
drwxr-xr-x 2 root root 4096 2020-09-28 19:33 .
dr-xr-xr-x. 3 root root 12288 2020-09-28 19:33 ..
-rwxr-xr-x 1 root root 116068 2020-09-28 16:15 mypro.py
[root@indigoNAS ~]# ls -la /etc/mypro-conf/
합계 92
drwx------ 2 root root 4096 2020-09-28 19:33 .
drwxr-xr-x. 79 root root 4096 2020-09-28 19:33 ..
-rw-r--r-- 1 root root 82768 2020-09-28 16:15 mypro.conf
-> 수행 결과,
1) makeself 빌드 시 지정한 '--target /usr/sbin/mypro' 옵션대로 /usr/sbin/mypro 디렉토리가 생성되고 mypro.py 파일이 위치함
2) mypro-install.sh 스크립트 내용대로 /etc/mypro-conf 디렉토리가 생성되고 mypro.conf 파일이 해당 디렉토리에 위치함