Чому оснащення файлів неможливо жодним чином змінити?


14

Я давно намагаюся змінити значок Блендера, але що б я не робив, мені нічого не дозволяють редагувати /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

де ім'я файлу - файл, а .ext - його розширення.

Це стосується і інших файлів знімків, не лише Blender.

Невже я тут щось неправильно роблю? Або просто неможливо змінити ці файли? Хоча я не думаю, що це неможливо, тому що тут все, починаючи від Ubuntu до Blender, є відкритим кодом, тому у них немає підстав заважати нам змінювати ці файли.

Редагувати:

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

Відповіді:


12

Змінити вміст оснащення неможливо, не переробляючи оснащення. Це в першу чергу заходи безпеки, щоб гарантувати, що оснащення не було підроблене.

Тим НЕ менше, значок згадується, ймовірно , в настільному файлі з ім'ям , blender-tpaw_blender.desktopяке є редагується, і може бути знайдений в /var/lib/snapd/desktop/applications.

Ви можете змінити наступний рядок, щоб оновити піктограму: -

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

Ця річ "неможливо змінити" за допомогою оснащення дуже - я маю на увазі, ДУЖЕ - дратує! Основна причина, яку я хотів би використати оснащення - це те, що я хочу зробити паралельні установки тієї самої програми (наприклад, Firefox), а потім зробити експерименти з установкою "копіювати", не псуючи основну установку. До речі, зміна файлу .desktop не працювала у випадку Firefox.
Алмір Кампос

13

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

Одним із таких способів є використання --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

Взято звідси .


Чудове рішення, дякую багато! Всього один ніггель: новіші системні версії (версія 18.04 станом на цей текст) більше не приймають кріплення на вершинах, що містять софт-посилання; на щастя, вищевказаний конфігуратор може бути замінений рядком у /etc/fstab, наприклад: echo -e "/etc/ssl/certs\t/snap/core/current/etc/ssl/certs\tnone\tbind,nodev,ro\t0 2" | sudo tee -a /etc/fstab- source
sxc731
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.