Eu realmente comecei a pensar e não consigo reproduzir o comportamento que você afirma ter visto: BusyBox tar
, star
, libarchive-bsdtar
.
(post anterior) A questão é: qual tar você estava usando? O tar GNU em 8.5 / 8.7 era quase idêntico, e ambos causaram o mesmo erro que você viu. O que não causaria o uso de algum outro alcatrão através de alternativas do Debian /
dpkg-divert
, ou que estivesse em outro lugar no seu caminho.
Estas são as versões do GNU tar enviadas com cada lançamento, conforme indicado pelas listagens ISO no FTP da Debian:
debian-8.5.0-amd64-CD-1.list.gz:tar_1.27.1-2+b1_amd64.deb debian-8.7.0-amd64-CD-1.list.gz:tar_1.27.1-2+deb8u1_amd64.deb
Eles são extremamente semelhantes, contendo exatamente mais um patch para o CVE-2016-6321. Você pode ver como o Debian tratou aqui: link
O patch lida com o tratamento de /../
entradas do caminho no tarball e não afeta o tratamento de argumentos.
Se obtivermos os dois debs (no meu caso eu os tirei do netinst iso), e extrair os binários do tar, podemos testar o comportamento:
$ for i in tar_1.27.1-2+b1_amd64 tar_1.27.1-2+deb8u1_amd64 ; do \ ls -la ${i}.deb && \ deb2targz ${i}.deb && \ mkdir -p $i && \ tar -xf ${i}.tar.xz -C $i && \ find $i -name tar -type f -perm /111 -ls \ ; done ; # First Debian package -r--r--r-- 1 root root 675968 Mar 24 21:31 tar_1.27.1-2+b1_amd64.deb # Convert it to a tarball for extracting deb2targz: converting 'tar_1.27.1-2+b1_amd64.deb' ... deb2targz: skipping section 'debian-binary' deb2targz: skipping section 'control.tar.gz' deb2targz: wrote 'tar_1.27.1-2+b1_amd64.tar.xz' # Tar binary in the first debian package: 108669076 352 -rwxr-xr-x 1 root root 358072 Nov 8 2014 tar_1.27.1-2+b1_amd64/bin/tar # Second debian package -r--r--r-- 1 root root 676278 Mar 24 21:32 tar_1.27.1-2+deb8u1_amd64.deb # Convert it to a tarball for extracting deb2targz: converting 'tar_1.27.1-2+deb8u1_amd64.deb' ... deb2targz: skipping section 'debian-binary' deb2targz: skipping section 'control.tar.gz' deb2targz: wrote 'tar_1.27.1-2+deb8u1_amd64.tar.xz' # Tar binary in the first debian package: 543129777 352 -rwxr-xr-x 1 root root 358072 Oct 31 14:37 tar_1.27.1-2+deb8u1_amd64/bin/tar
Agora, temos as duas versões extraídas e podemos compará-las com uma variante do seu comando de teste:
# Variables to make it clear which one we are using: $ tar1=./tar_1.27.1-2+b1_amd64/bin/tar $ tar2=./tar_1.27.1-2+deb8u1_amd64/bin/tar # First $ $tar1 --keep-directory-symlink czf /tmp/foo.tar.gz /tmp/foo ./tar_1.27.1-2+b1_amd64/bin/tar: You must specify one of the '-Acdtrux', '--delete' or '--test-label' options Try './tar_1.27.1-2+b1_amd64/bin/tar --help' or './tar_1.27.1-2+b1_amd64/bin/tar --usage' for more information. # Second $ $tar2 --keep-directory-symlink czf /tmp/foo.tar.gz /tmp/foo ./tar_1.27.1-2+deb8u1_amd64/bin/tar: You must specify one of the '-Acdtrux', '--delete' or '--test-label' options Try './tar_1.27.1-2+deb8u1_amd64/bin/tar --help' or './tar_1.27.1-2+deb8u1_amd64/bin/tar --usage' for more information.
Quanto à discussão de outras implementações de alcatrão, veja minha resposta a uma questão de diferença entre implementações de tar: link