स्नैप फ़ाइलों को किसी भी तरह से संशोधित क्यों नहीं किया जा सकता है?


14

मैं लंबे समय से ब्लेंडर के आइकन को बदलने की कोशिश कर रहा था, लेकिन कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, मुझे कुछ भी संपादित करने की अनुमति नहीं है /snap/blender-tpaw/3/

यहाँ मैंने क्या कोशिश की है:

  • फाइलों को nautilusबिना एडिट किए sudo
  • से फाइल का संपादन nautilusके साथ sudo( sudo 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

फ़ाइल नाम जहां फ़ाइल है और .ext इसका एक्सटेंशन है।

यह ब्लेंडर ही नहीं, अन्य स्नैप्स फाइलों पर भी लागू होता है।

क्या मुझसे यहां कुछ गलत हो रहा है? या उन फाइलों को बदलना नामुमकिन है? हालाँकि मुझे नहीं लगता कि यह असंभव है क्योंकि यहाँ उबंटू से लेकर ब्लेंडर तक सब कुछ ओपन-सोर्स है, इसलिए उनके पास अपनी फ़ाइलों को संशोधित करने से रोकने का कोई कारण नहीं है।

संपादित करें:

मैंने आइकन बदलने के लिए मेन मेनू (अल्केर्ट) का उपयोग किया, लेकिन मैं अभी भी जानना चाहता हूं कि मैं किसी भी स्नैप फ़ाइल को संशोधित क्यों नहीं कर सकता।

जवाबों:


12

स्नैप के फिर से निर्माण के बिना स्नैप की सामग्री को बदलना असंभव है। यह मुख्य रूप से एक सुरक्षा उपाय है, यह सुनिश्चित करने के लिए कि तस्वीर के साथ छेड़छाड़ नहीं की गई है।

हालांकि, आइकन के लिए भेजा करने के लिए एक डेस्कटॉप बुलाया फ़ाइल में होने की संभावना है blender-tpaw_blender.desktopजो है संपादन योग्य है, और में पाया जा सकता /var/lib/snapd/desktop/applications

आप आइकन को अपडेट करने के लिए निम्नलिखित लाइन बदल सकते हैं: -

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

स्नैप के साथ यह "असंभव को बदलने" वाली बात बहुत है - मेरा मतलब है, बहुत - कष्टप्रद! मुख्य कारण मैं स्नैप का उपयोग करना चाहूंगा कि मैं एक ही प्रोग्राम (जैसे फ़ायरफ़ॉक्स) के समानांतर स्थापना करना चाहता हूं और फिर मुख्य स्थापना को गड़बड़ किए बिना "कॉपी" स्थापना के साथ प्रयोग करना चाहता हूं। वैसे, .desktop फ़ाइल पर परिवर्तन फ़ायरफ़ॉक्स के मामले में काम नहीं करता था।
एल्मीर कैम्पोस

13

जबकि प्रश्न का आधार तकनीकी रूप से सही है (आप किसी स्नैप की फ़ाइलों को नहीं बदल सकते हैं), इसके चारों ओर काम करने के तरीके हैं।

एक ऐसा तरीका है कि मौजूदा फ़ाइल पदानुक्रम को कहीं और निकालने के लिए, --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

नोट: Mounts रिबूट के बीच कायम नहीं है। रिबूट के बाद mounts बनाने के कई तरीके हैं। 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

यहां से ले गए ।


महान समाधान, धन्यवाद v। बहुत कुछ! बस एक निगल: नए सिस्टमड संस्करण (इस लेखन के रूप में 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- स्रोत
sxc731
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.