这个答案在 Windows 上安装应用程序的说明.msi
和文件。setup.exe
是否有与Debian 或 Ubuntu 中的文件等效的.msi
文件?包文件setup.exe
是否.deb
对应于.msi
或setup.exe
或其他什么?
答案1
包可能比 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 安装程序和setup.exe
.该包可以在其安装前和安装后挂钩期间执行任何操作,可以命名并通常找到其自己的依赖项,并将其安装记录保留在中央位置以便于维护。
答案2
我在 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
自解压到临时文件夹并从那里运行真正的安装程序。
答案3
取自:https://askubuntu.com/questions/13415/what-are-run-files/13416#13416
.run 文件通常是一个定制的程序,需要执行它才能安装程序。这些通常不受支持,因为它们不跟踪文件的去向并且通常不提供卸载方法。无法确定脚本会对您的系统执行什么操作,因此它们被认为是不安全的。
它们与 Windows exe 文件很接近,因此存在相同的问题。