Что может объяснить ошибку «неверная сохраненная длина блока»?

Я запускаю приложение Rails (3.2.3) с Ruby 1.9.3p194 на базовом образе Ubuntu lucid32 в виртуальном ящике Vagrant. Виртуальная коробка работает на Леопарде, чего бы это ни стоило. Я пытаюсь использовать rubyzip в приложении для распаковки zip-архива — 2009_da_lmp.zip. Используя код непосредственно из примеров в репозитории rubyzip, я могу подтвердить, что могу перечислить содержимое файла архива:

#f is the absolute path to 2009_da_lmp.zip (string)
Zip::ZipFile.open(f) { |zf| zf.entries[0] }  
 => 20090101_da_lmp.csv #that is indeed a file in the archive.

Используя еще немного кода из примеров в репозитории, я пытаюсь получить фактический файл в архиве:

Zip::ZipInputStream.open(f) { |zis|
  entry = zis.get_next_entry
  print "first line of '#{entry.name}' (#{entry.size} bytes: ) "
  puts "'#{zis.gets.chomp}'" }

=> first line of '20090101_da_lmp.csv' (826610 bytes: ) Zlib::DataError: 
   invalid stored block lengths #and a long stack trace I can provide 
                                #if that might help

Утилита распаковки Mac OS прекрасно распаковывает архив. Мне было интересно, было ли это связано с какой-то вещью, связанной с кодировкой (мой языковой стандарт установлен на en_US.UTF-8, чтобы сделать использование PostgreSQL в dev менее болезненным), но я не знаю, как определить, так ли это. Я не могу найти никакой информации о том, что может вызвать эту ошибку.

6
задан Steve Rowley 14 May 2012 в 02:55
поделиться