对于离线环境中的服务器,我该如何从http://pkg.openindiana.org/dev?(或更广为人知的http://pkg.oracle.com)
有一个安装链接可以下载p5i
文件,其中包含机器可读的下载信息,但没有可下载包文件或文件列表的 http URL。
答案1
IPS 客户端只能从 IPS 存储库安装软件包。因此,如果您不想将远程存储库添加为发布者,幸运的是,还有另一种选择,即创建 IPS 存档 (p5p)。
请记住,IPS 存档与 Linux RPM 不同。例如,您无法直接从 IPS 存档安装软件。但您可以将文件复制到其他系统,例如非联网系统。将 IPS 存档视为可移植存储库,因为这就是您的使用方式。只有在从 IPS 存档文件创建本地存储库后,您才能使用其中的软件包。
IPS 档案允许您:
- 将一个或多个包(以及所有必要的依赖项)下载到 p5p 存档文件中。
- 根据 p5p 存档文件的内容创建本地存储库。
- 从本地创建的存储库安装包。
比如说,你有兴趣测试某个软件包的最新版本。那么请执行以下操作:
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
答案2
剩下的唯一事情就是弄清楚如何获取这些单独的文件,并以这种方式列出
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
只剩下一件事了。如何安装这些文件。
答案3
最简单的方法是使用pkgrecv
将包从源存储库拉到本地存储库。IPS 是一个网络包系统,因此您目前无法像使用 SVr4 数据流那样从单个文件安装包。我最后听说(在 Oracle 收购之前)pkg5 团队正在开发一种磁盘格式,但我认为它还没有最终确定。不过,如果您愿意,我可以和其中一位开发人员核实一下。无论如何,顺便说一下。
你需要做什么
创建本地包存储库:
pkgrepo create /path/to/localrepo
从远程仓库获取软件包:
pkgrecv -s http://pkg.openindiana.org/dev -d /path/to/localrepo <FMRI_or_glob_of_packages>
我已经有一段时间没有这样做了(上次是在 OpenSolaris 即将关闭的时候,我们 [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 维基上。)
然后添加您的本地 repo 作为 openindiana.org 的来源:
pkg set-publisher -g http://localhost:10000 openindiana.org
最后...
不,确实没有更简单的方法。这是我不喜欢转向 IPS 的原因之一。
答案4
我已经创建了一个便携式实用程序来做这样的事情: