Почему Windows Installer может только установить единственную программу за один раз?

Как другие сказали, Вы не должны выполнять веб-сервер как корень. Unfortunatly, неважно, насколько безопасный Ваш сервер или приложения, всегда существует (хороший) шанс, что существует угроза безопасности. Взлом с непривилегированной учетной записью достаточно плох — предоставляющий корневой доступ, смертельно.

При запуске сервера Вы обычно возрастаете для укоренения полномочий с sudo (sudo apache2ctl start) и затем Apache связывает с указанными портами и затем возвращается для понижения полномочий.

Из-за моего образования Mac и моей любви для удобства чтения, мои сайты расположены в /var/WebServer. Внутри я имею default и много других сайтов, работающих как виртуальные хосты.

О Apache широко говорят, и ТОННЫ документации является доступным, лучшим и самым легким, из которых обеспечивается (по-моему), Slicehost (это не VPS конкретный хотя). Я консультировался бы с их статьями, чтобы видеть, как установить Apache быстро и надежно.

10
задан 27 August 2010 в 12:57
3 ответа

Это было бы очень сложно для гарантии правильности, когда параллельные установки происходят - предполагающий, что они совместно используют некоторые файлы. Этому была бы нужна некоторая форма транзакций.

  • Необходимо заблокировать файлы
  • Должно быть возможно отменить промежуточные изменения, если установка перестала работать (не уверенный, если это возможно теперь?)

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

При блокировке всех необходимых файлов впереди Вы получаете эффективно, что Вы имеете: Один установщик должен ожидать до другого закончен. Если Вы не блокируете все необходимые файлы впереди и продолжаете идти, Вы рискуете этим, "транзакция" перестанет работать. Это означало бы, что один из установщиков должен будет быть перезапущен.

Затем Вам, вероятно, придется думать об уровнях изоляции транзакции - чтобы быть полностью корректными, Ваши транзакции должны были бы быть "сериализуемыми" - но это не легко, даже для многих баз данных.

Могут даже быть альтернативные стратегии иметь дело с проблемами, которые обходят полную изоляцию, но обычно было бы еще более трудно доказать их правильность.

Я верю с параллельной установкой, у нас были бы намного более тяжелые проблемы после установки - особенно, потому что я не думаю, поставщик ОС (или распределение) прошел бы всю проблему для создания ее 100% чистый. Таким образом, я предпочел бы не использовать его, даже если бы это предлагалось ОС.

Примечание:

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

6
ответ дан 2 December 2019 в 22:08
  • 1
    В то время как корректный, этот ответ будет казаться мне слишком подробным. Кто-то спрашивающий, почему сервисные работы установщика путем это сделает, вряд ли является этим ответом. –  gWaldo 27 August 2010 в 16:32
  • 2
    @gWaldo: Хорошо, возможно, Вы быть правыми... С другой стороны я только хочу - что "Это было сложно, верьте мне (период). Вы не понимали это так или иначе". Возможно, OP (или кто-то еще натыкающийся на этот вопрос) действительно, и ответ, который добираться до сути относительно проблемы, помогает ему - если не будет действительно большой сложности, включенной для решения чего-то, что выглядело бы настолько легким на ее поверхности. Кто знал бы? положительная сторона –  Chris Lercher 27 August 2010 в 17:08
  • 3
    Очень верный. Это было бы положительной стороной. –  gWaldo 27 August 2010 в 17:21
  • 4
    В то время как весь разговор об изоляции звучит вероятным, можно запустить несколько установщиков, если они не используют платформу Windows Installer. У меня никогда не было ни одного из них, повреждаются при выполнении рядом... Возможно, я просто удачлив :) Что касается установок организации очередей, существуют инструменты для этого, но данные многоядерные центральные процессоры (heck, настольные центральные процессоры могут теперь выполнить 8 потоков...), кажется, что выполнение их рядом было бы ответом (хотя они могут все еще бороться за ввод-вывод). –  Rytis 27 August 2010 в 18:33
  • 5
    @Rytis: Мне жаль, что у меня не было той же удачи :-) - у меня было повреждение установщиков случайным образом даже, не выполняя их одновременно. О мультиядрах: был бы другой способ использовать их: При помощи нескольких ядер в рамках одного процесса установки. Это все еще не всегда возможно или легко, но может быть скоординировано намного лучше. В целом я думаю, самое большое средство экономии времени тихо, если процесс полной установки (очередь) только задает вопросы вначале и в конце. Затем можно получить кофе или сделать что-то еще, в то время как установка работает (и используйте остающиеся ядра для того, что Вы хотите сделать.). –  Chris Lercher 27 August 2010 в 19:32

Это дизайном, чтобы не иметь две установки, управляющие теми же ключами/и т.д. файлов/папок/реестра.; это, возможно, вероятно, было сделано по-разному, но Microsoft сделала этот выбор.

6
ответ дан 2 December 2019 в 22:08
  • 1
    Какая-либо ссылка для поддержки требования? –  Aaron Digulla 27 August 2010 в 18:11

Можно ударить нескольких файлов MSI для установки в быстрой последовательности один за другим с помощью пакетного файла. Вы не можете выполнить два файла MSI одновременно в том смысле, что они оба запись к диску одновременно.

Причина состоит в том, что часть установки MSI выполняется как "транзакция" - последовательность изменений, которые или фиксируются или откатываются в зависимости от того, завершаются ли действия в списке транзакций без ошибки. Все должны завершиться без ошибки, и затем транзакция фиксируется, иначе происходит полный откат всех изменений. Из этого следует, что только одна такая транзакция может быть активной в любой момент времени.

На техническом уровне MSI только действия между стандартными действиями InstallInitialize и InstallFinalize в InstallExecuteSequence выполняются как транзакция. Никакие системные изменения, как не предполагается, происходят вне этих действий, но иногда файлы MSI ошибочно разработаны для внесения изменений в других последовательностях.

1
ответ дан 2 December 2019 в 22:08

Теги

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