如何手动从OpenIndiana(或Solaris)pkg回购下载单个文件?

对于离线环境中的服务器,如何从http://pkg.openindiana.org/dev下载软件包? (或更好的知道http://pkg.oracle.com )

有一个安装链接,下载一个p5i文件,具有机器可读的下载信息,但没有可下载的软件包文件或文件列表的http URL。

该清单是直接可用http://pkg.openindiana.org/dev/manifest/0/developer%2Fbuild%2Fmake%400.5.11%2C5.11-0.151.1%3A20110912T022544Z

唯一剩下的就是弄清楚如何获得以这种方式列出的单个文件

 file b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7 chash=f3998eb4b0aa99b3c54682f1a765e19215e15622 group=bin mode=0755 owner=root path=usr/bin/sccsdiff pkg.csize=1620 pkg.size=3798 file 9b1eb9d425c9de60eba5759368160e709fb51143 chash=0de4a47b23c1ac5121c9216ec854b197c18bfe24 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/ad pkg.csize=2201 pkg.size=5762 file 0f594094532464eab978e00d4d3e18519538fe7b chash=e6685b5da6534ef06ad4aa51c4655fe72f98a2f1 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/bd pkg.csize=1082 pkg.size=2089 file a0d207452b8fa6dd62661cd8349fe92ae415de10 chash=67fd628d7578b7fd907eb75b973c91aeb7b06fee group=bin mode=0644 owner=root path=usr/lib/help/locale/C/cb pkg.csize=805 pkg.size=1498 file 6267fe29483aaffdd5ca7dadab0866e3c23024f5 chash=d769eee8c86a2aefb0af1abb6d55dd559b26864e group=bin mode=0644 owner=root path=usr/lib/help/locale/C/cm pkg.csize=1581 pkg.size=3341 file 18691bfa26474c1133b6ac55897f15bba8cf669a chash=55a97bca8ce191bae3621ace062f3192bf0def18 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/cmds pkg.csize=2279 pkg.size=6573 file 614eef6da7707fa4c77e5a0c958ec42eb1f7c68c chash=36df818d773e392d585fd58cf65d3dab93466528 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/co pkg.csize=2284 pkg.size=5010 file 50e3e4dd1731dd07e7633afab6da1825527a312d chash=8e98dd2c2a45cc35993e3c373ecace197b65e900 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/de pkg.csize=2108 pkg.size=4651 

编辑:单独的文件可以像这个例子一样用URL下载: http : //pkg.openindiana.org/dev/file/0/b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7

只剩下一件事 如何安装这些文件。

IPS客户端只能从IPS存储库安装软件包。 因此,如果您不希望将远程存储库作为发布者添加,幸运的是还有另一种select,即创buildIPS归档(p5p)。

请记住,IPS档案库不像Linux RPM。 例如,您不能直接从IPS归档文件安装软件。 但是,您可以将文件复制到其他系统,如非联网系统。 把IPS档案想象成一个可移植的存储库,因为这就是你将要使用它的方式。 只有在您从IPS归档文件创build本地存储库之后,才可以从中使用包。

IPS档案允许您:

  • 将一个或多个软件包(以及所有必需的依赖关系)下载到p5p存档文件中。
  • 根据p5p存档文件的内容创build一个本地存储库。
  • 从本地创build的存储库安装软件包。

举例来说,您有兴趣testing软件包的最新版本。 然后做这样的事情:

 pkgrecv -s http://example.com:10000 -d ~/firefox_test.p5p -a -r pkg://userland/web/browser/[email protected]:20160817T064143Z 

使用pkgrepo -s ~/firefox_test.p5p list检查包的内容,或者使用: pkg list -f -g ~/firefox_test.p5p

将IPS存档添加为本地存储库: pkg set-publisher -p ~/firefox_test.p5p

最后要安装特定版本的firefox,请使用: pkg install [email protected]:20160817T064143

最简单的方法是使用pkgrecv将软件包从源存储库中提取到本地存储库。 IPS是一个networking包系统,所以你不能像使用SVr4数据stream一样从一个文件安装包。 最后我听说(甲骨文收购之前),pkg5家伙正在使用磁盘格式,但我不认为它已经完成。 如果你喜欢,我可以和其中一个开发者核实一下。 无论如何,这是由。

你需要做什么

  1. 创build一个本地软件包回购:

     pkgrepo create /path/to/localrepo 
  2. 从远程仓库抓包:

     pkgrecv -s http://pkg.openindiana.org/dev -d /path/to/localrepo <FMRI_or_glob_of_packages> 

自从我这样做以来(上一次当OpenSolaris即将closures,我们(OpenIndiana团队)从OpenSolaris / dev中获取软件包),但是您可能需要将本地repo的发布者设置为openindiana .org发布者:

 pkgrepo set -s publisher/prefix=openindiana.org /path/to/localrepo 

启动一个pkg.depotd实例,以便pkg可以使用它:

 pkg.depotd -d /path/to/localrepo -p 10000 

(您可能想要在SMF中设置它,请参阅OpenIndiana wiki上的howto 。)

然后添加您的本地回购作为openindiana.org的来源:

 pkg set-publisher -g http://localhost:10000 openindiana.org 

最后…

不,这样做真的不是一个简单的方法。 这是我不喜欢进入IPS的原因之一。

IPS中的每个单独文件都使用gzip压缩,因此您可以手动使用curlgzip -dc来下拉gzip -dc压缩文件。

例如:如George Bailey提到的那样获取sccsdiff (文件sha1 hash b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7 )…

 curl http://pkg.openindiana.org/dev/file/0/b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7 | gzip -dc > sccsdiff 

您还可以validation未压缩文件的sha1哈希值…

 $ sha1sum sccsdiff b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7 sccsdiff 

OmniOS wiki上的更多信息:在没有pkg的情况下获取IPS包文件(1)

我创build了一个便携式工具来做这样的事情:

http://www.bolthole.com/solaris/ipsutil/README

IPS库中的软件包只有在通过networking通过pkg(1)命令实际安装软件包的上下文中才有意义。 一个软件包在IPS repo中没有被表示为单个文件; 相反,包的清单文件会跟踪各个位。 我的理解是,这允许有效的升级,因为只有更改的文件需要传输。

一种select是将IPS资源库镜像到本地系统或另一个可访问的系统。 在旧的OpenSolaris站点和OpenIndiana的wiki上有说明。 自从我反映IPS回购之后已经有一段时间了,所以我不能评论这些链接的说明的准确性。

有可能还有其他的select,但我不知道他们的头顶。