Почему apt upgrade изменяет мой x-www- браузер на google-chrome-stable?

Нам нужно разделить вашу проблему на две части:

  1. Восстановите массив для отсутствующего суперблока / dev / sda .
  2. Обработка поврежденных данных на / dev / sdc

Восстановление массива

Я предполагаю, что блок размером 4 КБ, не восстановленный из / dev / sda, был суперблоком, потому что ваш раздел начинался с 1 МБ (2048 секторов) ), а суперблок начался в +8 секторах раздела (2056 секторов), точно на отметке 2056 сектора, где существует плохой сектор. Предполагается, что REST данных на этом диске не поврежден на 100%.

Проблема с - accept-clean в целом заключается в том, что вам нужно быть предельно осторожным, чтобы параметры точно соответствовали тому, что использовалось во время создания массива. Изменения в значениях по умолчанию с даты создания вашего массива вторник, 28 августа 17:44:52 2012 являются здесь вашим ВРАГОМ. Версия метаданных, предположение о растровом изображении (устройства размером более 100 ГБ теперь получают их автоматически), макет рейда и т. Д.

Если вы не совсем уверены, я настоятельно рекомендую клонировать ВСЕ 4 диска в другое место (в крайнем случае вы можете даже использовать один диск с 4 разделами каждый по 1 ТБ / 1953122952 секторов) и попытаться повторно -соберите это вместо этого. Поскольку / dev / sda начинает выходить из строя так же, как / dev / sdc , и вы, вероятно, купили все свои диски одновременно, возможно, даже две полные копии данных, на случай, если у вас возникнет еще один сбой диска при попытке восстановления (зависит от того, насколько ценными вы считаете свои данные).

Если Предположим, очистка работает с тестовой копией, у вас есть хорошие возможности для перемещения ее в другое место.

Вот вам некоторая справка по сценарию, обобщающая то, что вы дали выше (обратите внимание, что - изучите отчеты в единицах секторов для некоторых значений, но - создание принимает единицы измерения KiB).

#!/bin/bash
# Facts we know about your array, from your mdadm -E output.
num_devices=4
num_spares=0
chunk_size=512 # KiB
data_offset=1024 # KiB
drive_size=976561152 # KiB
uuid=87fdc598:a995d0f7:41123bcf:e2760aeb
metadata_ver=1.2
name=itake:0
bitmap=none
original_device_order=(/dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1)
# I assume you recovered:
# /dev/sda to /dev/sde
# /dev/sdc to /dev/sdf
# If not, adjust as needed.
#
# Read all the way to the bottom of my response first, because you
# MIGHT want to use 'missing' in place of /dev/sdf1 initially.
new_device_order=(/dev/sde1 /dev/sdb1 /dev/sdf1 /dev/sdd1)

mdadm --create /dev/md0 \
--level 5 --layout left-symmetric
-n $num_devices -x $num_spares \
--uuid $uuid \
--metadata $metadata_ver \
--chunk $chunk_size
--size $drive_size \
--data-offset $data_offset \
--name $name \
--bitmap $bitmap \
${new_device_order[@]}  

Очистка массива (вариант 1)

Мы знаем, что / dev / sdc имели поврежденные сектора в середине области данных, и в качестве немного более ядерного варианта вы можете передать отсутствует вместо / dev / sdf1 во время создания массива, а затем выполните mdadm --add / dev / md0 / dev / sdf1 для принудительной перестройки из другого устройства на / dev / sdf1 .

Очистка массива (вариант 2)

Теперь нам нужно исправить тот факт, что части / dev / sdc исчезли, а их место на / dev / sdf , есть просто обнуленные блоки.

echo repair >/sys/devices/virtual/block/md0/md/sync_action

В конце вы должны его починить, но я не уверен на 100% в поведении, которое будет предпринято для восстановления этих блоков.

2
13.04.2017, 15:22
2 ответа

Postinst пакета Chrome не делает ничего необычного. Он просто вызывает update-alternatives --install . Это изменяет ссылку в / etc / alternatives , только если альтернатива в настоящее время находится в автоматическом режиме, а вновь установленная версия имеет более высокий приоритет, чем текущая настройка.

update-alternatives не знает и не заботится о том, был ли пакет недавно установлен или обновлен. Скрипт postinst вызывает его во всех случаях. Это желаемое поведение: обновление пакета может изменить приоритет некоторых его альтернатив.

Если альтернатива меняется, единственное объяснение состоит в том, что она уже была в автоматическом режиме раньше. Он мог вернуться в автоматический режим, если вы временно удалили пакет, который включает текущую ручную настройку, то есть если вы временно удалили iceweasel . С другой стороны, обновление iceweasel не влияет на ручную настройку, потому что сценарий prerm для iceweasel правильно удаляет альтернативу только в том случае, если она была удалена или деконфигурирована нет, если он обновляется.

¹ Обратное неверно: prerm из google-chrome-stable содержит ошибку, она безоговорочно устраняет альтернативу, так что если вы обновите пакет и вручную установили альтернативу на / usr / bin / google-chrome-stable , он вернется в автоматический режим.Опять же, эта ошибка срабатывает только в том случае, если альтернатива была вручную установлена ​​на Chrome, она не влияет на то, что произойдет, если альтернатива была вручную установлена ​​на что-то другое.

2
27.01.2020, 22:04

Сценарий postinstall, который управляет этим, был упомянут в ответе Жиля; Я покопался и нашел здесь скрипт postinst debian chrome . Раздел, управляющий этим поведением, не изменился с момента его написания в 2013 году, поэтому изменение приоритета исключено.

Я поэкспериментировал со строками update-alternatives --install из сценария и определил, что сообщение, которое я видел, действительно генерируется только в том случае, если режим ранее был "автоматическим". Я также обнаружил еще одно неочевидное поведение.Если альтернатива находится в «ручном режиме», и символическая ссылка в / etc / alternatives / x-www-browser затем указывает на другой двоичный файл пользователем, а не использует систему альтернатив, обновить -alternatives автоматически распознает изменение и продолжит отслеживать конфигурацию (при условии, что двоичный файл также имеет запись в группе ссылок). Но , если для альтернативы установлен «автоматический режим» , ручное перенаправление ссылки приведет к тому, что update-alternatives больше не будет отслеживать конфигурацию, а переустановка альтернативы приведет к сбросить его на основе приоритета .

Я должен заключить, что я либо ранее изменил это поведение, переустановив «альтернативу» с более низким приоритетом, либо, что более вероятно, вручную создал новую символическую ссылку, не переходя из «автоматического режима». Я скажу, что логика, лежащая в основе приоритета «200», как объяснено в связанном скрипте, совершенно нелепа, поэтому меня не удивит, если я изменил приоритет только из принципа. ; -)

1
27.01.2020, 22:04

Теги

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