如何在solaris 11.3中使用runtime / perl-522替换runtime / perl-512

时间:2017-08-22 18:25:53

标签: package solaris

我正在尝试安装runtime / perl-522,但默认安装了runtime / perl-512导致错误。 我也无法卸载runtime / perl-512,因为导致了以下错误

  

pkg uninstall:由于以下依赖于它的软件包,无法删除'runtime/perl-512@5.12.5-0.175.3.0.0.30.0':     communication/im/pidgin@2.10.11-0.175.3.0.0.26.0     desktop/compiz@0.8.4-0.175.3.0.0.26.0     desktop/xscreensaver@5.15-0.175.3.0.0.22.0     developer/base-developer-utilities@0.5.11-0.175.3.0.0.30.0     developer/gnome/gettext@2.30.0-0.175.3.0.0.10.0     gnome/zenity@2.30.0-0.175.2.0.0.27.0     install/distribution-constructor@0.5.11-0.175.3.0.0.30.0     library/audio/gstreamer@0.10.32-0.175.3.0.0.26.0     library/gnome/gnome-component@2.24.3-0.175.2.0.0.31.0     library/perl-5/sun-solaris-512@0.5.11-0.175.3.0.0.30.0     network/ipfilter@0.5.11-0.175.3.1.0.3.0     package/rpm@1.3-0.175.3.0.0.30.0     print/cups@1.4.5-0.175.3.0.0.30.0     print/cups/filter/foomatic-db-engine@0.20080903-0.175.3.0.0.30.0     print/filter/a2ps@4.14-0.175.3.0.0.30.0     print/filter/ghostscript@9.0-0.175.3.0.0.30.0     print/filter/gutenprint@5.2.7-0.175.3.0.0.30.0     print/psutils@1.17-0.175.3.0.0.30.0     service/network/ntp@4.2.8.2-0.175.3.0.0.30.0     service/network/smtp/sendmail@8.15.1-0.175.3.1.0.2.0     support/explorer@8.9.15.9.11     system/core-os@0.5.11-0.175.3.1.0.2.0     system/dtrace/dtrace-toolkit@0.99-0.175.3.0.0.30.0     system/management/ocm@12.1.0.0.0-0.175.3.0.0.24.0     system/management/snmp/net-snmp@5.4.1-0.175.3.0.0.30.0     system/network/ppp@0.5.11-0.175.3.0.0.30.0     text/groff@1.22.2-0.175.3.0.0.30.0     text/texinfo@4.13-0.175.3.0.0.30.0     web/browser/w3m@0.5.2-0.175.3.0.0.30.0     web/server/apache-22@2.2.31-0.175.3.1.0.3.0     x11/server/xvnc@1.1.0-0.175.3.0.0.30.1483

在安装runtime / perl-522期间,我面临以下错误:

  

pkg install:对系统的请求更改尝试安装多个操作   链接'usr / perl5 / pod'具有冲突的属性:

1 package delivers 'link mediator=perl mediator-priority=vendor mediator-version=5.22 path=usr/perl5/pod target=5.22/lib/pod':
    pkg://solaris/runtime/perl-522@5.22.1,5.12-5.12.0.0.0.122.0:20170510T193143Z
1 package delivers 'link path=usr/perl5/pod target=5.12/lib/pod':
    pkg://solaris/runtime/perl-512@5.12.5,5.11-0.175.3.0.0.30.0:20150821T171525Z

这些包可能未安装在一起。任何非冲突的集合都可以 是,或者必须先纠正包装才能安装。

对系统的请求更改尝试安装多个操作 对于具有冲突属性的链接'usr / perl5 / man':

1 package delivers 'link mediator=perl mediator-priority=vendor mediator-version=5.22 path=usr/perl5/man target=5.22/man':
    pkg://solaris/runtime/perl-522@5.22.1,5.12-5.12.0.0.0.122.0:20170510T193143Z
1 package delivers 'link path=usr/perl5/man target=5.12/man':
    pkg://solaris/runtime/perl-512@5.12.5,5.11-0.175.3.0.0.30.0:20150821T171525Z

这些包可能未安装在一起。任何非冲突的集合都可以 是,或者必须先纠正包装才能安装。

对系统的请求更改尝试安装多个操作 对于具有冲突属性的链接'usr / perl5 / bin':

1 package delivers 'link mediator=perl mediator-priority=vendor mediator-version=5.22 path=usr/perl5/bin target=5.22/bin':
    pkg://solaris/runtime/perl-522@5.22.1,5.12-5.12.0.0.0.122.0:20170510T193143Z
1 package delivers 'link path=usr/perl5/bin target=5.12/bin':
    pkg://solaris/runtime/perl-512@5.12.5,5.11-0.175.3.0.0.30.0:20150821T171525Z

这些包可能未安装在一起。任何非冲突的集合都可以 是,或者必须先纠正包装才能安装。

/////////////////////////////////////////////// /////////////////////////////

所以请建议我安装runtime / perl-522

需要做什么

提前致谢..

2 个答案:

答案 0 :(得分:2)

根本原因是perl-522包含三个中介链接,这些链接在perl-512中不存在。不知道为什么,但你有(或者不是,在这种情况下;-)。链接 存在于perl-512中,但它们不是中介的。您可以在上面的错误消息中看到丢失的调解器,也可以通过检查两个包:

jmason@m5a97:~$ pkg contents -Ho action.raw -t link -a mediator=perl runtime/perl-512
link mediator=perl mediator-priority=vendor mediator-version=5.12 path=usr/bin/perl pkg.linted.pkglint.dupaction010.2=true target=../perl5/5.12/bin/perl

jmason@m5a97:~$ pkg contents -r -Ho action.raw -t link -a mediator=perl runtime/perl-522
link mediator=perl mediator-priority=vendor mediator-version=5.22 path=usr/perl5/bin target=5.22/bin
link mediator=perl mediator-priority=vendor mediator-version=5.22 path=usr/perl5/man target=5.22/man
link mediator=perl mediator-priority=vendor mediator-version=5.22 path=usr/perl5/pod target=5.22/lib/pod
link mediator=perl mediator-priority=vendor mediator-version=5.22 path=usr/bin/perl target=../perl5/5.22/bin/perl

我怀疑在Ram的情况下,pkg install ... perl-512安装了一个perl-512版本,其中包括调解器。不确定这个版本是否已从公共solaris repo中删除,但对我来说,此命令没有任何效果,并且perl-512仍然没有调解器。结果,随后的pkg install ... perl-522继续失败。

如果有其他人遇到这个问题并且google将他或她引导到这个页面就像我一样,这就是我解决它的方法。

受到蒂姆福斯特excellent posts on republishing packages的启发,我使用了' pkgmogrify'更新perl-512以包含缺少的调解器。步骤是:

  1. 从solaris repo中提取perl-512的新副本:

    pkgrecv -s http://pkg.oracle.com/solaris/release --raw -d perl-512-proto perl-512@5.12.5-0.175.3.0.0.30.0

  2. 创建一个mogrify文件,perl-512.mog:

      

    < transform set name = pkg.fmri - >编辑值pkg:// [^ /] + / pkg://每晚/>
         < transform link path = usr / perl5 / bin - > add mediator perl>
         < transform link path = usr / perl5 / bin - >添加中介优先供应商>
         < transform link path = usr / perl5 / bin - >添加mediator-version 5.12>
         < transform link path = usr / perl5 / man - > add mediator perl>
         < transform link path = usr / perl5 / man - >添加中介优先供应商>
         < transform link path = usr / perl5 / man - >添加mediator-version 5.12>
         < transform link path = usr / perl5 / pod - > add mediator perl>
         < transform link path = usr / perl5 / pod - >添加中介优先供应商>
         < transform link path = usr / perl5 / pod - >添加mediator-version 5.12>

    第一个指令更改了' solaris'的发布商名称。到了晚上'这是我当地回购的名字。 (代替'夜间'适用于您的本地仓库的任何值。)其余指令将介体属性添加到三个链接。

  3. 创建更新的清单;我们称它为perl-512.mediated':

    pkgmogrify perl-512.mog perl-512-proto/runtime%2Fperl-512/5.12.5%2C5.11-0.175.3.0.0.30.0%3A20150821T171525Z/manifest > perl-512.mediated

  4. 将生成的包发布到您的本地仓库:

    pkgsend -s nightly publish -d perl-512-proto/runtime%2Fperl-512/5.12.5%2C5.11-0.175.3.0.0.30.0%3A20150821T171525Z perl-512.mediated

  5. perl-512是公司注册的一部分。设置其版本锁定方面以允许您更新它:

    pkg change-facet version-lock.runtime/perl-512=false

  6. 从您当地的仓库安装perl-512:

    pkg install pkg://nightly/runtime/perl-512

  7. 您现在应该在perl-512中看到所有四个中介链接:

    jmason@m5a97:~$ pkg contents -Ho action.raw -t link -a mediator=perl runtime/perl-512
    link facet.doc.man=all mediator=perl mediator-priority=vendor mediator-version=5.12 path=usr/perl5/man target=5.12/man
    link mediator=perl mediator-priority=vendor mediator-version=5.12 path=usr/perl5/bin target=5.12/bin
    link mediator=perl mediator-priority=vendor mediator-version=5.12 path=usr/bin/perl pkg.linted.pkglint.dupaction010.2=true target=../perl5/5.12/bin/perl
    link mediator=perl mediator-priority=vendor mediator-version=5.12 path=usr/perl5/pod target=5.12/lib/pod
    

    此时,您可以正常方式安装perl-522而不会出现问题。

    这种方法的缺点是您需要自己处理perl-512的任何最新更新,因为您现在正在本地仓库中跟踪该包。

答案 1 :(得分:1)

现在我有了解决这个问题的方法。 按照给定的命令来克服这个错误:

pkg install --accept --licenses perl-512
pkg install --accept --licenses perl-522
执行此目标路径后,

将更改为安装包,不会出现任何错误。