我在思考 Solaris 11 如何打包时遇到了很多麻烦。我知道有一个 yum
类型的打包方法,但我希望有一个 rpm -i
和 rpm -U
方法允许要交付然后安装或升级的包。
现在我已经找到了如何制作一个包,即pkgmk
和pkgtrans
。鉴于此,我可以创建一个可以像这样安装的“foo_1.0.pkg”文件:
pkgadd -d foo_1.0.pkg
但是我不知道如何用“foo_2.0.pkg”升级这个包:
root@hostname # 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
,但这似乎暗示我需要在 repo 中发布我的 pkg。
最佳答案
首先,您使用的不是 Solaris 11 封装 (IPS),而是旧版 SVR4 封装。
对于后者,您无法升级自定义包。唯一的方法就是简单地删除旧包并安装较新的包,这就是 rpm -U
正在做的事情。
pkgrm foo
pkgadd -d foo_2.0.pkg foo
关于Solaris 软件包升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22050795/