Изменение файла в Snap
Я хотел бы изменить конфигурацию в файле привязки (CodeMirror в оснастке Notepadqq), чтобы можно было изменить цвет синтаксиса для определенных тем.
Я знаю, что вы не можете напрямую изменять файлы моментальных снимков, так как они доступны только для чтения.
Так что, если бы я хотел сделать это, как мне это удалось?
2 ответа
На самом деле есть способ обойти это. Хотя мы не можем изменить файл непосредственно в оснастке (без его пересборки — это было бы слишком сложно), мы можем использовать функцию привязки mount для достижения аналогичного эффекта.
Предупреждение : я бы не рекомендовал делать это постоянно, но это может оказаться бесценным для временной отладки.
Я буду использовать certbot в качестве примера. Его
$ 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).
Проще говоря: вы не можете сделать это. Снимки - это изображения Squashfs, которые по определению доступны только для чтения. Там нет никакого способа обойти это. Обратитесь к авторам рассматриваемой оснастки и запросите эту функцию.