Изменение файла в 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, которые по определению доступны только для чтения. Там нет никакого способа обойти это. Обратитесь к авторам рассматриваемой оснастки и запросите эту функцию.

Другие вопросы по тегам