У меня более старая система (Fedora Core 6, это изолированная система, используемая для сборки для старых устройств). Я пытаюсь создать подходящую виртуальную машину и заметил разницу, которую не могу объяснить.
Обе системы имеют пакет glibc-2.5-3, который включает файл /lib/libc-2.5.so.
В rpm -qi glibc
вывод совпадает точно в обеих системах.
В обеих системах rpm -Vv
говорит, что все в порядке (........ /lib/libc-2.5.so
).
В md5sum
файла в двух системах НЕ СООТВЕТСТВУЮТ. (
Когда я делаю objdump -x
файла в двух системах, я получаю РАЗНЫЕ значения начального адреса, подтверждая, что на самом деле два файла SO отличаются.
Итак, почему rpm -V
скажите мне, что md5sum совпадает, когда это явно не так? Как получилось, что эти библиотеки стали другими?
Эти библиотеки, вероятно, предварительно связаны. RPM знает о предварительном связывании.
Эта почта говорит об этом.
«Проблема» (если это можно так назвать) в том, что rpm знает о prelink и знает, как с этим бороться. Как кратко объясняется в этом адрес электронной почты списка рассылки, «Rpm when –verify будет предварительно связывать –verify, что по сути является –undo с последующим повторным связыванием и сравнением». Таким образом, причина того, что rpm не проваливает проверку, заключается в том, что он в основном отключает предварительную ссылку для файла (ов) для проверки, запускает проверку, а затем снова включает предварительную ссылку. Вот почему rpm не сообщает об изменении MD5SUM, а AIDE -.
Где связанный адрес электронной почты:
Пт, 4 апреля 2003 г., в 16:24:39 -0500 Джеймс Ралстон написал:
2004-04-04 в 11:34: 35-0500 Якуб Елинек писал:
человек предварительная ссылка
Со временем я напишу больше документации.
Один вопрос...
Если предварительная ссылка изменяет фактические двоичные файлы и библиотеки на месте (что похоже на то, что я читал на странице руководства), не делает ли это по существу бесполезным "rpm --verify"? Каждый бинарный файл и библиотека, измененные с помощью prelink, не пройдут тесты size / md5sum / mtime.
Это не подведет. rpm, когда --verify будет предварительно связывать --verify, что по сути является --undo с последующим повторным связыванием и сравнением.
Даже если --undo используется для отмены предварительного связывания, команда "rpm --verify" все равно не сработает (если предварительная ссылка не восстановит точное время, которое было в файлах до его запуска, то есть) ...
prelink не изменяет время работы предварительно связанных библиотек / двоичных файлов.
Якуб
Другая возможность, как правило, заключается в том, что отдельные проверки могут быть отключены на уровне каждого файла или каталога в самом файле спецификации. Таким образом, хотя это и неверно в данном случае, вполне возможно, что упаковщик может отключить проверку суммы MD5 для файлов, которые, как известно, изменяются по той или иной причине.