37.1安装和卸载软件包

假设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_name
: pkg command option pkg_name
: [out1, …] = pkg (command, … )

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

包可以全局安装(即为系统的所有用户安装),也可以本地安装(即仅为当前用户安装)。

默认情况下,全局软件包安装在整个系统的位置。这通常是安装Octave本身的文件夹的子目录。因此,Octave需要对该文件夹进行写访问才能安装全局包,而全局包通常只有在Octave以管理权限运行时才可用,例如在类Unix系统上以root(或超级用户)身份运行时,或在Windows上以提升的权限(“以管理员身份运行”)运行时。

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

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

对于全局和本地软件包,有单独的数据库保存有关已安装软件包的信息。如果某个包是全局安装的,也可以是本地安装的,则本地安装优先于全局安装。使用哪个(全局或本地)软件包安装也可以通过使用前缀和/或使用local_list输入参数。使用这些机制,同一软件包的几个不同版本也可以并排安装(但不能同时加载)。

软件包可能依赖于外部软件和/或其他软件包。为了能够安装这样的软件包,应该提前安装这些依赖项。依赖于其他软件包的软件包仍然可以使用安装-nodeps标志位不令人满意的依赖对外部软件(如库)的影响取决于单个包。

必须先加载软件包,然后才能使用它们。加载包时,Octave会执行以下任务:

  1. 如果包依赖于其他包(以及pkg load被调用,而不是-nodeps参数),则不会立即加载软件包。相反,这些依赖关系是首先加载的(如果需要的话递归加载)。
  2. 当所有依赖项都得到满足时,包的子目录将添加到搜索路径中。

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

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

command的值取决于以及关于所指定的返回参数的数量,pkg可以用于执行多个任务。command的可能值是

install

安装软件包。例如

pkg install image-1.0.0.tar.gz

安装在image-1.0.0.tar.gz文件中找到的软件包。文件名可以是URL。

pkg install 'http://somewebsite.org/image-1.0.0.tar.gz'

安装在给定URL中找到的软件包。这需要internet连接和cURL库。

安全风险:安装前不进行软件包验证。它与从给定的URL手动下载包并安装它具有相同的安全问题。

没有支持:GNU Octave社区不对从外部网站安装的软件包负责。要获得支持或报告错误,您需要直接联系已安装包的维护人员(详见DESCRIPTION包的文件)

这里的option变量可以包含影响软件包安装方式的参数。这些参数可以是一个或多个

-nodeps

包管理器将禁用依赖项检查。使用此参数,即使软件包依赖于系统上未安装的另一个软件包,也可以安装该软件包。小心使用此参数。

-local

即使使用管理权限运行Octave,也会强制执行本地安装(包仅对当前用户可用)。

广告
-global

即使Octave没有以管理权限运行,也会强制进行全局安装(所有用户都可以使用包)。用户必须具有全局包存储的写访问权限。

广告
-forge

直接从Octave Forge存储库安装软件包。这需要一个互联网连接和cURL库。

安全风险:安装前不进行软件包验证。没有包的赋值,也没有确认下载了正确文件的复选框。它的安全问题与从Octave Forge存储库手动下载并安装包的问题相同。

广告
-verbose

包管理器将在执行时打印所有命令的输出。

广告
广告
update

对照存储库检查已安装的Octave Forge软件包,并更新所有过时的项目。更新后的软件包是全局安装还是本地安装,具体取决于Octave是否以提升的权限运行。这需要一个互联网连接和cURL库。

install命令的参数和要检查更新的单个包名可以指定为update命令后面的列表。如果-local-global参数被指定,pkg update将更新检查限制为本地或全局已安装包,并在同一上下文中安装更新。例如

更新所有软件包:

pkg update

更新所有本地软件包:

pkg update -local

更新某些包,忽略依赖项,最大详细程度:

pkg update -verbose -nodeps image signal geometry

多个软件包的更新按字母顺序排序,不检查受安装顺序影响的依赖项。如果依赖关系与顺序相关而导致pkg update发生问题,使用pkg update -nodeps忽略依赖项,或pkg install -forge <package_name>手动更新单个包。

广告
uninstall

卸载命名的软件包。例如

pkg uninstall image

删除image包。如果另一个已安装的软件包依赖于image将发出一个错误。无论如何都可以使用-nodeps参数卸载软件包

广告
load

将软件包添加到路径中。加载包后,可以使用包提供的函数。例如

pkg load image

将添加image包到路径。

注意:当加载包时,pkg也会自动尝试加载任何卸载的依赖项,除非-nodeps已指定标志。例如

pkg load signal

将添加signal包,并尝试加载其依赖项:control软件包请注意,加载的软件包的函数可能会受到使用的影响-nodeps标志位即使稍后加载了必要的依赖项,顶级包的函数仍可能受到影响,因为可能没有遵循最佳加载顺序。

广告
unload

从路径中删除软件包。卸载软件包后,无法再使用软件包提供的函数。尝试卸载其他加载的软件包仍然依赖的软件包将导致错误;在这种情况下不会卸载任何包。可以使用强制移除软件包-nodeps标志,但要注意依赖包的函数可能会受到影响。与加载包时一样,在使用-nodeps标志可能无法恢复独立软件包的所有函数,因为所需的加载顺序可能不正确。

广告
list

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

pkg list

将为每个已安装的软件包生成一个简短的返回,其中包含软件包名称、版本和安装目录。提供软件包名称以限制对特定软件包的返回。例如

pkg list image

如果指定单个返回参数,则pkg返回一个元胞数组,其中每个元素都是一个包含单个包信息的结构体。

installed_packages = pkg ("list")

如果指定了两个输出参数pkg将已安装软件包的列表拆分为当前用户安装的软件包和系统管理员安装的程序集。

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

这里的"-forge"参数列出了Octave Forge软件源提供的软件包。这需要一个互联网连接和cURL库。例如

oct_forge_pkgs = pkg ("list", "-forge")
广告
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-2025 Octave中文网

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