相關參考網址:
** rpmbuild 建置指令
rpmbuild -bb accusys.spec
** 撰寫 rpm SPEC
---------------------------------------------------------------->
# Some metadata required by an RPM package
Name: accusys
Summary: Install Accusys linux driver and GUI.
Version: 1.0
Release: 1
License: GPLv2
%description
Install Accusys driver for "DaVinci-Resolve-Linux-16.0-CentOS_7.3"
Install Accusys GUI GC and GS.
# Get the kernel headers version installed, not based on uname.
%define kversion %(rpm -q kernel%{?bt_ext}-devel | sort --version-sort | tail -1 | sed 's/kernel%{?bt_ext}-devel-//')
%define RGX_GC RGX_GC_3.6.8
%define RGX_GS RGX_GS_3.6.8
%install
mkdir -p %{buildroot}/lib/modules/`uname -r`/extra/accusys
cp -pdf /home/Sam/rpmbuild/SOURCES/ACS6x.ko %{buildroot}/lib/modules/`uname -r`/extra/accusys/ACS6x.ko
chmod 755 %{buildroot}/lib/modules/`uname -r`/extra/accusys/ACS6x.ko
cp -pdfr /home/Sam/rpmbuild/SOURCES/%{RGX_GS} %{buildroot}/lib/modules/`uname -r`/extra/accusys/%{RGX_GS}
cp -pdfr /home/Sam/rpmbuild/SOURCES/%{RGX_GC} %{buildroot}/lib/modules/`uname -r`/extra/accusys/%{RGX_GC}
mkdir -p %{buildroot}/usr/lib/systemd/system
cat <<EOF> %{buildroot}/usr/lib/systemd/system/accusys.service
[Unit]
Description=Accusys GUI GS
After=network.target
[Service]
# User=user
# Group=group
# WorkingDirectory=/path/to/folder
ExecStart=/lib/modules/3.10.0-514.el7.x86_64/extra/accusys/RGX_GS_3.6.8/DTRGuiSrv_64
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
EOF
%post
depmod
systemctl start accusys
systemctl status accusys
systemctl enable accusys
%preun
systemctl stop accusys
systemctl disable accusys
%postun
depmod
%files
/lib/modules/%{kversion}/extra/accusys/ACS6x.ko
/lib/modules/%{kversion}/extra/accusys/%{RGX_GS}
/lib/modules/%{kversion}/extra/accusys/%{RGX_GC}
/usr/lib/systemd/system/accusys.service
<----------------------------------------------------------------
SPEC 檔︰ 參數定義
** SPEC 檔︰表頭 (Preamble) 的基本內容
Name: 所包裝軟件的名稱。
Summary: 軟件的簡短介紹。
Version: 軟件的版本編號。
Release: 同一版本軟件的發佈次數。預設為 1%{?dist},每打包一次應該 +1,直到版本編號更新為止。
License: 軟件的使用授權模式,像是「GPLv3」或者「MIT」之類。
URL: 軟件的官方網站。
Source0: 下載軟件源代碼的路徑或完整網址。如果有多於一個,可繼續用 Source1, Source2, … SourceX 去定義。
Patch0: 下載第一個源代碼補丁的網址。只在有需要時定義。同樣可以有 Patch1, Patch2, … PatchX。
BuildArch: 如果只支援在特定硬體架構編譯,需要在這裏定義,像是「x86_64」之類。
BuildRequires: 定義編譯軟件所需要的套件。需要用逗號或空白分隔套件名稱,亦可以分開多次定義 BuildRequires。
Requires: 定義執行軟件所需要的套件。需要用逗號或空白分隔套件名稱,亦可以分開多次定義 BuildRequires。
ExcludeArch: 如果軟件不能在特定架硬件架構下運作,需要在此定義。
** SPEC 檔︰內文 (Body) 的基本內容
%install: 安裝編譯好軟件的 shell 程序。一般包括將你要安裝的執行檔、軟件庫、設定檔、說明文件等等,
由編譯的資料匣(如 %_builddir)移放到 %buildroot 去。
在理想的世界裏,是預備好 ~/rpmbuild/BUILDROOT 的資料匣結構,然後把檔案由 ~/rpmbuild/BUILD 搬到 ~/rpmbuild/BUILDROOT 的程序。
%check: 檢查軟件的 shell 程序,一般擺放 unit test 的指令。
%files: 需要打包的檔案列表,每行一個定義,可以使用 bash 通用的「*」萬用字元 。
留意這裏的檔案路徑以 %buildroot 定義的資料匣為根目錄,換言之沒放在這裏的檔案,是無法被打包的。
%changelog: 軟件變化的紀錄,定義不同版本 (version) 或建置版本 (build) 的變化。
在軟體包安裝之前( %pre)或之後( %post)執行
在軟體包卸載之前( %preun)或之後( %postun)執行
在事務開始( %pretrans)或結束( %posttrans)時執行
沒有留言:
張貼留言