Как можно обновить Linux, пока он все еще используется?
В основном потому, что Linux (и с ним, большинство дистрибутивов) просто спроектирован именно так.
В Linux нет ничего, что могло бы помешать процессу диспетчера пакетов записывать в файл на диске, даже если это файл в настоящее время открыт приложением или файл является исполняемой или разделяемой библиотекой кода, который в настоящее время запущен. На очень низком уровне есть блокировки, которые защищают доступ к файлу во время одной операции записи / чтения, но они никогда не предназначены для хранения более чем миллисекунды и любого другого приложения, пытающегося записать в тот же файл будет просто ждать эти миллисекунды.
Вы можете заменить исполняемый файл во время его запуска, и он фактически ничего не сделает для выполняемого процесса, потому что процессу больше не нужен файл на диске - весь его код уже был загружен в память.
Вот почему в Linux, хотя вы можете обновить приложение во время его запуска, обновление не будет действовать, пока обновленное приложение не будет перезапущено. В случае обновления фонового процесса, такого как системная служба, эта служба должна быть перезапущена. В случае, если вы обновили ядро, это означает перезагрузку.
Как Linux может обновить себя, пока он все еще используется?
Some пакетов в дистрибутиве Linux будут содержать инструкции по установке, инструктирующие диспетчер пакетов останавливать определенные системные службы при обновлении пакета и повторно запускать эти службы после завершения обновления. Это предотвращает ситуации, когда, например, файлы конфигурации для конкретной службы обновляются, а работающая версия службы может не справиться с более новой версией файлов конфигурации.
В общем, регулярные пользовательские приложения не требуют запуска файлов конфигурации, за исключением файлов, которые он генерирует, и размещается в таких местах, как домашние каталоги пользователей. Поэтому при обновлении они не будут затронуты менеджером пакетов.
Хорошо, я нашел проблему, libgdata1.7-cil предназначен для работы приложений без сборки, полезной для разработки.
Чтобы создать приложение, использующее API Google для C #, вам необходимо загрузить libgdata-cil-dev, который вы можете найти с помощью синаптики.