Snap dosyaları neden hiçbir şekilde değiştirilemiyor?


14

Uzun zamandır Blender'ın simgesini değiştirmeye çalışıyorum, ancak ne yaparsam yapayım, hiçbir şeyi düzenlememe izin verilmiyor /snap/blender-tpaw/3/.

İşte denedim:

  • Dosyaların nautilusolmadan düzenlenmesi sudo.
  • Dosya düzenleme nautilusile sudo( sudo nautilusTerminal olarak).
  • Gibi uç komutlarını kullanarak cpveya rmolmadan sudo.
  • Terminal komutlarını sudo( sudo cp <source> /snap/blender-tpaw/3/veya gibi sudo rm /snap/blender-tpaw/3/<filename.ext>) kullanma
  • Yukarıdaki her şeyi bir kök terminalde yapmak (kullanarak sudo -i)

Her durumda aşağıdaki hatayı alıyorum:

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

Burada dosyaadı dosya ve .ext uzantısıdır.

Bu, yalnızca Blender için değil, diğer ek dosyalar için de geçerlidir.

Burada yanlış bir şey mi yapıyorum? Yoksa bu dosyaları değiştirmek imkansız mı? Bunun imkansız olduğunu düşünmeme rağmen, Ubuntu'dan Blender'a kadar her şey açık kaynaklıdır, bu yüzden bu dosyaları değiştirmemizi engellemek için hiçbir nedenleri yoktur.

DÜZENLE:

Simgeyi değiştirmek için Ana Menü'yi (alacarte) kullandım, ancak yine de neden herhangi bir ek dosyayı değiştiremediğimi bilmek istiyorum.

Yanıtlar:


12

Çıtçıtın içeriğini yeniden oluşturmadan çıtçıtın içeriğini değiştirmek imkansızdır. Bu, çıtçıtın tahrif edilmediğinden emin olmak için öncelikle bir güvenlik önlemidir.

Ancak, simge denilen bir masaüstü dosyasında muhtemeldir atıfta blender-tpaw_blender.desktophangi olduğu düzenlenebilir ve bulunabilir /var/lib/snapd/desktop/applications.

Simgeyi güncellemek için aşağıdaki satırı değiştirebilirsiniz: -

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

Snap ile bu "değiştirmek imkansız" şey çok - yani, ÇOK - sinir bozucu! Snap'ı kullanmak istememin temel nedeni, aynı programın paralel kurulumlarını (örneğin Firefox) yapmak ve daha sonra ana kurulumu bozmadan "kopya" kurulumuyla deneyler yapmak istiyorum. Bu arada, .desktop dosyasındaki değişiklik Firefox'ta işe yaramadı.
Almir Campos

13

Sorunun temeli teknik olarak doğru olsa da (bir çırpıda bulunan dosyaları değiştiremezsiniz), bu sorunu çözmenin yolları vardır.

Böyle bir yol, mevcut dosya hiyerarşisini başka bir yere yeniden monte etmek için --bindseçeneği birlikte kullanmaktır mount.

Örneğin, ek bileşenlerinizin yüklü sertifikalar yerine sistem sertifikalarını kullanmasını istiyorsanız, sistem sertifikalarını coreiçeren dizini sistem sertifikaları dizininin üstündeki ana bilgisayara coreaşağıdaki komutla bağlayabilirsiniz :

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

Bu, ek dosya sistemini gerçekten değiştirmez. Klasörü çıkarırsanız, eski klasör yerini alır:

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

Not: Bağlamalar yeniden başlatmalar arasında kalmaz. Yeniden başlatmanın ardından bağların kalıcı olmasını sağlamanın birkaç yolu vardır. Böyle bir yol bir systemdbaşlangıç ​​komut dosyası oluşturmaktır :

$ 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

Buradan alındı .


Harika bir çözüm, teşekkürler v. Çok! Sadece bir niggle: daha yeni systemd sürümleri (bu yazının 18.04 sürümündeki) artık yumuşak bağlantılar içeren yolların üstündeki bağları kabul etmiyor; Neyse ki yukarıdaki yapılandırma bir satır ile değiştirilebilir /etc/fstab, örneğin: echo -e "/etc/ssl/certs\t/snap/core/current/etc/ssl/certs\tnone\tbind,nodev,ro\t0 2" | sudo tee -a /etc/fstab- kaynak
sxc731
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.