![在 Snap 中更改文件](https://linux22.com/image/1156288/%E5%9C%A8%20Snap%20%E4%B8%AD%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6.png)
我想更改 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 的维护者并请求此功能。