Я столкнулся с странной ситуацией, когда установка пакета через apt-get
вызвала перезапуск запущенных (рабочих!) Экземпляров mysqld на некоторых серверах Linux версии 16.04.
Мы запустили sudo apt -get install -y iotop
на четырех серверах. На трех серверах установка завершилась неудачно, указана [ERROR] неизвестная переменная 'rpl_semi_sync_slave_enabled = 1'
. Эта переменная была установлена только на этих трех серверах. В этот момент служба mysql, которую мы запускали, выключилась!
На четвертом сервере не было идентичной конфигурации mysql. Примечательно, что переменная rpl_semi_sync_slave_enabled
отсутствовала. Apt удалось установить iotop
, но, что интересно, наша служба mysql не перезапускала или закрывала.
Таким образом, кажется, что некоторые пакеты, при неудачной установке убивает запущенные процессы, которые кажутся несущественными для установки! Из-за этого я очень настороженно отношусь к установке дополнительных пакетов на наши производственные серверы, на которых выполняются процессы, которые мы не хотим перезапускать каждый раз. Как я могу узнать, перезапустит ли установка пакета эти процессы и почему это вообще происходит?
Очень маловероятно, что пакеты, которые не могут установить , убивают
s что-либо после или из-за сбоя, связанного или нет. Кроме того, неизвестная переменная [ERROR] '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
,- accept-yes
Автоматическое «да» для запросов. Предположим,
yes
в качестве ответа на все запросы и выполняются в неинтерактивном режиме. Если нежелательный ситуации, например, изменение удерживаемого пакета или удаление необходимого пакет, тоapt-get
будет прервано.
Не используйте -y
, если вы не совсем уверены, что произойдет. По умолчанию вы получите список всех пакетов, которые будут установлены, обновлены или даже удалены. Вы добровольно игнорируете все это.