CDROM.ECLASS
章节: eclass-manpages (5)更新: 2024 年 11 月
索引 返回主内容
名称
cdrom.eclass - CD-ROM 处理函数描述
获取用于那些可爱的基于 CD 的 emerge 的 CD。是的,这违反了整个“非交互式”策略,但该死,我想要 CD 支持!不要在 pkg_* 阶段(如 pkg_setup)调用这些函数,因为它们不应用于二进制包。大多数使用此 eclass 的包将需要 RESTRICT="bindist",但要点仍然存在。这些函数通常在 src_unpack 中调用。
支持的 EAPIS
7 8函数
- cdrom_get_cds <cd1 文件>[:alt cd1 文件] [cd2 文件[:alt cd2 文件]] [...]
- 尝试根据 CD 上的文件定位 CD。
如果数据跨越多个磁盘,则可以提供其他参数来检查更多文件。调用 cdrom_load_next_cd() 以扫描该集中下一张磁盘。
有时需要支持内容不同的备用 CD“集”。可以将每个磁盘的备用文件附加到每个参数,并用 : 字符分隔。此功能常用于支持从现有安装进行安装。请注意,检测到第一张磁盘后,该集将被锁定,因此 cdrom_load_next_cd() 仅会在后续磁盘上扫描该特定集中的文件。
给定的文件可以位于命名的子目录中。无需指定相同文件名的不同大小写,因为匹配是不区分大小写的。文件名可以包含空格等特殊字符。仅 : 不允许。
如果您不希望每个磁盘都称为“CD #1”、“CD #2”等,则可以根据需要提供您自己的名称。为单个磁盘设置 CDROM_NAME,为多个磁盘设置 CDROM_NAMES 作为数组,或为从 1 开始的每个磁盘设置单独的 CDROM_NAME_# 变量。
尽管您可能在旧的 ebuild 中看到过,但从未能够提供每个集的磁盘名称。这没有意义,因为所有名称都在检测到第一张磁盘之前最初显示。作为解决方法,您可以在检测到第一张磁盘后重新定义名称变量。
此函数以 cdrom_load_next_cd() 调用结束,以扫描第一张磁盘。有关此 eclass 读取和写入的变量的更多详细信息,请参阅该函数的描述。
- cdrom_load_next_cd
- 如果向 cdrom_get_cds() 提供了多个参数,则可以调用此函数来扫描下一张磁盘。此函数也会隐式调用以扫描第一张磁盘。
在任何类似光学媒体的已挂载文件系统上扫描 cdrom_get_cds() 给出的文件。如果未找到匹配项,则会提示用户插入并挂载磁盘,然后按 Enter 键重新扫描。这将持续循环,直到找到匹配项或用户使用 Ctrl+C 中断。
用户可以通过为单个磁盘设置 CD_ROOT,如果将多个磁盘合并到同一目录树中(对于现有安装很有用),则设置 CD_ROOT,或为从 1 开始的每个磁盘设置单独的 CD_ROOT_# 变量来覆盖扫描位置。如果未找到匹配项,则该函数会因错误而退出,因为在这种情况下重新扫描将无济于事。
希望为特定软件包永久设置 CD_ROOT 或 CD_ROOT_# 的用户可以使用 Portage 的 /etc/portage/env 功能。
无论使用哪种扫描方法,此函数都会为您设置几个变量
CDROM_ROOT: 检测到的磁盘的根路径。
CDROM_MATCH: 匹配文件的路径,相对于 CDROM_ROOT。
CDROM_ABSMATCH: 匹配文件的绝对路径。
CDROM_SET: 匹配的集号,从 0 开始。CDROM_MATCH 的大小写可能与传递给 cdrom_get_cds() 的参数不同,因为匹配是不区分大小写的。因此,在执行文件操作时,应使用此变量(或 CDROM_ABSMATCH)以确保找到文件。使用 newins 而不是 doins 以保持最终结果一致并利用 Bash 的大小写转换功能(如 ${FOO,,})。
不过,您可能需要每个磁盘上的不仅仅是匹配的文件。您也不应该假设这些文件的大小写,但处理此问题超出了本 ebuild 的范围。有关一个很好的示例,请参阅 games-action/descent2-data,它将高级通配符与高级 tar 功能相结合,以简洁地处理不区分大小写匹配、大小写转换、文件移动和条件排除。
使用 doins/newins 直接从已挂载的磁盘复制将删除任何只读权限,但在首先复制到中间目录时请注意这些权限。尝试作为非 root 用户清理包含只读文件的构建目录将导致错误。如果您按照建议使用 tar,则可以使用 --mode=u+w 轻松解决此问题。
请注意,您只能在磁盘列表中向前移动,因此请确保仅在完成使用当前磁盘时才调用此函数。
如果您 cd 到 CDROM_ROOT 内的任何位置,请记住在再次调用此函数之前离开该目录,否则用户将无法卸载当前磁盘。
ECLASS 变量
- CDROM_OPTIONAL(在继承之前设置)
- 默认情况下,eclass 在假设人们将使用这些功能的情况下将 PROPERTIES="interactive" 设置为。如果您的软件包可以选择支持基于磁盘的安装,则将其设置为“yes”,我们将根据 USE="cdinstall" 有条件地设置内容。
维护者
[email protected]报告 Bug
请通过 https://bugs.gentoo.org/ 报告 Bug文件
cdrom.eclass另请参阅
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/cdrom.eclass
索引
此文档由 man2html 使用手册页创建。
时间: 2024 年 11 月 12 日格林尼治标准时间 03:27:01