Почему файлы моментальных снимков не могут быть изменены каким-либо образом?

Я долго пытался изменить значок Blender, но что бы я ни делал, мне не разрешено ничего редактировать в /snap/blender-tpaw/3/,

Вот что я попробовал:

  • Редактирование файлов из nautilus без sudo,
  • Редактирование файлов из nautilus с sudo (sudo nautilus в терминале).
  • Использование терминальных команд, таких как cp или же rm без sudo,
  • Использование команд терминала с sudo (такие как sudo cp <source> /snap/blender-tpaw/3/ или же sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • Делать все вышеперечисленное в корневом терминале (используя sudo -i)

В каждом случае я получаю следующую ошибку:

cannot remove/copy '/snap/blender-tpaw/3/filename.ext': Read-only file system

где filename - это файл, а.ext - его расширение.

Это также относится к файлам других снимков, не только к Blender.

Я что-то здесь не так делаю? Или просто невозможно изменить эти файлы? Хотя я не думаю, что это невозможно, потому что все, начиная с Ubuntu и заканчивая Blender, имеет открытый исходный код, поэтому у них нет оснований запрещать нам изменять эти файлы.

РЕДАКТИРОВАТЬ:

Я использовал Главное меню (alacarte), чтобы изменить значок, но я все еще хочу знать, почему я не могу изменить любой файл привязки.

3 ответа

Решение

Невозможно изменить содержимое оснастки, не восстанавливая оснастку. Это прежде всего мера безопасности, чтобы гарантировать, что оснастка не была подделана.

Однако упомянутый значок, скорее всего, находится в файле рабочего стола под названием blender-tpaw_blender.desktop который можно редактировать, и можно найти в /var/lib/snapd/desktop/applications,

Вы можете изменить следующую строку, чтобы обновить значок:-

Icon=/snap/blender-tpaw/3/meta/gui/icon.svg

Хотя предпосылка вопроса технически правильна (вы не можете изменить файлы оснастки), есть способы обойти это.

Одним из таких способов является использование --bind вариант в сочетании с mount, чтобы перемонтировать существующую файловую иерархию куда-то еще.

Например, если вы хотите, чтобы ваши снимки использовали системные сертификаты вместо сертификатов, установленных в coreкаталог, содержащий системные сертификаты, можно смонтировать на хосте поверх каталога системных сертификатов в core с помощью следующей команды:

sudo mount --bind -o nodev,ro /etc/ssl/certs /snap/core/current/etc/ssl/certs/

Это фактически не меняет файловую систему привязки. Если вы размонтируете папку, старая папка займет ее место:

sudo umount /snap/core/current/etc/ssl/certs

Примечание: крепления не сохраняются между перезагрузками. Есть несколько способов заставить маунты сохраняться после перезагрузки. Одним из таких способов является создание systemd скрипт запуска:

$ cat <<-EOF | sudo tee /etc/systemd/system/snap-core-current-etc-ssl-certs.mount
[Unit]
Description=Mount unit to fix etc ssl certs in core package
After=snapd.service

[Mount]
What=/etc/ssl/certs
Where=/snap/core/current/etc/ssl/certs
Type=none
Options=bind,nodev,ro

[Install]
WantedBy=multi-user.target
EOF
$ systemctl enable snap-core-current-etc-ssl-certs.mount

Взято отсюда.

На самом деле можно распаковать Edit и запустить Snap, используяsnap tryкоманда. Вот пример для Microstack:

      # Remove existing installation:
sudo snap remove --purge microstack

# download and unpack tree
mkdir ~/snap-repo
cd ~/snap-repo
snap download microstack --beta
mkdir ~/snap-tree
cd ~/snap-tree
sudo unsquashfs ../snap-repo/microstack_245.snap 

Теперь вы можете свободно редактировать файлы под~/snap-tree/squashfs-root. Когда вы будете готовы, вы можете запустить Snap с этими изменениями, используя:

      sudo snap try ~/snap-tree/squashfs-root/

snap list microstack

Name        Version  Rev  Tracking  Publisher  Notes
microstack  ussuri   x1   -         -          try

Когда закончите, вы можете запуститьsnap remove PACKAGEпо-прежнему.

Ссылка: https://snapcraft.io/docs/snap-try .

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