Дизайн принципов относительно того, как менеджеры репозитория Linux обновляются?

StackOverflow https://stackoverflow.com/questions/3944974

Вопрос

Я знаю, что есть и другие приложения, но учитывая yum / apt-get / aptitude / pacman - это основные менеджеры пакетов для дистрибутивов Linux.

Сегодня я видел на моей коробке Fedora 13:

(7/7): yum-3.2.28-4.fc13_3.2.28-5.fc13.noarch.drpm       |  42 kB     00:00     

И я начал задаваться вопросом, как такое пакет обновляется сам? Какой дизайн необходим, чтобы гарантировать, что программа может обновить себя?

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

Спасибо.

Это было полезно?

Решение

Я понятия не имею, как эти конкретные системы работают, но ...

  • Современные системы Unix, как правило, будут терпеть перезаписи бегунного исполняемого файла без икота, поэтому в теории вы могли бы просто сделать это.
  • Вы можете сделать это в джалке Chroot, а затем переместить или что-то похожее на сокращение времени, в течение которого система уязвима. Добавьте журнал FileSystem, и это немного безопаснее.

Для меня возникает, что пакет-менеджер должен иметь базу данных доступа к пакету в памяти, а также застраховаться от состояния гонки. Опять же, вариант Chroot Jail и Copy доступен как альтернатива более низкого риска.

Другие советы

И я начал задаваться вопросом, как такое пакет обновляется сам? Какой дизайн необходим, чтобы гарантировать, что программа может обновить себя?

Это как много вещей, вам не нужно «дизайн» специально для решения этой проблемы ... Но вам нужно знать о некоторых «gotchas».

Например, Unix помогает по ссылке подсчет inodes, чтобы «вы» могли удалить файл, который вы все еще используете, и все в порядке. Однако это подразумевает несколько вещей, которые вы должны сделать, например, если у вас есть плагины, то вам нужно загрузить их все до Вы запустите начать транзакцию ... даже если плагин запустится только в конце транзакции (потому что у вас может быть другая версия в конце).

Есть также некоторые вещи, которые вам нужно сделать, чтобы убедиться, что все, что вы обновляете работы, например: поставить новые файлы вниз перед удалением старых файлов. И не усейте старые файлы, просто неимите. Но те тоже помогают вам :).

Используя внешние проблемы, с которыми вы общаетесь, можно сложно (потому что вы не можете выполнить новую копию старой версии после того, как она была обновлена). Но это не часто не делается, и когда это для того, чтобы вещи, такие как загрузка ... Что может несколько легко сделать, чтобы произойти перед любыми обновлениями.

Есть также вещи, которые не являются беспокойством в клиентах CMD Line, таких как yum / apt, например, если у вас есть программа, которая собирается запустить 2+ «Обновления», то у вас могут быть проблемы, если первое обновление было к пакету управляющий делами. Даунграды делают это еще веселее :). Также демон как процессы должны в основном никогда не «загружать» менеджер пакета, а как с другими Gotchas ... вы, как правило, хотят следовать за этим, по другим причинам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top