在 Snap 中更改文件

在 Snap 中更改文件

我想更改 Snap 文件(Notepadqq 快照中的 CodeMirror)中的配置,以便我可以更改特定主题的语法颜色。

我知道您不能直接修改 snap 文件,因为它是只读的。

那么如果我想这样做,我该怎么做呢?

答案1

其实有办法解决这个问题。虽然我们不能直接在 snap 中更改文件(除非重建它 - 这太难了),但我们可以利用 mount 的绑定功能来实现类似的效果。

警告:我不建议永久地这样做,但这对于临时调试来说非常有价值。

我将使用 certbot 作为示例。它的main.py文件位于/snap/certbot/952/lib/python3.8/site-packages/certbot/main.py。首先我们需要将其复制到某个地方:

$ cp /snap/certbot/952/lib/python3.8/site-packages/certbot/main.py /tmp/main.py

然后我们编辑复制的文件:

$ echo 'print("no help for you!"); exit(1)' > /tmp/main.py

现在我们将编辑后的文件挂载到原始文件上:

$ mount -o ro,bind /tmp/main.py /snap/certbot/952/lib/python3.8/site-packages/certbot/main.py 

测试结果:

$ certbot --help
no help for you!

完成后,您可以卸载该文件:

$ umount /snap/certbot/952/lib/python3.8/site-packages/certbot/main.py

再次强调,我认为这不是一个非常有用的永久解决方案 - 对底层 snap 包的重大更新会破坏某些东西。如果您只想更改某些配置,那么使用内置配置方法可能会更容易、更易于维护。

如果由于某种原因您仍然想将其用作永久解决方案,那么您将需要调整想法以在重新启动后继续存在 - 将更改的文件存储在某个稳定的目录中(而不是 /tmp/),并确保在启动期间挂载发生(我相信可以使用 /etc/fstab 条目来完成)。

答案2

很简单:你不能这样做。Snap 是 squashfs 镜像,从定义上讲是只读的。没有办法解决这个问题。请联系相关 snap 的维护者并请求此功能。

相关内容