Как удержать пакет от обновления с помощью скрипта postinst в DEB

Какой именно дистрибутив/среду вы загружаете?

Это может быть простая проверка файловой системы, которая просто обновляет последнюю -проверенную метку времени. Вместо того, чтобы брать хеш-сумму, было бы интереснее сделать 1 :1 копию, а затем сравнить их байт -с -байтом (cmp -l), чтобы узнать, что именно изменилось.

Обычно файловые системы модифицирует не ядро, а пользовательское пространство, в которое вы загружаетесь. Большинство LiveCD (Live -USB -Sticks ), даже созданные для целей спасения, модифицируют файловые системы, монтируя их в поисках собственных живых данных. С systemd/udev в фоновом режиме также происходит много волшебства, о котором вы, возможно, не подозреваете.

Если вы можете изменить initramfs/раннюю загрузку, попробуйте установить /proc/sys/vm/block_dumpперед чем-либо еще, и вы можете получить некоторые сюрпризы относительно того, что написано где в dmesg.

Примечание. :Это вызовет проблемы, если вы уже записываете сообщения ядра на диск, так как каждая запись вызовет новую запись только в журнал.

I can manually mount the file system read-only and unmount as much as I want.

Даже монтирование -только для чтения не всегда гарантирует отсутствие -изменений:

# truncate -s 100M foobar.iso
# losetup --find --show foobar.iso 
/dev/loop0
# mkfs.ext4 foobar.iso
# md5sum foobar.iso 
59dea589bb84855e282d1415b3238230  foobar.iso
# mount -o ro /dev/loop0 loop/
# md5sum /dev/loop0
47c89177d619b55b701a1ddbde352c90  /dev/loop0

Что здесь произошло? Без понятия, правда...

--- a.txt   2018-12-26 20:39:13.578096660 +0100
+++ b.txt   2018-12-26 20:39:18.444742584 +0100
@@ -1536,11 +1536,10 @@
 *
 03000400  c0 3b 39 98 00 00 00 04  00 00 00 00 00 00 04 00  |.;9.............|
 03000410  00 00 10 00 00 00 00 01  00 00 00 01 00 00 00 00  |................|
-03000420  00 00 00 00 00 00 00 00  00 00 00 12 00 00 00 00  |................|
+03000420  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 03000430  15 de d5 f7 6f 52 43 9b  a9 18 9b 3d 28 65 2d 51  |....oRC....=(e-Q|
 03000440  00 00 00 01 00 00 00 00  00 00 00 00 00 00 00 00  |................|
-03000450  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
-03000460  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
+03000450  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 *
 03800400  58 64 00 00 00 90 01 00  00 14 00 00 40 6d 01 00  |Xd..........@m..|
 03800410  4d 64 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |Md..............|

Если вы хотите немного усилить идею -только для чтения, используйте mount -o loop,ro, это добавляет промежуточное устройство -только для чтения. Но даже это не является гарантией чего-либо.

0
31.01.2021, 06:26
1 ответ

Соответствующее исправление состоит в том, чтобы использовать правильный номер версии, а не пытаться удержать пакет, сняв блокировки в postinst. Пакет QEMU, который вы заменяете, имеет «эпоху», число перед двоеточием в номере версии, «1 :3.1...». Номер вашей версии тоже нуждается в этом, , т.е.«1 :5.2.50...»

aptбудет считать вашу версию более новой, чем версия в репозиториях.

5
18.03.2021, 22:33

Теги

Похожие вопросы