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

그런 다음 압축을 풀고 구성하고 만들고 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 파일을 편집하고 불필요한 바이너리와 부분을 모두 제거했으며(나중에 다른 명령을 사용하여 수행할 것입니다), 일부 이름도 변경했습니다(ssh 공식 패키지와의 충돌을 피하기 위해 network/ssh가 network/gmopensh가 되었습니다).

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가 종료되지 않은 경우에만 실패함).

관련 정보