Solaris11和ips,如何设置或替换旧的checkinstall脚本?

Solaris11和ips,如何设置或替换旧的checkinstall脚本?

在旧的好的Solaris 10上,我使用这个脚本为 openssh 创建一个完全自动化的包(我更喜欢自己更新 sshd,个性化它,等等。)这个脚本在我的家乡运行良好(可能会造成一些麻烦并进行改进,但有效,当然测试它需要您自担风险! )。在 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

然后解压、配置、make..并安装在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 脚本?

答案1

找到解决方案。我的文件 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 在安装前未终止时才会失败)。

相关内容