我想创建一个简单的(?)软件发行版(包/SD-UX),其中包含一个简单的 hello world shell 脚本没有出于 CI/CD 原因使用 hpux 提供的任何工具。
我有手工制作这个布局从最新的 cURL 仓库复制,chmodded 到 root:sys,并存档,tar -C helloworld-hpux -czvf helloworld-7.6.6.depot.tar.gz .
但是当我进行 swinstalling 时,出现 I/O 错误。
swagentd 日志:
* Registered RPC protocol "ncacn_ip_tcp" with endpoint "2121".
* Registered RPC protocol "ncadg_ip_udp" with endpoint "2121".
* Checking job queue at 1 minute intervals.
* Started install agent on "/" for [email protected],
pid=25798, 09/26/19 04:48:54 CDT
* Started source agent on "/tmp/helloworld-7.6.6.depot.gz" for
[email protected], pid=25799, 09/26/19 04:48:55 CDT
ERROR: The INDEX file on the source did not exist or could not be
read.
ERROR: The target "/tmp/helloworld-7.6.6.depot.gz" could not be
opened. pid=25799 09/26/19 04:48:55 CDT
* Agent pid=25799 completed. 09/26/19 04:48:55 CDT
* Agent pid=25798 completed. 09/26/19 04:48:55 CDT
我该如何修复它?
答案1
除非swinstall
在过去 5 年左右得到增强,否则我认为它无法读取 gzipped .depot.gz
.您必须gunzip
它才能提供普通的.depot
.
据我所知,INDEX文件是一组层次结构的序列化:您应该检查swpackage(4)
手册页并将INDEX文件的结构与所描述的包规范文件(PSF)的结构进行比较。 INDEX 文件有更多元素,但整体结构应该类似。
看起来好像helloworld-hpux/catalog/INDEX
少了product
一行。换句话说:
...
media
sequence_number 1
tag helloworld
data_model_revision 2.40
instance_id 1
control_directory helloworld
revision 7.66.0
title "helloworld"
...
大概应该是:
...
media
sequence_number 1
product
tag helloworld
data_model_revision 2.40
instance_id 1
control_directory helloworld
revision 7.66.0
title "helloworld"
...
media
PSF 语法中不存在,但它可能标识包含软件分发各个部分的各种磁带/CD/其他介质(如果有多个),因此它可能是 INDEX 语法中的一个子容器,其中包含任意数量的子product
容器-子容器。
即使在PSF中,也必须至少有一个product
容器,并且tag
、 、control_directory
、revision
和title
都适用于product
PSF语法。data_model_revision
并instance_id
没有直接记录在 PSF 中,但在swpackage(4)
手册页的product
或bundle
级上下文中提到了它们。稍后,您将拥有一个subproduct
,它必须是 的子容器product
。