在内部,软件包实际上就是一个 gzip 压缩的 tar 文件,其中包含一个任意名称的顶级目录。下文将该目录称为 package,它可能包含以下文件:
package/CITATION这是一个可选文件,描述如何引用该软件包以用于出版。它将由 citation 函数逐字显示。
package/COPYING这是必需的许可文件,包含软件包的许可证。一般情况下,许可证没有任何限制。但是,如果软件包包含动态链接函数,则许可证必须与 GNU 通用公共许可证兼容。
package/DESCRIPTION这是一个必需的文件,包含关于软件包的信息。详情请参阅DESCRIPTION 文件。
package/ChangeLog这是一个可选文件,描述对软件包源文件所做的所有更改。
package/INDEX这是一个可选文件,描述软件包提供的函数。如果未提供此文件,则将根据软件包中的函数和 DESCRIPTION 文件中的 Categories 关键字自动创建一个。详情请参阅INDEX 文件。
package/NEWS这是一个可选文件,描述所有值得提及的用户可见更改。随着此文件体积的增长,旧条目可以移入 package/ONEWS。
package/ONEWS这是一个可选文件,用于存放来自 NEWS 文件的旧条目。
package/PKG_ADD一个可选文件,包含将软件包添加到用户路径时运行的命令。请注意,软件包源代码中的 PKG_ADD 指令也会由 Octave 软件包管理器添加到此文件中。另外,软件包中应避免使用符号链接,因为某些文件系统不支持符号链接,因此该文件的一个典型用途是用自动加载指令替代符号链接:
ln -s foo.oct bar.oct
替换为如下自动加载指令:
autoload ('bar', which ('foo'));
有关 PKG_ADD 指令的详细信息,请参阅PKG_ADD 和 PKG_DEL 指令。
package/PKG_DEL一个可选文件,包含从用户路径中移除软件包时运行的命令。请注意,软件包源代码中的 PKG_DEL 指令也会由 Octave 软件包管理器添加到此文件中。有关 PKG_DEL 指令的详细信息,请参阅PKG_ADD 和 PKG_DEL 指令。
package/pre_install.m这是一个可选函数,在安装软件包之前运行。该函数使用一个参数调用,该参数是一个结构体,其字段名称取自 DESCRIPTION 中的数据以及软件包函数将要安装的路径。
package/post_install.m这是一个可选函数,在安装软件包之后运行。该函数使用一个参数调用,该参数是一个结构体,其字段名称取自 DESCRIPTION 中的数据以及软件包函数已安装的路径。
package/on_uninstall.m这是一个可选函数,在移除软件包之前运行。该函数使用一个参数调用,该参数是一个结构体,其字段名称取自 DESCRIPTION 中的数据、软件包函数已安装的路径,以及软件包当前是否已加载。
除上述文件外,软件包还可以包含以下一个或多个目录:
package/inst一个可选目录,包含由软件包直接安装的任何文件。通常包括所有 m 文件。
package/src一个可选目录,包含必须在软件包安装之前构建的代码。如果该目录中存在 ./configure 脚本,Octave 软件包管理器将执行它;如果该目录中存在 Makefile 文件,则接着调用 make。但不会调用 make install。在调用 configure 和 make 时,环境变量 MKOCTFILE、OCTAVE_CONFIG 和 OCTAVE 将分别设置为正确版本的 mkoctfile、octave-config 和 octave 程序的完整路径。如果存在名为 FILES 的文件,则其中列出的所有文件都将被复制到 inst 目录,从而也会被安装。如果 FILES 文件不存在,则 src/*.m 和 src/*.oct 将被复制到 inst 目录。
package/doc一个可选目录,包含软件包的文档。此目录中的文件将直接安装到已安装软件包的子目录中,以供将来查阅。
如果 Octave GUI 正在运行,则在加载软件包时,可选的 Qt 帮助文件 package/doc/pkg-name.qch 将被添加到文档浏览器中。当卸载软件包时,该帮助文件将从文档浏览器中移除。
package/bin一个可选目录,包含在加载软件包时将添加到 Octave EXEC_PATH 中的文件。其中可能包含软件包内函数调用的外部脚本等。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4