关于 snap,我有一个大问题。它是共享库吗?我之所以问这个问题,是因为这是我刚开始使用 ubuntu 时印象最深刻的事情之一,它共享库,因此节省了磁盘空间。snaps 还能这样做吗?还是我对 apt 的理解完全错了?
答案1
无论是 snap 还是 apt/dpkg 都无法保证您使用的应用程序依赖于系统范围的共享库以及它们所具有的每个依赖项。
根据 snap 的构建方式,它可能使用一些与其他 snap 共享的库(例如,核心 snap 包括 libc 和 libstdc++),但当涉及到稳定性、安全性和确保用户获得应用程序的最新功能时,任何一个方向都不像看起来那么简单。
答案2
对于我的系统的当前状态:
walt@bat:~(0)$ lsb_release -a;snap list
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial
Name Version Rev Tracking Publisher Notes
bw 1.8.0 13 stable bitwarden✓ -
core 16-2.42.1 8039 stable canonical✓ core
large-pcap-analyzer 3.6.0 97 stable francesco-montorsi -
mpv 0.26.0 1 beta casept -
mpv-casept 0.24.0 2 stable casept disabled
walt@bat:~(0)$
此时,此命令将回答您对我的系统的问题:
find /snap -type f -executable | \
xargs file |\
grep ELF |\
cut -d: -f1 |\
xargs -n 1 ldd |\
grep /snap
用于
find
查找下的所有“可执行”文件/snap
。问一下
file
——这些文件是脚本还是可执行文件还是什么?我们只关心“ELF”文件,因为它们是使用共享库的文件。
file
输出文件名、冒号、一些空格和描述。我想要的只是文件名。然后我使用
xargs
每次提供一个文件名(-n 1
)来ldd
列出每个 ELF 可执行文件使用的动态库。有 任何 图书馆 吗
/snap
?我看不到任何东西(除了“如果没有安装其他包含库的 snap 包怎么办?”)可以阻止它,