我需要deb
在 MacOS High Sierra 中打开 Debian 软件包文件,以将二进制文件与我在 Linux 中安装的二进制文件进行比较。
其实这个包是mssql-server_14.0.3008.27-1_amd64.deb
命令file
说Debian binary package (format 2.0)
。
tar x
并且unzip
不工作。
该怎么办?
答案1
实际文件的外层.deb
实际上是一个ar
存档。
由于解压/打开它会生成一些文件,我们最好将其移动到一个目录:
$ mkdir debtmp
$ mv mssql-server_14.0.3008.27-1_amd64.deb
$ cd debtmp
因此,作为第一步,打开它,我们这样做:
$ ar xv mssql-server_14.0.3008.27-1_amd64.deb
x - debian-binary
x - control.tar.gz
x - data.tar.xz
至于生成的文件,debian-binary
仅包含 .deb 格式版本:
$ cat debian-binary
2.0
control.tar.gz
包含 apt/dpkg 信息,包括后/前/安装脚本、依赖项和校验和文件。所以我们现在实际上对此不太感兴趣。
$ tar -tvf control.tar.gz
drwxr-xr-x 0 root root 0 18 Nov 04:55 ./
-rw-r--r-- 0 root root 546 18 Nov 04:55 ./control
-rw-r--r-- 0 root root 25 18 Nov 04:55 ./shlibs
-rwxr-xr-x 0 root root 383 18 Nov 04:55 ./preinst
-rwxr-xr-x 0 root root 107 18 Nov 04:55 ./config
-rwxr-xr-x 0 root root 289 18 Nov 04:55 ./postrm
-rw-r--r-- 0 root root 0 18 Nov 04:54 ./templates
-rwxr-xr-x 0 root root 251 18 Nov 04:55 ./prerm
-rw-r--r-- 0 root root 60 18 Nov 04:55 ./triggers
-rwxr-xr-x 0 root root 771 18 Nov 04:55 ./postinst
-rw-r--r-- 0 root root 6155 18 Nov 04:55 ./md5sums
然后我们对该文件更感兴趣data.tar.zx
,因为它包含配置文件和可执行文件。
首先,我们需要安装xz
,使用Mac端口,tar
因为我们正在处理这个.deb
文件中的.tar.xz
.
sudo port install xz
.tar.gz
注意:在您可能还会处理的评论和其他 .debs中已经引起了我的注意——但是 macOS 是默认.tar.gz
附带gunzip
并安装的。bzip2
因此,要解压它:
$ tar xvf data.tar.xz
x ./
x ./opt/
x ./opt/mssql/
x ./opt/mssql/bin/
x ./opt/mssql/bin/sqlservr
x ./opt/mssql/bin/crash-support-functions.sh
[snip]
x ./usr/share/doc/mssql-server/license_Std_Linux.txt.gz
x ./usr/share/doc/mssql-server/license_Eval_Linux_Chinese (Simplified).txt.gz
x ./usr/share/doc/mssql-server/license_Std_Linux_French.txt.gz
x ./lib/
x ./lib/systemd/
x ./lib/systemd/system/
x ./lib/systemd/system/mssql-server.service
最后,将所有文件放在本地磁盘上,可以从目录中获取二进制文件opt/mssql/bin/
附加说明:根据@AustinHemmelgarn 的精彩评论,最后一步也可能会遇到gzip
或bzip2
而不是xz
其他.deb
文件中的压缩。