Почему программное обеспечение не упаковано в один файл?

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

Я понимаю зависимость Ubuntu или, в более общем смысле, пакетов linux. Но мне интересно, почему они существуют. Разве нельзя создать один файл со всеми зависимостями? В чем проблемы с этим методом?

Пожалуйста, попробуйте подробно объяснить причину.

15
задан 15 July 2012 в 15:55

5 ответов

Основная причина того, что зависимости не включены в саму программу, заключается в том, что компоненты системы могут быть легко обновлены.

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

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


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

Иногда это может быть проблематично для компьютеров без прямого подключения к Интернету. Существуют инструменты, такие как APTonCD , которые помогают минимизировать эти трудности.

0
ответ дан 15 July 2012 в 15:55

Это не совсем верно. Программное обеспечение Ubuntu обычно поставляется в одном файле .deb. Будучи совершенно упрощенными (и неточными), файлы .deb являются соответствующим файлом .exe для windows. Все программы, в том числе в Windows, используют зависимости от других файлов в операционной системе (библиотеки). Процесс установки более или менее явный в разных ОС. Когда вы используете центр программного обеспечения в Ubuntu для загрузки программы, вы загружаете только те зависимости, которые не установлены в вашей системе, и фактические программные файлы. Это предотвращает перегрузку системы дублирующимися файлами и дублирующими функциями, которые могут привести к конфликтам.

Верьте или нет, единственная разница между установкой программы в Windows или Ubuntu заключается в количестве информации, которую они предоставляют пользователям. Windows считает, что ее пользователи глупы и не хотят, чтобы они знали, что именно устанавливается при запуске exe-файла. В Linux вы получаете эту информацию ... для некоторых пользователей слишком много деталей, но другие (большинство) действительно ценят это.

надеюсь, что это имеет смысл.

0
ответ дан 15 July 2012 в 15:55

В дополнение к тому, что было сказано другими, иногда одна часть программного обеспечения разделяется на несколько пакетов, потому что не все функции относятся ко всем пользователям. Например, если документация программы объемная, обычно она предоставляется отдельным пакетом. Это позволяет пользователям, которые не заинтересованы в этих дополнительных функциях, экономить дисковое пространство и пропускную способность / время для загрузки.

0
ответ дан 15 July 2012 в 15:55

Давайте попробуем поделиться своим пониманием зависимостей (Да, я знал о достоинствах Ubuntu или более общего Linux-подхода к работе с программным обеспечением. Я просто пытался собрать все хорошее мнение и причину центральным образом, так что я могу продемонстрировать некоторые из моих друзей) .

Программное обеспечение Windows в основном упаковано в один файл. Означает ли это, что они не имеют никакой зависимости?

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

Ответ: Они справляются с этим по-своему. Предполагая, что большинство их пользователей глупы, они просто помещают все зависимости в один файл, в результате чего получается программное обеспечение большего размера (1 файл).
Например, см. Игры, выпущенные для Microsoft. Почти каждая игра включает в себя настройки DirectX, хотя пользователи, возможно, уже обновили их версии.

Вот что я нашел в Google о том, почему DirectX включен в каждую игру.

Даже если более поздняя версия двоичного файла уже установлена, эту версию нельзя использовать, и даже если ваша установка DirectX актуальна, поскольку вы запустили более свежую версию установщика, которая не гарантированно установлены все предыдущие версии. Хуже того, если версия установлена ​​для x86, это не гарантирует, что та же версия установлена ​​для x64, поэтому 64-битным и 32-битным играм может потребоваться запускать одну и ту же версию установщика, но при запуске на разных платформах.

нажмите здесь для полной статьи. Ясно, что они не очень хорошо справляются с обработкой зависимости.

Большую часть времени, независимо от того, какие зависимости уже существуют, они обеспечивают его простоту (для их пользователей) . Также посмотрите, сколько программных тем включает в себя компоненты среды выполнения .NET.
Еще один пример из моего опыта: однажды я скачал и установил программное обеспечение MS. Удовлетворенный процессом, я щелкнул значок, чтобы открыть программное обеспечение, и только тогда он говорит мне, что «мне нужна Java для запуска». Такая ситуация никогда не возникает в мире Linux через управление пакетами. (если только вы не попытаетесь загрузить файлы .deb с сайта репозитория и установить их двойным щелчком мыши в стиле MS) .

Как Linux справляется с этой проблемой зависимости?

Ну, Linux или Ubuntu не скрывают, что для использования программного обеспечения необходимо установить зависимости (в отличие от способа Microsoft). Но когда вы устанавливали компоненты, другое программное обеспечение, которое зависит от того же компонента, использует установленные ранее зависимости (в отличие от программного обеспечения MS, включая все).

0
ответ дан 15 July 2012 в 15:55

На Ubuntu большая часть программного обеспечения действительно появляется в единственный файл. Это - a *.deb файл пакета debian, который загружается, распаковал и установил от Вашего диспетчера пакетов.

То, почему Ubuntu не устанавливает программное обеспечение от самораспаковывающихся исполняемых файлов как большая часть программного обеспечения Windows, делает?

Поскольку сам извлечение *.exe файлы являются очень опасным суждением для принятия.

Самые критические различия между самораспаковывающиеся исполняемые файлы и упаковочная система, как debian/Ubuntu один:

  • Безопасность
  • Прозрачность
  • Более тонкая настройка

Более подробно:

Безопасность

В мире окон необходимо положить что единственный *.exe файл. Как можно действительно быть уверенным, что этому можно доверять? Как можно даже знать, что это устанавливает что-то? Как можно быть уверены, что это не делает других вещей за спиной?

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

Детализированное управление

С a *.exe файл, можно по существу сделать одну вещь: выполните его. В Ubuntu можно осмотреть содержание пакета, описаний, конфигураций, отдельных файлов, последних изменений, исправлений ошибок, и т.д. от удобства диспетчера пакетов, прежде, чем решить, установить ли или нет.

Когда Вы устанавливаете от *.exe файл, также необходимо доверять его рычагу 'удаления' (и не все *.exe файлы, как гарантируют, будут иметь один). В Ubuntu, все файлы, принадлежащие стандартным пакетам, установленным диспетчером пакетов, может всегда удаляться, потому что это - функция диспетчера пакетов, не сам пакет. Диспетчер пакетов является отдельным, и доверял приложению, которое предоставляет и установщик и деинсталлятор, пакет не может убрать рычаг удаления от Вас. Конечно, злонамеренный пакет может стащить материал через действия постустановки, но вот почему у нас есть официальная система репозитория и те же люди, которым мы доверяем для поддержания их.

Прозрачность

Это идет далее. На Ubuntu я могу действительно доверять своей системе, потому что я могу проверить программное обеспечение на многих уровнях. Окончательный уровень является способностью посмотреть на исходный код. двоичные пакеты имеют соответствующие исходные пакеты. Я могу на самом деле посмотреть на источник (Пример: 'склонный - добираются, исходный удар' даст Вам полные источники оболочке удара). В мире *.exe файлов обычно существуют только двоичные файлы, и кто знает то, что они на самом деле делают негласно?

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

3
ответ дан 15 July 2012 в 15:55

Другие вопросы по тегам:

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