We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extracting FreeBSD kernel tarball compressed with XZ renames
./boot/kernel/kernel to ./boot/kernel/GNUSparseFile.0/kernel
./boot/kernel/kernel
./boot/kernel/GNUSparseFile.0/kernel
which means contains_file and extract_file methods no longer work with file not found error.
contains_file
extract_file
file not found
https://download.freebsd.org/ftp/releases/amd64/13.1-RELEASE/kernel.txz
Testing with:
use v5.32; use Archive::Tar; say for Archive::Tar -> new('/opt/13.1/kernel.txz') -> list_files;
and tar tf '/opt/13.1/kernel.txz' we get the following difference:
tar tf '/opt/13.1/kernel.txz'
422c422 < ./boot/kernel/kernel --- > ./boot/kernel/GNUSparseFile.0/kernel
while both bsdtar and gtar (GNU tar) can list and extract
bsdtar
gtar
# tar --version bsdtar 3.4.2 - libarchive 3.4.2 zlib/1.2.11 liblzma/5.2.5 bz2lib/1.0.8 # gtar --version tar (GNU tar) 1.34
I've installed the following FreeBSD packages before running A:T, of course (for XZ support):
There's some info on sparse files, but I don't understand what is it, and what makes A:T do that while the CLI utilities list and extract properly.
https://www.gnu.org/software/tar/manual/html_section/Sparse-Formats.html https://www.gnu.org/software/tar/manual/html_node/Sparse-Recovery.html
using Perl version 5.32.0
The text was updated successfully, but these errors were encountered:
It also extracts to the wrong path, creating boot/kernel/GNUSparseFile.0/kernel whereas gnu tar creates boot/kernel/kernel.
boot/kernel/GNUSparseFile.0/kernel
boot/kernel/kernel
Searching thru that particular archive, I see:
...^@^@^@^@^@^@^@^@^@27 mtime=1652339437.749802 22 GNU.sparse.major=1 22 GNU.sparse.minor=0 40 GNU.sparse.name=./boot/kernel/kernel 32 GNU.sparse.realsize=29343680 ...^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@./boot/kernel/GNUSparseFile.0/kernel^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@000555 ^@000000 ^@000000 ^@00157340700 14237131355 017533^@ 0^@^@...
Where ^@ is less(1)'s representation of NUL.
NUL
This makes me think this was created with a version of tar that is using an older version of tar's sparse file format.
Sorry, something went wrong.
No branches or pull requests
Extracting FreeBSD kernel tarball compressed with XZ renames
./boot/kernel/kernel
to./boot/kernel/GNUSparseFile.0/kernel
which means
contains_file
andextract_file
methods no longer work withfile not found
error.https://download.freebsd.org/ftp/releases/amd64/13.1-RELEASE/kernel.txz
Testing with:
and
tar tf '/opt/13.1/kernel.txz'
we get the following difference:while both
bsdtar
andgtar
(GNU tar) can list and extractI've installed the following FreeBSD packages before running A:T, of course (for XZ support):
There's some info on sparse files, but I don't understand what is it, and what makes A:T do that while the CLI utilities list and extract properly.
https://www.gnu.org/software/tar/manual/html_section/Sparse-Formats.html
https://www.gnu.org/software/tar/manual/html_node/Sparse-Recovery.html
using Perl version 5.32.0
The text was updated successfully, but these errors were encountered: