37.1背景信息

软件包可以安装在全局(即用于操作系统中的所有用户)或本地(即仅用于当前用户)。

全局软件包默认安装在系统范围的目录中,这通常是Octave本身安装的子目录。 因此,Octave需要对该文件夹有写访问权限才可以安装全局软件包,通常只有在以root(或超级用户)身份运行Octave时才有, 例如在Unix-like系统上以root(或超级用户)身份运行,或者Windows上的提升权限("以管理员身份运行")。

相反,本地软件包默认安装在用户的家目录(或Windows上的用户配置文件)中,并且仅对该特定用户可用。 通常,它们可以在没有管理员权限的情况下安装。

当Octave在管理员权限下运行时,pkg默认安装软件包到全局软件包位置。 否则,软件包默认安装到本地位置。用户可以通过可选参数(-local-global)覆盖此默认安装位置,如下所示。 当前使用的默认软件包安装位置可以通过pkg prefix查询得到.

对于全局软件包和本地软件包,分别维护着关于已安装软件的数据库。 如果某些软件包同时安装在全局位置和本地位置,则本地安装优先级高于("遮盖")全局安装。 哪一个(全局或本地)安装位置被使用还可以通过使用前缀和/或使用‘local_list’输入参数来操纵。 使用这些机制,可以同时安装同一软件包的不同版本(但不能同时加载)。

软件包可以依赖于外部软件和/或其他软件包。要能够安装此类软件包,这些依赖项应事先进行安装。 一个依赖于另一个软件包的软件包仍然可以使用-nodeps标志位进行安装。 对外部软件(如库)未满足依赖关系的影响取决于各个软件包。

软件包必须先加载才能使用。当加载软件包时,Octave执行以下任务:

  1. 如果软件包依赖于其他软件包(并且调用pkg load不带-nodeps选项),则该软件包不会立即加载。 相反,它将加载其依赖项(如果需要的话,会递归加载)。
  2. 当所有依赖项都满足时,软件包的子目录被添加到搜索路径。

这种加载顺序可能导致依赖项提供的函数被顶级包提供的同名函数覆盖。

每次将一个包添加到搜索路径时,如果该包提供了初始化脚本,则会自动执行这些初始化脚本。


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2