【问题标题】:genisoimage garbles filenamesgenisoimage 乱码文件名
【发布时间】:2015-04-07 17:25:07
【问题描述】:

我正在尝试为离线 RPM 存储库构建 ISO 映像。我有我需要的文件和结构,但是当我创建 ISO 映像时,文件名是乱码:

ConsoleKit-32bit-0.2.10-64.65.1.x86_64.rpm

变成

ConsoleKit-32bit-0.2.10-64..r

我在命令行中使用以下选项进行了尝试,结果相同:

genisoimage -f -U -o update.iso /data/iso
genisoimage -f -l -allow-lowercase -o update.iso /data/iso
genisoimage -f -l -allow-leading-dots -relaxed-filenames -allow-lowercase -allow-multidot -no-iso-translate -o update.iso /data/iso

是否有任何我可能遗漏的东西可以保留文件名?这对于 ISO 存储库的正常工作至关重要。

【问题讨论】:

    标签: linux rpm iso


    【解决方案1】:

    正如 David Bugg 的回答所暗示的,您启用的标志实际上不允许您的文件名是完整的长度。

    Pure ISO 9660 仅支持 31 个字符的文件名,包括 3 个字符的扩展名(genisoimage 通常将此限制为 8.3 格式,但您使用 -l 会禁用该限制并允许完整的 31 个)。您提到的名称被截断的文件被截断为 29 个字符,包括扩展名中的一个字符,因此 31 个字符包括扩展名中的两个空白字符。

    Joliet 最多允许 64 个 unicode 字符名称,并且可以使用 David Bugg 建议的标志更长 (103)。然而,这仅适用于 Windows,在某种程度上适用于 Linux。 genisoimage 手册页 建议使用 -R(或 -r,它具有更好的所有权默认值),因为 Rock Ridge 标准支持 255 字节的文件名和大于 8 个目录的文件夹深度,并且是一个真正的标准不同于joliet。

    没有提到 Windows 是否支持 Rock Ridge,但我怀疑它确实支持,所以我建议同时使用这两种方法,这样 Windows 用户就不会在他们的驱动器中安装 ISO 来检查它并查看损坏的文件名。

    -J -joliet-long -r 添加到您的命令中,您应该没有问题。

    根据裸击者的评论更新的最终命令:

    genisoimage -f -J -joliet-long -r -allow-lowercase -allow-multidot -o update.iso /data/iso
    

    【讨论】:

    • 我的最终工作命令是:genisoimage -f -r -allow-lowercase -allow-multidot -o update.iso /data/iso
    【解决方案2】:

    你错过了-joliet-long

    把它和-U -r加起来应该不错。

    【讨论】:

    • 您可能还应该添加 -J - 我不确定 -joliet-long 是否真的有效。
    • 另外,使用 -r。直接来自手册页:为了获得更大的可移植性,请考虑同时使用 Joliet 和 Rock Ridge 扩展。维基百科 (en.wikipedia.org/wiki/Rock_Ridge) 指出,rock ridge 允许文件名最多 255 个字符,并且是一个实际标准,与 joliet 不同。
    • @David Bugg, -U -r 的组合成功了。修改您的帖子,我会将其标记为解决方案。
    【解决方案3】:

    我只能使用“-U -R”来处理未翻译的文件名和 Rock Ridge 属性(我相信超过 8 个文件夹深):

    来源:http://realtechtalk.com/genisoimage_errors_with_long_filenames_and_deep_directory_structures-2092-articles

    【讨论】:

      猜你喜欢
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      相关资源
      最近更新 更多