genisoimage加工文件名

时间:2015-04-07 17:25:07

标签: linux rpm iso

我正在尝试为脱机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 repo正常工作至关重要。

3 个答案:

答案 0 :(得分:5)

正如David Bugg的回答所示,你启用的标志实际上并不允许你的文件名全长。

纯ISO 9660仅支持31个字符的文件名,包括3个字符的扩展名(genisoimage通常将此限制为8.3格式,但您使用-l禁用该限制并允许完整的31)< / em>的。您提到的截断名称的文件被截断为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添加到您的命令中,您应该没有问题。

最终命令从nakedhitman的评论中更新:

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

答案 1 :(得分:3)

您错过了-joliet-long

将其与-U -r一起添加,它应该是好的。

答案 2 :(得分:0)

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

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