Я столкнулся с странной ситуацией, когда при установке пакета через apt-get
вызвал перезапуск запущенных (производственных!) экземпляров mysqld на некоторых серверах Linux версии 16.04.
Мы бежали sudo apt-get install -y iotop
на четырех серверах. На трех серверах установка завершилась неудачно из-за [ERROR] unknown variable 'rpl_semi_sync_slave_enabled=1'
. Эта переменная была установлена только на этих трех серверах. На этом этапе служба mysql, которую мы использовали, закрылась!
На четвертом сервере не было идентичной конфигурации mysql. Примечательно, что переменная rpl_semi_sync_slave_enabled
нет. Apt удалось установить iotop
но что интересно, наша служба mysql сделала не перезапустите или выключите.
Таким образом, кажется, что некоторые пакеты при неудачной установке убивают запущенные процессы, которые кажутся несущественными для установки! Из-за этого я очень настороженно отношусь к установке дополнительных пакетов на наши производственные серверы, на которых выполняются процессы, которые мы не хотим перезапускать каждый раз. Как я могу узнать, перезапустит ли установка пакета эти процессы и почему это вообще происходит?
Очень маловероятно, что пакеты, которые не удалось установить kill
s что-либо после или из-за сбоя, связанного или нет. Кроме того, [ERROR] unknown variable 'rpl_semi_sync_slave_enabled = 1;
не похоже на ошибку apt
, но MySQL во время его запуска.
Вполне возможно, что MySQL был перезапущен на всех серверах, но не запустился только на одном, что привело к сбою установки - не наоборот.
Зачем устанавливать iotop
вызвать перезапуск MySQL? В дистрибутивах (например, в вашем Ubuntu) есть такая штука, которая называется дерево зависимостей: пакеты могут зависеть от других пакетов, которые зависят от других пакетов, которые могут быть взаимно необходимы другим пакетам. Иногда пакет зависит от определенной версии другого пакета, что приводит к обновлению уже установленного пакета при установке.
В таком случае, iotop
зависит от python
. Тогда, например, python-mysqldb
зависит от python
и libmysqlclient18
это зависит от mysql-common
... вы, вероятно, поняли, почему MySQL мог быть обновлен вместе с, казалось бы, несвязанными iotop
.
Как узнать, какие пакеты будут установлены и обновлены во время apt-get install
?
-y
,--yes
,--assume-yes
Автоматически да подсказкам. Предполагать
yes
как ответ на все запросы и запускаться в неинтерактивном режиме. Если возникает нежелательная ситуация, например, изменение удерживаемой упаковки или удаление основной упаковки, тогдаapt-get
будет отменено.
Не используй -y
если вы не совсем уверены, что произойдет. По умолчанию вы получите список всех пакетов, которые будут установлены, обновлены или даже удалены. Вы добровольно игнорируете все это.