diff --git a/alien/Alien/Package/Deb.pm b/alien/Alien/Package/Deb.pm index bf09058..0141264 100644 --- a/alien/Alien/Package/Deb.pm +++ b/alien/Alien/Package/Deb.pm @@ -216,7 +216,7 @@ sub scan { } else { @filelist=map { chomp; s:\./::; "/$_" } - $this->runpipe(0, "ar -p '$file' data.tar.gz | gzip -dc | tar tf -"); + $this->runpipe(0, "ar -p '$file' data.tar.gz | gzip -dc | tar tf - || ar -p '$file' data.tar.xz | xzcat | tar tf -"); } $this->filelist(\@filelist); @@ -244,7 +244,7 @@ sub unpack { or die "Unpacking of '$file' failed: $!"; } else { - $this->do("ar -p $file data.tar.gz | gzip -dc | (cd ".$this->unpacked_tree."; tar xpf -)") + $this->do("ar -p $file data.tar.gz | gzip -dc | (cd ".$this->unpacked_tree."; tar xpf -) || ar -p '$file' data.tar.xz | xzcat | (cd ".$this->unpacked_tree."; tar xpf -)") or die "Unpacking of '$file' failed: $!"; } diff --git a/alien/Alien/Package/Deb.pm b/alien/Alien/Package/Deb.pm index bf09058..a6efacf 100644 --- a/alien/Alien/Package/Deb.pm +++ b/alien/Alien/Package/Deb.pm @@ -143,6 +143,7 @@ sub getcontrolfile { " cat '$file'; cd /; rm -rf /tmp/tar_out.$$)"; } my $getcontrol = "ar -p '$file' control.tar.gz | gzip -dc | ".tar_out($controlfile)." 2>/dev/null"; + $getcontrol .= " || ar -p '$file' control.tar.xz | xzcat | ".tar_out($controlfile)." 2>/dev/null"; return $this->runpipe(1, $getcontrol); } }