Эквиваленты «.msi» и «setup.exe» файлы в Debian или Ubuntu?

15

Этот ответ объясняет .msiи setup.exeфайлы для установки приложения в Windows.

Есть ли эквиваленты .msiи setup.exeфайлы в Debian или Ubuntu? Do .debфайлы пакета соответствуют .msiили setup.exeили что - то другое?

Тим
источник
8
Я не знаю, почему вы спрашиваете об этом, поэтому я скажу это как общий комментарий для всех, кто сталкивался с этим вопросом. Хотя существуют способы установки программного обеспечения «вручную», в большинстве дистрибутивов Linux (и настоятельно рекомендуется) этот способ заключается в установке программного обеспечения через менеджер пакетов. Таким образом, вы автоматически получаете обновления безопасности, и проводится определенный уровень тестирования для обеспечения совместимости с дистрибутивом. Если вам нужна последняя и лучшая версия программного обеспечения, недоступная в основных репозиториях, используйте репозиторий сообщества (например, PPA в Ubuntu), но всегда используйте менеджер пакетов.
Музер
В .setupWindows нет файлов. Вы имеете в виду, setup.exeкакое типичное имя для установщика?
Гроностай
Смотрите на apt-getстраницу человека и документы , связанные с там. В Windows нет эквивалента даже для apt-get install, не говоря уже о других вещах, которые он может сделать.
jthill
5
@ Это не соответствует действительности. Он не такой полноценный и не такой популярный, как apt-getпоследние версии Windows PowerShell (для Win7 и выше), OneGetчерез которые вы можете установить Chocolatey(эквивалент для HomebrewMac). Они могут быть менее популярны, чем их nix-эквиваленты, но говорить, что в Windows нет эквивалента , явно неверно.
flith
1
@Tim: на этот вопрос нельзя ответить разумно, если вы не укажете, что именно вы подразумеваете под «эквивалентом». Какие конкретные свойства .msiфайлов и инсталляторов вас интересуют? Каковы точные критерии, чтобы определить, является ли что-то "эквивалентным" или нет? Например: установщики просто программы, как и любая другая программа. В названной программе нет ничего особенного setup.exe. Так как setup.exeэто просто программа , как и любая другая программа, и Debian, безусловно , делает есть понятие «программа», считаете ли вы , что эквивалентно? Если нет, то почему нет?
Йорг Миттаг

Ответы:

28

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

ttf-mscorefontsПакет интересен тем , что сам пакет содержит только скрипт для загрузки и установки шрифтов. Этот скрипт выполняется в одном из этих хуков.

Ближе к этому setup.exeможет быть загрузка исходного кода программы с домашней страницы проекта, затем запуск ./configure && make && sudo make installили любой другой метод, который авторы решили использовать. Поскольку этот метод не добавляет пакет в базу данных установленных программ, удалить его позже может быть гораздо сложнее.

Другое отличие состоит в том, что a .debуказывает свои зависимости, поэтому правильная установка может быть гарантирована. Насколько я знаю, в мире Windows MSI не может вызвать установку другого MSI, поэтому setup.exeобычно используется для такого рода отслеживания зависимостей. В нескольких комментариях отмечается, что MSI могут называть зависимости, но, поскольку нет центральной базы данных MSI, как для .debпакетов, отсутствие зависимости просто приведет к сбою установки.

Таким образом, a .debявляется своего рода промежуточным между установщиком MSI и a setup.exe. Пакет может делать все, что захочет во время перехватов до и после установки, может называть и, как правило, находить свои собственные зависимости и оставлять запись о своей установке в центральном месте для простоты обслуживания.

Лиса
источник
2
В Windows setup.exeинсталляторы стиля также интегрируются в отслеживаемую систему инсталляторов (с деинсталляторами и т. Д.). Как в MSI, так и в .exeустановщиках зависимости обрабатываются путем встраивания зависимости в установщик ( например, распространяемый установщик VC или установщик DirectX) и путем установки DLL зависимостей вместе с исполняемым файлом (или в виде системных сборок). Так setup.exeже похоже на .deb. Эквивалент сборки из исходного кода - это также сборка из исходного кода в Windows ;-).
Стивен Китт
Я не делаю одну вещь, которая делает MSI ближе к пакетам Debian, чем установочные исполняемые файлы: MSI не может установить другой MSI, точно так же, как пакет Debian не может установить другой пакет (кроме как через его зависимости).
Стивен Китт
@StephenKitt: setup.exeустановщики стилей ни в коем случае не «отслеживаются» ОС, если они не запускают MSI под ними (а затем отслеживаются MSI). Тот факт, что у них есть раздел реестра для удаления, не имеет к этому никакого отношения. Это все равно что сказать, что каждый файл отслеживается, потому что он указан в файловой системе.
user541686
2
MSI может и часто (в более крупных продуктах) иметь зависимости, хотя, учитывая, что нет центрального хранилища .MSI, обычно, когда вы пропускаете зависимость, они отказываются устанавливать.
Matteo Italia
1
«что-то, чего я не видел в Windows: добавление пользователей для системной службы». Я вполне уверен, что установщики SQL Server, IIS и Visual Studio делают это. Но это может быть менее очевидно, так как модель пользователей Windows немного более усовершенствована, чем модель Unix / Linux по умолчанию (либо вы root, либо нет) ..
MSalters
15

Бинарные установщики с одним файлом, которые я видел в Linux, были .shфайлами, которые содержали сценарий оболочки, связанный с двоичным двоичным объектом, например:

#!/bin/bash
tmpdir=$(mktemp -d /tmp/installer.XXX)
tail -n +6 "$0" | tar -xJf - -C "$tmpdir" || exit 1
sudo "$tmpdir/setup.sh"
rm -rf "$tmpdir"
exit
[binary content follows]

По сути это эквивалентно тому, setup.exeкоторый также самораспаковывается во временную папку и запускает оттуда настоящий установщик.

Дмитрий Григорьев
источник
6

Взято из: /ubuntu/13415/what-are-run-files/13416#13416

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

Они близки к файлу Windows и поэтому имеют те же проблемы.

Зумо де Видрио
источник