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