web-dev-qa-db-ja.com

スナップファイルを変更できないのはなぜですか?

Blenderのアイコンを変更しようと長い間試みてきましたが、何をしても、/snap/blender-tpaw/3/で編集することは許可されていません。

ここに私が試したものがあります:

  • nautilusなしでSudoからファイルを編集します。
  • nautilusのファイルをSudoで編集します(端末のSudo nautilus)。
  • cpなしのrmSudoなどの端末コマンドの使用。
  • SudoSudo 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)を使用してアイコンを変更しましたが、スナップファイルを変更できない理由を知りたいです。

12
Tooniis

スナップを再構築せずにスナップの内容を変更することは不可能です。これは主に、スナップが改ざんされていないことを確認するためのセキュリティ対策です。

ただし、参照されているアイコンは、おそらくblender-tpaw_blender.desktopというデスクトップファイルにあり、これはis編集可能で、/var/lib/snapd/desktop/applicationsにあります。

次の行を変更してアイコンを更新できます。

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

質問の前提は技術的には正しいですが(スナップのファイルを変更することはできません)、これを回避する方法があります。

そのような方法の1つは、--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

注:マウントは、リブート間で持続しません。再起動後もマウントを保持する方法はいくつかあります。そのような方法の1つは、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

here から取得。

13
wheeler