ubuntu snap 是否有办法提供 FHS 文件系统层次结构中的文件,例如 /usr/bin 中的二进制文件、/usr/share/ 中的包数据、/etc 中的配置文件?如果没有,使用 snap 提供的此类资源的最佳做法是什么?是否应该使用 /snap// 而不是每次都使用?
答案1
不,Snap 是独立的。它当然可能包含 bin/、usr/bin/ 等,但它不能将内容放入系统的 /bin/、/usr/bin/ 等。
利用 snap 提供的此类资源的最佳实践是使用 YAML 中的“apps”关键字从 snap 中导出它们。例如,假设我有一个名为的可执行 shell 脚本hello.sh
,其中包含以下内容:
#!/bin/sh
echo "hello snap guru"
我有一个snapcraft.yaml
看起来像这样:
name: hello
version: 1
summary: my summary
description: my description
apps:
run:
command: hello.sh
parts:
hello:
plugin: copy
files:
hello.sh: bin/
运行snapcraft
此程序并安装生成的 snap 后,您会注意到 hello.sh 包含在 snap 的 bin/ 目录中,该目录当然不在您的 PATH 中,因此您无法直接调用它。但是,安装 snap 后,snappy 会在 /snap/bin/ 中为“apps”关键字中的每个项目创建一个新脚本(run
在本例中),并且 /snap/bin/ 在您的 PATH 中。您应该能够通过使用以下命令运行 hello.sh 脚本<snap name>.<app name>
:
$ hello.run
hello snap guru