From: knu@... Date: 2018-12-25T13:13:12+00:00 Subject: [ruby-core:90713] [Ruby trunk Bug#15461] ruby-2.6.0.tar.gz seems incorrectly packed Issue #15461 has been updated by knu (Akinori MUSHA). After investigation, the 2.6.0 tar file has the "typeflag" of '0' for each directory instead of '5' which modern tar implementations should use. The reason major implementations like GNU tar and libarchive-based tar can extract the directories with typeflag '0' file is because they have special treatment to treat a file with a trailing slash as directory regardless of the typeflag, which minitar is seemingly missing. libarchive: https://github.com/libarchive/libarchive/blob/master/libarchive/archive_read_support_format_tar.c#L566 GNU tar: http://git.savannah.gnu.org/cgit/tar.git/tree/src/extract.c#n1543 So, my conclusion is that this can be treated as a packaging issue while major tar implementations can deal with it. ---------------------------------------- Bug #15461: ruby-2.6.0.tar.gz seems incorrectly packed https://bugs.ruby-lang.org/issues/15461#change-75888 * Author: valich (Valentin Fondaratov) * Status: Third Party's Issue * Priority: Normal * Assignee: * Target version: * ruby -v: 2.6.0 * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- 1. Download `ftp.ruby-lang.org/pub/ruby/2.6/ruby-2.6.0.tar.gz` 2. Run from the console: `ruby -e 'require "zlib";require "minitar";Minitar.unpack(Zlib::GzipReader.new(File.open("ruby-2.6.0.tar.gz", "rb")), "x")'` It fails with an exception: ``` Traceback (most recent call last): 17: from -e:1:in `
' 16: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar.rb:249:in `unpack' 15: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar/input.rb:27:in `open' 14: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar.rb:256:in `block in unpack' 13: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar/input.rb:90:in `each_entry' 12: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar/reader.rb:207:in `each_entry' 11: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar/reader.rb:207:in `loop' 10: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar/reader.rb:226:in `block in each_entry' 9: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar/input.rb:91:in `block in each_entry' 8: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar.rb:258:in `block (2 levels) in unpack' 7: from /home/user/.rvm/gems/ruby-2.5.0/gems/minitar-0.7/lib/archive/tar/minitar/input.rb:162:in `extract_entry' 6: from /home/user/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/fileutils.rb:193:in `mkdir_p' 5: from /home/user/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/fileutils.rb:193:in `each' 4: from /home/user/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/fileutils.rb:208:in `block in mkdir_p' 3: from /home/user/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/fileutils.rb:208:in `reverse_each' 2: from /home/user/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/fileutils.rb:210:in `block (2 levels) in mkdir_p' 1: from /home/user/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/fileutils.rb:229:in `fu_mkdir' /home/user/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/fileutils.rb:229:in `mkdir': File exists @ dir_s_mkdir - x/ruby-2.6.0/libexec (Errno::EEXIST) ``` It seems flags are set incorrectly in the package. Same command for previous rubies tgzs works well. -- https://bugs.ruby-lang.org/ Unsubscribe: