이 오류와 유사하게 많은 네티즌들이 Ruby 업그레이드를 권장합니다. 시도해 보니 함정이 많다고 했고, 사실 fpm이나 ruby에는 문제가 없지만 시스템의 json 기본 버전이 너무 높아서 ruby가 1.8이 되기 때문입니다. .7은 지원할 수 없으므로 json 버전을 낮춰야 합니다
게다가 centos7에는 기본 Ruby 버전이 있습니다.
-s는 dir과 같은 소스 유형을 지정합니다 -t는 rpm과 같은 대상 유형을 지정합니다. -n은 패키지 이름을 지정합니다.
-v는 패키지 이름을 지정합니다. package
-C는 패키지를 지정합니다. 상대 경로 -d는 어떤 패키지가 의존하는지 지정합니다.
-f 두 번째 패키징 과정에서 디렉터리에 같은 이름의 패키지가 있으면 덮어쓰게 됩니다
-p 설치 패키지의 디렉터리를 출력합니다. 지정하지 않으면 현재 디렉터리가 됩니다
--post -install 소프트웨어 패키지 설치 후 실행되는 스크립트는 다음과 같습니다. --after-install
-- pre-install 소프트웨어 패키지가 설치되기 전에 실행될 스크립트는 다음과 같습니다: --before-install
--post-uninstall 소프트웨어 패키지가 제거된 후 실행될 스크립트는 다음과 같습니다: --after -remove
--pre-uninstall 소프트웨어 패키지가 제거되기 전에 실행될 스크립트는 다음과 같습니다: --before-remove
fpm 명령은 실제로 rpmbuild 명령입니다. 캡슐화의 경우 하위 수준은 실제로 rpmbuild입니다. 명령을 실행하므로 시스템에 rpmbuild 명령이 있어야 합니다.令 FPM 명령이 실행되지 않는 경우 Yum Install RPM-BUILD -Y
로 RPM-BUILD가 설치되어 있는지 확인할 수 있습니다.
Packing 명령 예:
fpm -s dir -t rpm -n nginx -v 1.6.3 -d 'pcre-devel,openssl-devel' --post-install /home/root/scripts/nginx.sh /usr/local/nginx-1.6.3/
/usr/local/nginx-1.6.3/ 为nginx的安装目录
/home/root/scripts/nginx.sh 为nginx安装后要执行的脚本,如创建用户、创建软链接
.Packaging 경로, it 절대경로 사용을 권장합니다
2. 소프트링크 패키징시 반드시 뒤에 /가 있어야 합니다. /가 없으면 소프트링크 파일을 의미하고, /는 디렉터리를 의미합니다.