37.2安装和卸载软件包

假设image-1.0.0.tar.gz文件是可用的软件包,那么可以使用以下命令从Octave提示符安装

pkg install image-1.0.0.tar.gz

如果软件包安装成功,则不会在提示上打印任何内容,但如果在安装过程中出现警告或错误,则会返回。可以同时安装多个软件包,方法是在pkg install命令后面列出所有要安装的软件包。如果已经安装了不同版本的软件包,则会在安装新软件包之前将其删除。这使得升级和降级软件包的版本变得容易,但也使得同时安装同一软件包的多个版本变得不可能。

要查看安装了哪些软件包,请输入

pkg list
-| Package Name  | Version | Installation directory
-| --------------+---------+-----------------------
-|        image *|   1.0.0 | /home/jwe/octave/image-1.0.0

在这种情况下,image软件包的1.0.0版本已安装。这里的'*'包名称旁边的字符表示image软件包已加载并可供使用。

可以使用pkg uninstall这样的命令从系统中卸载软件包

pkg uninstall image

如果成功卸载软件包,则不会在软件包中打印任何内容,但如果出现警告或错误,则会返回。需要注意的是,删除时不需要用于安装的软件包文件,并且只有返回的软件包名称。pkg list应在移除软件包时使用。可以通过在pkg uninstall命令后面写入多个包名称来同时删除多个包

为了最大限度地减少包之间的代码重复,一个包可能依赖于另一个包。如果一个包依赖于另一个包,它将在安装过程中检查该包是否已安装。否则,将返回一个错误,并且不会安装软件包。可以在pkg install命令之后传递-nodeps的标志位

pkg install -nodeps my_package_with_dependencies.tar.gz

因为已安装的软件包要求安装其依赖项,因此dit可能无法正常起作用。因此,不建议禁用依赖项检查。

 
pkg command
pkg command pkg_name
pkg command pkg_name1 pkg_name2
pkg command option1pkg_name1
[out1, …] = pkg (command, …)

管理或查询Octave的软件包(成组的附加函数)。

取决于command的值和请求的返回参数的数量,可以使用pkg执行几个任务。command的可能值是:

search

搜索具有指定搜索术语的包。这可能需要互联网连接和cURL库。

pkg search foo bar baz

显示包含所有搜索术语的包描述。

显示的术语不区分大小写,也可以用正则表达式。 例如,

pkg search "[aeiou]{4,}"

显示所有描述包含四个或更多连续元音的包。

选项-all,例如:

pkg search -all

显示所有在Octave Packages软件源上的可用软件包(不仅仅是那些可以使用pkg命令安装的软件包)。

默认地,Octave Packages软件源索引在每个Octave会话中仅下载一次,以提高性能并减少重复搜索期间对索引服务器的负载。可以使用选项-refresh强制更新索引:

pkg search -all -refresh foo

如果提供了输出变量,例如:

mypackages = pkg ("search", "foo")

此时,pkg search只返回与搜索术语匹配的且可以用pkg install安装的软件包名称。

install

安装指定名称的软件包。例如,以下命令中的每条:

pkg install pkgname
pkg install 'pkgname-1.0.0.tar.gz'
pkg install 'https://somewebsite.org/pkgname-1.0.0.tar.gz'

都会尝试安装名为pkgname的软件包。 在pkg install之后的参数顺序是:

  1. 如果pkgname是一个本地文件,则Octave安装它。
  2. 或者,如果pkgname是一个URL,则Octave下载并安装它。
  3. 否则,Octave在线查询Octave Packages索引,寻找名为pkgname的软件包, 如果找到,则下载并安装其最新版本。如果无法访问Octave Packages索引,则可能会使用本地缓存的索引版本。 Octave Packages索引在每个Octave会话中仅下载一次(除非使用选项-refresh请求刷新索引)。

在线获取软件包需要互联网连接和cURL库。

不支持: GNU Octave不对任何安装的软件包负责。 如果需要支持或报告错误,你需要直接联系已安装软件包的维护者(运行pkg describe在软件包中获取信息)。

下面的选项可用于pkg install:

-nodeps

禁用依赖检查。使用此选项,即使系统上未安装它所依赖的另一个包,也可以安装一个软件包。谨慎使用这个选项。

-local

强制本地安装(仅对当前用户可用)。即便Octave正在以管理员权限运行。

-global

强制全局安装(对所有用户可用),即使Octave不是以管理员权限运行。用户必须有全局软件包存储的写权限。

-verbose

打印所有命令的执行输出。

-refresh

强制刷新缓存的软件包数据库。默认情况下,Octave在每个Octave会话中只下载一次Octave Packages索引。此选项即使在当前Octave会话中已下载了索引的情况下也会强制更新索引。 选项 -refresh适用于install, search, 和 update 命令。

-forge

选项-forge强制从Octave Packages软件源安装软件包。 不能用于从URL或本地文件安装软件包。它隐含-refresh

如果软件包tarball包含一个configure脚本,则在安装软件包期间运行该脚本。 如果包含一个Makefile文件,则默认使用命令make。 可以通过环境变量MAKE来覆盖默认命令。一些Octave包可能需要GNU make, 它可能在不同的名称下存在,例如gmake.

update

检查安装的Octave软件包是否为最新版本,并更新任何过时的项目。更新的软件包会根据Octave是否以提升的权限运行而全局或本地安装。这需要互联网连接和cURL库。

install命令的选项和要检查更新的第三方软件包名称可以在update命令中使用,以列表形式给出,跟在update命令后面。 如果选项-local-global被指定 pkg update限制更新检查到本地或全局安装的软件包,并在同一上下文中安装更新。例如,

更新所有软件包:

pkg update

更新所有本地安装的软件包:

pkg update -local

更新指定软件包,忽略依赖,最大详细输出:

pkg update -verbose -nodeps image signal geometry

更新多个软件包时按照字母顺序且不检查因安装顺序影响的依赖关系。如果发生与依赖顺序相关的pkg update失败, 使用pkg update -nodeps忽略依赖,或使用pkg install <package_name>手动更新单个软件包。

uninstall

卸载指定名称的软件包。例如,

pkg uninstall image

从系统中卸载image软件包。 如果另一个已安装的软件包依赖于image软件包,则会发生错误。使用-nodeps选项可以强制卸载软件包。

取决于Octave是否以管理员权限运行,默认情况下仅卸载全局或本地软件包。使用-global-local选项覆盖默认行为。

load

添加指定名称的包到路径中。加载一个软件包后,可以使用该软件包提供的函数。例如,

pkg load image

添加image软件包到路径中

注意: 当加载一个软件包时,pkg会自动尝试加载任何未加载的依赖项,除非指定了-nodeps标志。例如,

pkg load signal

添加signal软件包并且尝试加载它的依赖项:control软件包。 注意,使用-nodeps选项可能会对软件包功能产生不利影响。

unload

从路径中移除指定名称的软件包。在移除软件包后,无法使用该软件包提供的函数。 尝试移除一个其他软件包加载的软件包会导致错误;在这种情况下不移除任何软件包。 可以使用-nodeps选项强制移除一个软件包,有破坏已加载软件包的依赖项的风险。

list

显示当前安装的软件包列表。例如,

pkg list

将产生一个简短的报告,包含每个已安装软件包的名称、版本和安装目录。提供软件包名可以限制报告到特定软件包。例如:

pkg list image

如果只请求一个返回参数,那么pkg返回一个元胞数组,其中每个元素都是一个结构体,包含有关单个软件包的信息。

installed_packages = pkg ("list")

如果请求了两个返回参数,那么pkg将安装的软件包列表分为当前用户安装的软件包(本地软件包)和系统管理员安装的软件包(全局软件包)。

[user_packages, system_packages] = pkg ("list")

选项-forge列出Octave Packages索引上所有可以通过pkg命令安装的软件包。 这需要互联网连接和cURL库。这也会更新Octave Packages索引的本地缓存文件。调用

octave_packages = pkg ("list", "-forge")

相当于调用

octave_packages = pkg ("search", "-refresh", "-all")
describe

显示安装的软件包的简短描述。使用选项-verbose还列出软件包提供的函数。例如,

pkg describe -verbose

描述所有已安装的软件包及其提供的函数。

结果可以限制为一系列软件包:

## describe control and signal packages
pkg describe control signal

如果只请求一个返回参数,那么返回一个结构体,其中每个字段包含一个已安装软件包的描述和函数列表,作为返回值而不打印在屏幕上:

desc = pkg ("describe", "secs1d", "image")

如果请求的返回参数的任何软件包均未安装,pkg将返回一个错误,除非请求了第二个返回参数:

[desc, flag] = pkg ("describe", "secs1d", "image")

flag可以是"Not installed""Loaded", 或"Not loaded",对每个指定名称的软件包返回安装状态.

prefix

设置安装前缀目录。例如,

pkg prefix ~/my_octave_packages

设置安装前缀目录为~/my_octave_packages

软件包在这个目录中安装。

给定一个输出参数,返回当前安装前缀。例如:

pfx = pkg ("prefix")

安装架构的依赖文件的位置可以用一个额外的参数独立指定。例如:

pkg prefix ~/my_octave_packages ~/my_arch_dep_pkgs
local_list

设置从哪里查找本地安装的软件包的信息的文件。本地安装的软件包通常仅对当前用户可用。例如:

pkg local_list ~/.octave_packages

获取当前的local_list值,用

pkg local_list
global_list

设置从哪里查找全局安装的软件包的信息的文件。全局安装的包通常对所有用户可用。例如:

pkg global_list /usr/share/octave/site/api-v59/octave_packages

获取当前的global_list值,用

pkg global_list
build

编译一个软件包或多个软件包的二进制形式。生成的二进制文件本身是一个Octave软件包,可以用pkg正常安装。例如:

pkg build builddir image-1.0.0.tar.gz ...

这里的builddir是一个目录,在其中构建二进制包。 选项-verbose-nodeps依情况而定,此时其他的选项将忽略。

rebuild

从已经安装的全局和本地软件包中重新编译软件包数据库。 这可以在软件包数据库损坏的情况下使用。

test

运行内置的自测试,包含在所有由指定名称的软件包提供的函数中。例如:

pkg test image

详见: ver, news.


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

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