web-dev-qa-db-ja.com

`snap`によってインストールされたファイルを変更することはできません

snapを使用してパッケージをインストールしましたが、ファイルの1つを変更する必要がありますが、その所有権または権限を変更しようとすると、常に次のメッセージが表示されます。

Sudo chmod +x ./my_file.js
chmod: changing permissions of '/snap/my_app/my_file.js': Read-only file system

snapを介してインストールされたファイルを変更するにはどうすればよいですか?

5
Miladiouss

スナップパーティション使用SquashFS 、これは基本的に圧縮された、読み取り専用ディスクイメージフォーマット通常、ライブCD/DVDの作成に使用されます。 SquashFSは、読み書き専用に設計されたものではありません。内容を編集するには、ファイルのアクセス許可を変更するだけの簡単なことでも、単純な再マウントでは実行できません。

オプションは次のとおりです。

Snap開発者になりたい場合は、このチュートリアルを開始して 最初のスナップを作成 にするとよいでしょう。

6
xiota

Snapのプログラムファイルは変更から保護されています。これは、保護されたファイルを読み取り専用として特定のスペースにマウントするプロセスによって行われます。

このプロセスには、データおよび構成用のユーザー固有のホームスペース(/home/user/snap)および世界規模のデータ用のスペース(/var/snap)を含む構成データ用の特定のスペースもあります。

世界中のすべてのスナップファイルは、/snapエリアへのシンボリックリンクを介して読み取りおよびアクセスできます。

次のコマンドを使用して、実際の場所とスペースがどのようにリンクされているかを確認できます。

スナップの保護されたマウントの例を表示するコマンド:

$ mount | egrep snap | egrep ro,
/var/lib/snapd/snaps/core_4486.snap on /snap/core/4486 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/communitheme_185.snap on /snap/communitheme/185 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/hello-world_27.snap on /snap/hello-world/27 type squashfs (ro,nodev,relatime)
/var/lib/snapd/snaps/core_4407.snap on /snap/core/4407 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/communitheme_124.snap on /snap/communitheme/124 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/core_4571.snap on /snap/core/4571 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/communitheme_246.snap on /snap/communitheme/246 type squashfs (ro,nodev,relatime,x-gdu.hide)
/var/lib/snapd/snaps/vlc_190.snap on /snap/vlc/190 type squashfs (ro,nodev,relatime,x-gdu.hide)

書き込み保護されていないスナップのスペースの例を表示するコマンド:

$ mount | egrep snap | egrep -v ro,
tmpfs on /run/snapd/ns type tmpfs (rw,nosuid,noexec,relatime,size=3293156k,mode=755)
nsfs on /run/snapd/ns/hello-world.mnt type nsfs (rw)
nsfs on /run/snapd/ns/vlc.mnt type nsfs (rw)

エラーメッセージによって、プログラマによってプログラム可能に保護されているファイルを変更しようとしています。あなたの質問は、あなたがアプリのプログラマーであることを示唆しています。したがって、スナップのプログラミング構成の機能を使用して、どのファイルをどこに配置するかを決定する必要があります。

どうすれば解決できますか?

コメントで提案したように、通常のユーザーとして開発環境でプログラムを設計する方が安全で一般的です...通常は個人のスペースで、スナップの開発システムを使用して新しいバージョンをインストールします。

私はスナッププログラマーではないので、使用プロセスの設計とエクスポートがスナップでどのように機能するかを正確に説明することはできません。しかし、AndroidまたはJavaプログラムの設計に似ていると想像できます。開発者は、ある種のエクスポートまたは公開メソッドを使用して、インストールされた構成で新しいバージョンを実行またはテストします。

保護された読み取り専用ファイルシステムを読み取り/書き込みに再マウントすることを試すことができます。スナップシステムの整合性を壊したり、スナップシステム自体の変更のためにアプリケーションが意図したとおりに動作しない可能性があるため、予期しない動作を提供する可能性があるため、お勧めしません。

0
L. D. James