Solaris11 和 ips,如何設置或替換舊的 checkinstall 腳本?
在舊的好solaris 10上,我使用這個腳本為openssh創建了一個完全自動化的包(我更喜歡自己更新sshd,個性化它等等。)這個腳本在我的homelan上執行良好(可以製造一些麻煩和改進但是工作,當然測試它需要您自擔風險!)。在 Solaris 11 上,他們使用 ips 的全新過程 所以我做了這些步驟 首先創建必要的目錄
mkdir -p $HOME/user/openssh/{src,binary}
進入 src 目錄
cd $HOME/openssh/src
下載最新的openssh並檢查gpg
wget https://ftp2.eu.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz wget https://ftp2.eu.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.4p1.tar.gz.asc gpg -v *asc
然後提取,配置,製作..並安裝在bindir中
gtar -xvf *tar.gz cd openssh-8.4p1 ./configure --prefix=/opt/gm --sysconfdir=/etc/opt/gm/ssh --with-kerberos5=/usr --with-libedit=/usr --with-pam --with-solaris-contracts --with-solaris-projects --with-solaris-privs gmake -j4 gmake install DESTDIR=$HOME/openssh/binary
然後我開始為 ips 創建包(我已經建立了一個個人儲存庫來安裝我的包)。
pkg contents -r -m ssh > openssh.mog
我編輯 mog 文件,刪除所有不需要的二進製文件和部分(稍後我將使用其他命令完成),我還更改了一些名稱(network/ssh 變為 network/gmopenssh 以避免與 ssh 官方包衝突)。
vim openssh.mog
然後我生成二進制列表
pkgsend generate binary |pkgfmt > openssh.p5m.1
添加元數據…
pkgmogrify -DARCH=`uname -p` openssh.p5m.1 openssh.mog |pkgfmt > openssh.p5m.2
一代代..
pkgdepend generate -md binary openssh.p5m.2 |pkgfmt > openssh.p5m.3 pkgdepend resolve -m openssh.p5m.3
現在我們檢查是否有問題(權限、所有者等)
pkglint -c ./lint-cache -r http://pkg.oracle.com/solaris/release openssh.p5m.3.res
幾分鐘後更正 openssh.p5m.3.res 中的錯誤並重做 pkglint
vim openssh.p5m.3.res pkglint -c ./lint-cache -r http://pkg.oracle.com/solaris/release openssh.p5m.3.res
如果最終沒有返回警告,我們可以上傳包,正如我首先所說的,我已經配置了一個儲存庫。
pkgsend publish -s http://localhost:9001 -d binary openssh.p5m.3.res
重建回購..
pkgrepo rebuild -s http://localhost:9001
最後安裝它
pkg install gmopenssh
現在,問題是:在舊的 Solaris 10 上,當我安裝軟體包時,checkinstall 腳本會導入我的清單和方法(當然,即使在 Solaris 11 軟體包上也可以在正確的目錄中添加和修改)。安裝後我的包工作正常,但我必須導入清單並啟動服務..手動(原文如此!)。如何在 ips 配置中替換舊的 checkinstall 腳本?
找到解決方案。我的文件 openssh.p5m.3.res 包含位於錯誤位置的清單(非標準),因此 Solaris 拒絕導入並啟動它。
舊配置
dir path=var/opt/gm/lib/svc/manifest owner=root group=sys mode=0755 dir path=var/opt/gm/lib/svc/manifestnetwork owner=root group=sys mode=0755 file var/opt/gm/lib/svc/manifest/network/gmopenssh.xml \ path=var/opt/gm/lib/svc/manifest/network/gmopenssh.xml owner=root group=sys \ mode=0444 restart_fmri=svc:/system/manifest-import:default
新配置
dir path=lib/svc/manifest owner=root group=sys mode=0755 dir path=lib/svc/manifest/network owner=root group=sys mode=0755 file lib/svc/manifest/network/gmopenssh.xml \ path=lib/svc/manifest/network/gmopenssh.xml owner=root group=sys \ mode=0444 restart_fmri=svc:/system/manifest-import:default
線
restart_fmri=svc:/system/manifest-import:default
做的伎倆。
再次上傳並執行 pkg update 服務已創建並處於活動狀態(僅當安裝前未殺死 sshd 時才會失敗)。