Mengapa snap file tidak dapat dimodifikasi dengan cara apa pun?


14

Saya sudah lama mencoba mengubah ikon Blender, tetapi apa pun yang saya lakukan, saya tidak boleh mengedit apa pun /snap/blender-tpaw/3/.

Inilah yang saya coba:

  • Mengedit file dari nautilustanpa sudo.
  • Mengedit file dari nautilusdengan sudo( sudo nautilusdalam terminal).
  • Menggunakan perintah terminal seperti cpatau rmtanpa sudo.
  • Menggunakan perintah terminal dengan sudo(seperti sudo cp <source> /snap/blender-tpaw/3/atau sudo rm /snap/blender-tpaw/3/<filename.ext>)
  • Melakukan semua hal di atas dalam terminal root (menggunakan sudo -i)

Dalam setiap kasus saya mendapatkan kesalahan berikut:

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

di mana nama file adalah file dan .ext adalah ekstensinya.

Ini juga berlaku untuk file terkunci lainnya, tidak hanya Blender.

Apakah saya melakukan sesuatu yang salah di sini? Atau mungkinkah mengubah file-file itu? Walaupun saya pikir itu tidak mungkin karena semuanya di sini dari Ubuntu ke Blender adalah open-source, jadi mereka tidak punya alasan untuk memblokir kita dari memodifikasi file-file itu.

EDIT:

Saya menggunakan Menu Utama (alacarte) untuk mengubah ikon, tetapi saya masih ingin tahu mengapa saya tidak dapat memodifikasi file snap.

Jawaban:


12

Mustahil untuk mengubah konten snap tanpa membangun kembali snap. Ini terutama merupakan tindakan keamanan, untuk memastikan bahwa snap belum dirusak.

Namun, ikon disebut kemungkinan dalam sebuah file desktop yang disebut blender-tpaw_blender.desktopyang merupakan diedit, dan dapat ditemukan di /var/lib/snapd/desktop/applications.

Anda dapat mengubah baris berikut untuk memperbarui ikon: -

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

Ini "mustahil untuk mengubah" hal dengan snap sangat - Maksudku, SANGAT - menjengkelkan! Alasan utama saya ingin menggunakan snap adalah karena saya ingin melakukan instalasi paralel dari program yang sama (mis. Firefox) dan kemudian melakukan percobaan dengan instalasi "copy" tanpa mengacaukan instalasi utama. Omong-omong, perubahan pada file .desktop tidak berfungsi dalam kasus Firefox.
Almir Campos

13

Meskipun premis pertanyaan secara teknis benar (Anda tidak dapat mengubah file sekejap), ada beberapa cara untuk mengatasinya.

Salah satu cara tersebut adalah dengan menggunakan --bindopsi dalam hubungannya dengan mount, untuk mengount ulang hierarki file yang ada ke tempat lain.

Misalnya, jika Anda ingin agar snaps Anda menggunakan sertifikat sistem alih-alih sertifikat yang dipasang core, Anda dapat memasang direktori yang berisi sertifikat sistem pada host di atas direktori sertifikat sistem coredengan perintah berikut:

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

Ini sebenarnya tidak mengubah sistem file snap. Jika Anda melepas folder, folder lama akan menggantikan tempatnya:

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

Catatan: Mount tidak bertahan di antara reboot. Ada beberapa cara untuk membuat mount tetap ada setelah reboot. Salah satu caranya adalah dengan membuat systemdskrip startup:

$ 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

Diambil dari sini .


Solusi hebat, terima kasih v. Banyak! Hanya satu niggle: versi systemd yang lebih baru (versi 18.04 saat tulisan ini dibuat) tidak lagi menerima tunggangan di atas jalur yang berisi tautan lunak; untungnya konfigurasi di atas dapat diganti dengan sebuah baris /etc/fstab, misalnya: 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.