PYCDLIB-EXPLORER(1)
β¨ PYCDLIB-EXPLORER π
okay bestie, so this is pycdlib-explorer(1) from the General Commands Manual β it's the little interactive bestie that lets you poke around inside ISO files and β¨remixβ¨ them. No cap.
πΈ NAME πΈ
pycdlib-explorer β a tool to examine and modify ISOs using pycdlib π
π SYNOPSIS π
pycdlib-explorer <iso-file>
π¦ DESCRIPTION π¦
So here's the vibe: this is a tool to examine and modify existing ISO files on disk. Using this tool, the files, directories, and metadata on an ISO can be examined, new files can be added, and old files can be deleted. Iconic, honestly. π«Ά
But listen β due to the nature of the ISO standard, files or directories on the ISO cannot be modified in place in a general way. It's not a personality flaw, it's just how ISOs are. To accomplish that, you remove the file and then re-add it with new contents. That's the move. π
β οΈ Heads up: the commands that change the contents of the ISO only modify the in-memory copy. Your changes are written out to a new ISO file when the write command is issued. So if you rage-quit without writing, nothing happened. Periodt.
And here's the twist: pycdlib-explorer has no command-line options at all. Zero. Instead, it is controlled entirely at runtime through commands. The following section describes the available commands in pycdlib-explorer. π
π COMMANDS π
Each of these is a whole main character. Here's the full roster, no skips, no skimming. π§
β add_file
add_file <iso_path> <src_filename> [rr_name=<rr_name>] [joliet_path=<joliet_path>]
Add the contents of src_filename to the ISO at the location specified in iso_path. π
Now the rules, and bestie these are non-negotiable:
- If the ISO is a Rock Ridge ISO, rr_name must be specified; otherwise, it must not be.
- If the ISO is not a Joliet ISO, joliet_path must not be specified.
- If the ISO is a Joliet ISO, joliet_path is optional, but highly recommended to supply. fr fr, just give it.
β cd
cd <iso_dir>
Change the current working directory to relative or absolute ISO path iso_dir. Just like cd but make it ISO. π¦
β cwd
cwd
Show the current working directory. That's it, that's the whole job. π
β exit
exit
Exit out of pycdlib-explorer. Bye bestie! π
β get
get <iso_file> <out_file>
Copy the contents of the relative or absolute ISO path iso_file into out_file. Extract that file, queen. π
β help
help
Print the available commands. Use "help <cmd>" for a more detailed description of the commands, including the command-line arguments they require. It's giving built-in bestie who always knows. π
β ls
ls
Show the contents of the current working directory. The format of the output is: TYPE(F=file, D=directory) NAME. So like, F means file, D means directory, then the name. Simple, cute, done. β¨
β modify_file_in_place
modify_file_in_place <iso_path> <src_filename>
Replace the contents of the file referred to in iso_path with the contents from src_filename.
π¨ WARNING: This command modifies the opened ISO file in-place. That is not a drill. Also, the src_filename must occupy the same number of extents (2048-byte blocks) as the original file. If it doesn't, we're in trouble. π
β mkdir
mkdir <iso_path> [rr_name=<rr_name>] [joliet_path=<joliet_path>]
Make a new directory called iso_path. π
Same rules as before, so let's run it back:
- If the ISO is a Rock Ridge ISO, rr_name must be specified; otherwise, it must not be.
- If the ISO is not a Joliet ISO, joliet_path must not be specified.
- If the ISO is a Joliet ISO, joliet_path is optional, but highly recommended to supply.
β print_mode
print_mode [iso9660|rr|joliet|udf]
Change which 'mode' of filenames are printed out. There are four main modes: ISO9660 (iso9660, the default), Rock Ridge (rr), Joliet (joliet), and UDF (udf). Let's break it down because this is the lore. π
- The original
iso9660mode only allows filenames of 8 characters, plus 3 for the extension. Vintage. Retro. Constrained. - The Rock Ridge extensions allow much longer filenames and much deeper directory structures. Glow up. β¨
- The Joliet extensions also allow longer filenames and deeper directory structures, but in an entirely different context (though in most circumstances, the Joliet context will mirror the ISO9660/Rock Ridge context).
- The UDF Bridge extensions add an entirely parallel UDF context to the ISO as well.
Any given ISO will always have ISO9660 mode, but may have any combination of Rock Ridge, Joliet, and UDF (including none of them). Mix and match, it's your world. π
How to use it:
- Running this command with no arguments prints out the current mode.
- Passing
'iso9660'as an argument sets it to the original ISO9660 mode. - Passing
'rr'as an argument sets it to Rock Ridge mode. - Passing
'joliet'as an argument sets it to Joliet mode. - Passing
'udf'as an argument sets it to UDF mode.
β quit
quit
Exit out of pycdlib-explorer. Same energy as exit, different spelling. Both slay. π
β rm_file
rm_file <iso_path>
Remove the file named iso_path from the ISO. Note that this must be a file; to remove a directory, use rmdir. Don't mix them up bestie, the tool will simply not be having it. π
β rmdir
rmdir <iso_path>
Remove the directory named iso_path from the ISO. Note that this must be a directory; to remove a file, use rm_file. Yes, it's the mirror image of the one above. Balance. π¦
β tree
tree
List the contents of the ISO in a tree-like format, similar to the bash tree command. Aesthetic AND functional. πΈ
β write
write <out_file>
Write a valid ISO9660 file out to out_file, taking into account any changes made while running the program. This is also sometimes referred to as "mastering" the ISO. π
π¨ WARNING: Note that the out_file must NOT be the same file as the input file, or the resulting ISO will not work properly. Do not do this. I am begging. π
π SEE ALSO π
π AUTHOR π
Chris Lalancette <clalancette@gmail.com> β the legend who made all of this happen. π«Ά
and that's the whole page, bestie!! π this was pycdlib-explorer, part of the General Commands Manual, dated Jan 2018 β¨ go forth and master some ISOs, you've got this π
ππ¦
π¦ where this page comes from
- epel 10: pycdlib-tools 1.16.0-2.el10_3 Β· LGPL-2.0-only
- fedora 43: pycdlib-tools 1.15.0-5.fc43 Β· LGPL-2.0-only
- fedora 44: pycdlib-tools 1.15.0-6.fc44 Β· LGPL-2.0-only
- nixos 26.05: python3.13-pycdlib 1.16.0
- nixos 26.05: python3.14-pycdlib 1.16.0
- nixpkgs unstable: python3.13-pycdlib 1.22.0
- nixpkgs unstable: python3.14-pycdlib 1.22.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms