솔라리스 11의 패키징 방식에 대해 많은 고민을하고 있습니다. yum
유형 패키징 방식이 있다는 것을 알고 있지만 패키지를 전달한 다음 설치 또는 업그레이드 할 수있는 방법이 rpm -i
및 rpm -U
일 것으로 예상됩니다.Solaris 패키지 업그레이드
지금은 패키지를 만드는 방법을 추적했습니다 (예 : pkgmk
및 pkgtrans
).
pkgadd -d foo_1.0.pkg
그러나 나는 "foo_2.0.pkg"로이 패키지를 업그레이드하는 방법을 알아낼 수 없습니다 감안할 때이 I는 다음과 같이 설치할 수있는 "foo_1.0.pkg"파일을 만들 수 있습니다 :
[email protected] # pkgadd -d foo_2.0.pkg
The following packages are available:
1 foo foo
(x86) private_build
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <foo> from </root/foo_2.0.pkg>
foo(x86) private_build
Current administration requires that a unique instance of the <foo>
package be created. However, the maximum number of instances of the
package which may be supported at one time on the same system has
already been met.
No changes were made to the system.
내가 뭘 잘못하고 있니? pkg update
을 사용해야하는 것으로 보입니다.하지만 이는 내 pkg을 repo에 출시해야 함을 의미합니다.
예, 맞습니다. IPS를 사용해야합니다. 명확하지 않지만 솔라리스 10과 11을 모두 지원해야합니다. 둘 모두에 대해 하나의 프로세스 만 갖고 싶습니다. 따라서 레거시 프로세스가 필요합니다. 'rpm -U'에 대해서''remove then add ''를하는 것은 사실이라고 생각하지 않지만 대신 오버레이라고 생각합니다. 내 응용 프로그램은 응용 프로그램 디렉토리에 상태를 기록하는 메모리 DB를 사용하므로 업그레이드시 오버레이하여 상태를 유지하려고합니다. 이것은'pkgrm'과'pkgadd'가 필요하다면 분명히 어색하게됩니다. "업데이트"개념이 없다면 "상태"를 복원하기 위해 수동 프로세스가 필요할 것입니다. – mlathe
맞습니다.'rpm -U'는 처음으로 새 버전을 설치 한 다음 오래된 파일을 제거합니다.어쨌든, 상태 파일이 패키지에 의해 전달되지 않았지만 나중에 응용 프로그램에 의해 생성되면, 상태 파일은'pkgrm' 명령에 의해 보존 될 것이라고 나는 믿습니다. – jlliagre
아 ... 네 말이 맞아. 내 postremove 스크립트는 설치 디렉토리의 "rm -rf"를 수행합니다. 당신이 말한 것처럼 그것이 "국가"를 떠날 것임을 확인합니다. 하나의 질문이지만 왼쪽에있는 "상태"파일 (로그, 임시 파일, DB 등)과 관련하여 공통된 흐름이 있습니다. postremove 스크립트는 파일이 남아 있다고 사용자에게 알려야합니까? 스크립트가 대화식이어야하고 파일을 제거해야하는지 여부를 묻는 것이 좋습니까? 가장 좋은 방법은 무엇입니까? – mlathe