Nautilus 7z 压缩

Nautilus 7z 压缩

我知道p7zipUbuntu 18.04 上默认没有安装软件包。但仍然Nautilus可以创建7z档案。这怎么可能呢?

答案1

Nautilus 改变了档案压缩的机制。

可执行文件的动态库列表ldd $(which nautilus)证实了这一点。
这里最重要的一行如下:

$ ldd /usr/bin/nautilus
...
    libarchive.so.13 => /usr/lib/x86_64-linux-gnu/libarchive.so.13
...

它的包装名字是什么?

$ dpkg -S /usr/lib/x86_64-linux-gnu/libarchive.so.13
libarchive13:amd64: /usr/lib/x86_64-linux-gnu/libarchive.so.13

这个包(libarchive13)提供什么功能?

$ apt-cache show libarchive13
Package: libarchive13
...
Description-en: Multi-format archive and compression library (shared library)
Archive formats supported are:
 .
    * tar (read and write, including GNU extensions)
...
    * zip (read only, with some limitations, uses zlib)
...
    * 7zip (read and write, with some limitations)

此外,进一步证明 - 如果我们尝试删除此软件包,它将从 GNOME 中删除许多核心应用程序(Nautilus、File Roller、Evince、GNOME 控制中心等):

$ sudo apt-get purge libarchive13 --simulate
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  evince* file-roller* fwupd* gir1.2-rb-3.0* gir1.2-totem-1.0* 
  gir1.2-totemplparser-1.0* gnome-control-center* gnome-software*
  gnome-software-plugin-snap* grilo-plugins-0.3-base* gvfs-backends* 
  libappstream-glib8* libarchive13* libevdocument3-4* libevview3-3*
  libgnome-autoar-0-0* libgrilo-0.3-0* libgxps2* librhythmbox-core10* 
  libtotem-plparser18* libtotem0* nautilus* rhythmbox*
  rhythmbox-plugin-alternative-toolbar* rhythmbox-plugins* totem* 
  totem-plugins* ubuntu-desktop* ubuntu-software*
0 upgraded, 0 newly installed, 29 to remove and 53 not upgraded.

所以答案是:Ubuntu 18.04 LTS 中的 Nautilus 3.26 不使用p7zip,它使用来自libarchive13包的函数。

相关内容