Может ли установка флага исполняемого файла в сценарии установки привести к сбою проверки CRC?
Недавно я установил VMWare Workstation для Linux на мою машину с Ubuntu, и в процессе установки я столкнулся с особой проблемой. Сам установщик - это своего рода архив, который связан с make-файлом. Этот make-файл устанавливает все необходимые компоненты, и, судя по журналам, компилирует некоторые модули и проверяет CRC скопированных файлов.
Этот установщик должен быть запущен примерно так:
sudo sh ./VMware-Workstation-Full-9.0.1-894247.x86_64.bundle
Но я сделал это с другой стороны в первый раз:
chmod uga+x VMware-Workstation-Full-9.0.1-894247.x86_64.bundle
sudo ./VMware-Workstation-Full-9.0.1-894247.x86_64.bundle
И после этого установка не удалась, со следующими сообщениями:
[2012-12-06 15:07:18,348] [vmware-tools-windows 9.2.2] Failed to copy file from windows.iso to /usr/lib/vmware/isoimages/windows.iso
Traceback (most recent call last):
File "/tmp/vmis.KNkJ7S/install/vmware-installer/vmis/core/component.py", line 193, in doit
data = fileobj.read(10485760) # Read 10 MB at once. Not too large to fill
File "/tmp/vmis.KNkJ7S/install/vmware-installer/python/lib/gzip.py", line 227, in read
self._read(readsize)
File "/tmp/vmis.KNkJ7S/install/vmware-installer/python/lib/gzip.py", line 292, in _read
self._read_eof()
File "/tmp/vmis.KNkJ7S/install/vmware-installer/python/lib/gzip.py", line 311, in _read_eof
raise IOError, "CRC check failed"
IOError: CRC check failed
[2012-12-06 15:07:18,365] [vmware-tools-windows 9.2.2] Installation failed, rolling back installation.
Я думал, что это может быть потому, что загруженный файл был поврежден, потому что его контрольные суммы с использованием MD5 и SHA1 отличались от тех, которые указаны на сайте загрузки. После удаления файла, его повторной загрузки и запуска так, как он должен быть запущен, все прошло нормально.
Так что мой вопрос здесь просто из любопытства. Возможно, установка флага исполняемого файла привела к сбою проверки CRC?
1 ответ
Нет, когда вы устанавливаете флаг исполняемого файла, изменяется только файловый индекс, в котором хранится эта информация.
Содержимое файла остается неизменным, как и контрольная сумма.
Вы говорите, что контрольная сумма MD5/SHA1 вашего файла и на сайте отличалась, поэтому да, загруженный файл был поврежден. Файл, вероятно, был загружен только частично, что объясняет, почему он изначально работал, но падал при распаковке.
(Вы можете проверить это сами с помощью простого эксперимента:
# ls -l /bin/gawk
-rwxr-xr-x 1 root root 267648 Aug 19 2011 /bin/gawk
# sha1sum /bin/gawk
d8fcc0aae41635dedb449523989af47f290fe22a /bin/gawk
Режим 755, контрольная сумма d8fcc0aae41635dedb449523989af47f290fe22a
,
# stat /bin/gawk
(...)
Change: 2012-11-07 17:24:49.000000000 +0100
stat
"s Change
показать, что индекс был последний раз изменен месяц назад.
Теперь я меняю режим файла:
# date
Thu Dec 6 16:07:48 CET 2012
# chmod 644 /bin/gawk
# sha1sum /bin/gawk
d8fcc0aae41635dedb449523989af47f290fe22a /bin/gawk
# stat /bin/gawk
(...)
Change: 2012-12-06 16:07:48.000000000 +0100
Индод изменился (сравните с date
выходной), но контрольная сумма не имеет.)