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


14

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

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

  • ファイルを編集nautilusせずにsudo
  • ファイルを編集するnautilussudosudo 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)を使用してアイコンを変更しましたが、スナップファイルを変更できない理由を知りたいです。

回答:


12

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

しかし、アイコンと呼ばれるデスクトップのファイルである可能性が言及blender-tpaw_blender.desktopされている編集可能な、とに記載されています/var/lib/snapd/desktop/applications

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

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

スナップでこの「変更できない」ことは非常に-つまり、非常に迷惑です!スナップを使用したい主な理由は、同じプログラム(Firefoxなど)を並行してインストールし、メインのインストールを台無しにせずに「コピー」インストールを試したいからです。ところで、.desktopファイルの変更は、Firefoxの場合は機能しませんでした。
アルミールカンポス

13

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

そのような方法の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

ここから撮影。


すばらしいソリューション、ありがとう。ほんの一言:新しいsystemdバージョン(この記事の執筆時点で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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.