对于离线环境中的服务器,如何从http://pkg.openindiana.org/dev下载软件包? (或更好的知道http://pkg.oracle.com )
有一个安装链接,下载一个p5i
文件,具有机器可读的下载信息,但没有可下载的软件包文件或文件列表的http URL。
唯一剩下的就是弄清楚如何获得以这种方式列出的单个文件
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档案允许您:
举例来说,您有兴趣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家伙正在使用磁盘格式,但我不认为它已经完成。 如果你喜欢,我可以和其中一个开发者核实一下。 无论如何,这是由。
创build一个本地软件包回购:
pkgrepo create /path/to/localrepo
从远程仓库抓包:
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
压缩,因此您可以手动使用curl
和gzip -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了一个便携式工具来做这样的事情:
IPS库中的软件包只有在通过networking通过pkg(1)命令实际安装软件包的上下文中才有意义。 一个软件包在IPS repo中没有被表示为单个文件; 相反,包的清单文件会跟踪各个位。 我的理解是,这允许有效的升级,因为只有更改的文件需要传输。
一种select是将IPS资源库镜像到本地系统或另一个可访问的系统。 在旧的OpenSolaris站点和OpenIndiana的wiki上有说明。 自从我反映IPS回购之后已经有一段时间了,所以我不能评论这些链接的说明的准确性。
有可能还有其他的select,但我不知道他们的头顶。