是否等效于Debian或Ubuntu中的“ .msi”和“ setup.exe”文件?


15

这个答案说明.msisetup.exe安装在Windows上的应用程序文件。

是否有等同.msi,并setup.exe在Debian或者ubuntu文件?做.deb包文件对应.msi或者setup.exe还是其他什么东西?


8
我不知道您为什么要问这个问题,因此对于遇到这个问题的任何人,我都会将此作为一般性评论。尽管有“手动”安装软件的方法,但是大多数Linux发行版(强烈建议)首选的方法是通过程序包管理器安装软件。这样,您将自动获得安全更新,并进行了一定程度的测试以确保与发行版的兼容性。如果您需要主存储库中没有的最新最好的软件版本,请使用社区存储库(例如Ubuntu中的PPA),但始终使用软件包管理器。
Muzer

.setupWindows 上没有文件,您是说setup.exe安装程序的典型名称吗?
gronostaj

apt-get男子页,并从那里链接的文档。即使在Windows上也没有等效的工具apt-get install,更不用说它可以做的其他任何事情了。
jthill

5
@jthill,那是不正确的。它不如完全成熟或流行apt-get,但可以OneGet通过它安装最新版本的Powershell(Win7及更高版本)Chocolatey(与HomebrewMac 等效)。它们可能不如它们的“ nix”等效物流行,但是要说Windows上没有等效物显然是不正确的。
flith

1
@Tim:如果不指定“等效”的确切含义,就无法合理地回答这个问题。您对文件和安装程序的哪些特定属性.msi感兴趣?确定某物是否“等同” 的确切标准是什么?例如:安装程序就是与其他程序一样的程序。名为的程序绝对没有特别之处setup.exe。因为setup.exe就像其他程序一样,Debian 确实具有“程序”的概念,所以您认为这等效吗?如果没有,为什么不呢?
约尔格W¯¯米塔格

Answers:


28

软件包可能比MSI更接近MSI安装程序setup.exe,该.deb软件包包括一棵要复制到文件系统中的文件树,以及要运行的安装前和安装后挂钩的集合。这些挂钩可以有效地在系统上执行任何操作,包括我认为在Windows上从未见过的操作:为系统服务添加用户。他们不能做的一件事是安装另一个.deb软件包-数据库在安装过程中被锁定,因此只能通过依赖关系来实现。安装.deb包,那么产生在便于维修安装的软件包的中央数据库中的条目。

ttf-mscorefonts软件包很有趣,因为软件包本身仅包含用于下载和安装字体的脚本。该脚本在这些挂钩之一中执行。

更接近的setup.exe可能是从项目的主页下载progam的源代码,然后运行./configure && make && sudo make install,或者作者决定使用任何其他方法。由于此方法不会将软件包添加到已安装程序的数据库中,因此以后删除它可能会更加困难。

另一个区别是,a .deb指定了其依赖性,因此可以确保正确安装。据我所知,在Windows世界中,一个MSI不会导致另一个MSI的安装,因此setup.exe通常用于这种依赖性跟踪。有几条评论指出,MSI可以命名依赖关系,但是由于没有像.deb软件包一样的MSI中央数据库,因此缺少依赖关系只会导致安装失败。

因此,a .deb介于MSI安装程序和a之间setup.exe。该软件包可以在安装前和安装后的钩子中做任何想做的事情,可以命名并通常找到自己的依赖项,并在中心位置保留其安装记录,以便于维护。


2
在Windows中,setup.exe-style安装程序还集成到跟踪的安装程序系统中(包括卸载程序等)。对于MSI和.exe安装程序,通过将依赖项嵌入安装程序(例如 VC可再发行安装程序或DirectX安装程序)中,并通过在可执行文件(或作为系统程序集)旁边安装依赖项DLL,来处理依赖项。所以setup.exe也类似.deb。相当于从源代码构建也就是从Windows上的源代码构建;-)。
史蒂芬·基特

做的不是一个东西,它使MSI的接近Debian软件包比安装可执行文件:一个MSI不能安装其他MSI,就像一个Debian软件包无法安装的软件包(除了通过它的依赖)。
斯蒂芬·基特

@StephenKitt:setup.exe操作系统绝不会“跟踪”样式安装程序,除非它们在下面运行MSI(然后跟踪MSI)。他们具有卸载注册表项的事实与此无关。这就像说要跟踪每个文件,因为它已在文件系统中列出。
user541686 '17

2
但是,鉴于没有.MSI的中央存储库,MSI可以并且经常(在较大的产品中)确实具有依赖项,因此,当您错过依赖项时,通常发生的情况是它们拒绝安装。
Matteo Italia

1
“我认为我在Windows上从未见过的东西:为系统服务添加用户”。我相当确定SQL Server,IIS和Visual Studio安装程序会执行此操作。但是它可能不那么明显,因为Windows用户模型比默认的Unix / Linux模型(您是root还是不是)更精细
。.– MSalters

15

我在Linux上看到的单文件二进制安装程序是.sh包含带有二进制Blob的shell脚本的文件,如下所示:

#!/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这等效于a ,它也可以自解压到temp文件夹并从那里运行真正的安装程序。


6

摘自:https : //askubuntu.com/questions/13415/what-are-run-files/13416#13416

.run文件通常是定制程序,需要执行该命令才能安装程序。通常不支持这些功能,因为它们不跟踪文件的位置,并且通常不提供卸载方法。无法确定该脚本将对系统执行什么操作,因此它们被认为是不安全的。

它们靠近Windows exe文件,因此存在相同的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.