Solaris 软件包升级

mla*_*the 2 packaging solaris

我很难理解 Solaris 11 如何进行打包。我知道有一种yum类型打包方法,但我希望有一种rpm -i允许rpm -U交付包然后安装或升级的方法。

现在我已经找到了如何制作一个包,即pkgmkpkgtrans。鉴于此,我可以创建一个“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.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?看起来我应该使用pkg update,但这似乎意味着我需要在存储库中发布我的 pkg 。

jll*_*gre 5

首先,您没有使用 Solaris 11 打包 (IPS),而是使用旧版 SVR4 打包。

对于后者,您无法升级自定义包。唯一的方法就是简单地删除旧的软件包并安装新的软件包,这rpm -U无论如何都是在幕后进行的。

pkgrm foo
pkgadd -d foo_2.0.pkg foo
Run Code Online (Sandbox Code Playgroud)