
: How to repack an epub file from command line I unzipped an epub file to make some minor modifications. How can I repack it properly to be a valid epub file from command line on Linux?
I unzipped an epub file to make some minor modifications. How can I repack it properly to be a valid epub file from command line on Linux?
Free books android app tbrJar TBR JAR Read Free books online gutenberg
More posts by @Sarah

: How can I display 'word count' in Calibre while browsing my Library? I use Calibre, to manage my library of eBooks. It is easy to include the size of the book, but with images and such
3 Comments
Sorted by latest first Latest Oldest Best
A one-liner based on the previous answers, which will take the current dirname as the epub name, and the contents of the current dir as the epub: zip -rX "../$(basename "$(realpath .)").epub" mimetype $(ls|xargs echo|sed 's/mimetype//g')
Free books android app tbrJar TBR JAR Read Free books online gutenberg
zip -X0 "my.epub" "mimetype"
zip -Xr "my.epub" "META-INF/" "OEBPS/"
As palacsint already pointed out, without the -X flag, one would run into the epubcheck error PKG_005
"The mimetype file has an extra field of length %1$s. The use of the extra field feature of the ZIP format is not permitted for the mimetype file."
because the mimetype file is being used as magical number within the compressed zip file, and the zip extra field feature (where zip programs and operating systems can place non-standardized data) would destroy the magical number mechanism (see github.com/IDPF/epubcheck/pull/497). The -0 flag makes sure that the mimetype file doesn't get compressed, which is also necessary for the mimetype file to work as a magical number, otherwise the data at the position where the mimetype file is expected could be compressed, scrambled gibberish.
Free books android app tbrJar TBR JAR Read Free books online gutenberg
zip -rX ../my.epub mimetype META-INF/ OEBPS/
Without -X you could get the following when validating it with EpubCheck:
ERROR: my.epub: Mimetype entry must not have an extra field in its ZIP header
If mimetype is not the first in the epub file EpubCheck prints the following:
ERROR: my.epub: Mimetype entry missing or not the first in archive
Free books android app tbrJar TBR JAR Read Free books online gutenberg