আপনাকে ডকুমেন্টেশনের সাথে উল্লেখ করতে আমার সমস্যা হচ্ছে, যার অর্থ আমার কাছে এখনও আমার কফি পান হয়নি (সত্য) অথবা আমরা কিছু ডকুমেন্টেশন মিস করছি ( আপডেট : এখানে কিছু ডকুমেন্টেশন )
আপনি যখন আপনার অ্যাপ্লিকেশনগুলি ঘোষণা করেন snapcraft.yaml
, এটি /snap/bin/
আপনার প্যাকেজ এবং অ্যাপের নাম অনুসারে ইনস্টল করার সময় একটি বাইনারি মোড়ক তৈরি করা হয় এবং এতে স্থাপন করা হয় (নোট করুন যে অ্যাপ্লিকেশনটি যদি কোনও পরিষেবা হয় তবে এই মোড়কটি পরিবর্তে একটি সিস্টেমড। পরিষেবা ফাইল)।
এই মোড়কে বেশিরভাগ পরিবেশ রয়েছে যার অধীনে অ্যাপ্লিকেশনটি চলবে। এই প্রশ্নের সাথে সর্বাধিক প্রাসঙ্গিক দুটি পরিবেশের ভেরিয়েবল SNAP_DATA
এবং SNAP_USER_DATA
।
SNAP_DATA
সিস্টেম ব্যাপী লিখনযোগ্য অঞ্চল (ইন /var/snap/
)। উদাহরণস্বরূপ এটি পরিষেবার জন্য লগগুলি হোস্ট করতে ব্যবহৃত হতে পারে।
SNAP_USER_DATA
অ্যাপ্লিকেশনটি চালিত ব্যবহারকারীর হোম ডিরেক্টরিতে একটি ব্যবহারকারী-নির্দিষ্ট লিখনযোগ্য অঞ্চল (বিশেষভাবে /home/<user>/snap/
)। এটি ব্যবহারকারী-নির্দিষ্ট কনফিগারেশন ফাইল ইত্যাদির জন্য ব্যবহৃত হতে পারে
এই দুটি ডিরেক্টরিই আপগ্রেড / রোলব্যাক কার্যকারিতাটির জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ উভয়ই সংস্করণযুক্ত । অর্থাত, প্রদত্ত স্ন্যাপের প্রতিটি সংস্করণে এই ডিরেক্টরিগুলির নিজস্ব কপি থাকে। আমাকে একটি উদাহরণ দিয়ে ব্যাখ্যা করুন।
বলুন যে আপনি "ফু" স্ন্যাপটির সংস্করণ 1 ইনস্টল করেছেন। এটি দুটি ডিরেক্টরি তৈরি করবে:
/var/snap/foo/1
( SNAP_DATA
)
/home/<user>/snap/foo/1
( SNAP_USER_DATA
)
এখন বলে "ফু" এই দুটি ব্যবহার করে uses সম্ভবত এটিতে একটি পরিষেবা রয়েছে যা একটি ডাটাবেস হোস্ট করে SNAP_DATA
এবং একটি বাইনারি যা কনফিগার ফাইল ব্যবহার করে SNAP_USER_DATA
।
এখন "ফু" সংস্করণ 2 প্রকাশিত হয়েছে এবং এটি স্বয়ংক্রিয়ভাবে আপডেট হয়ে গেছে। প্রথম যেটি ঘটে তা হ'ল এটি /var/snap/foo/1
অনুলিপি করা হয় /var/snap/foo/2
এবং এতে /home/<user>/snap/foo/1
অনুলিপি করা হয় /home/<user>/snap/foo/2
। তারপরে নতুন সংস্করণটি বহিস্কার করা হবে। এটা যে এটা পুরানো ডেটার উপর চালাচ্ছে লক্ষ্য করা উচিত, এবং হয়ত এটা ডাটাবেসের সাথে চালানোর জন্য কিছু ডাটাবেসের মাইগ্রেশন হয়েছে SNAP_DATA
। এটি এটি করে, এবং এটি চলে যায়।
এখন বলুন যে কোনও কারণেই এই স্থানান্তরগুলি ব্যর্থ হয়েছে এবং এই অ্যাপ্লিকেশনটি আবার ফিরিয়ে নেওয়া দরকার। এটি / স্ন্যাপ / foo অ্যাপ্লিকেশনটির পুরানো সংস্করণটি ব্যবহার করা শুরু করে, যেখানে SNAP_DATA
ইশারা করছিল /var/snap/foo/1
এবং SNAP_USER_DATA
নির্দেশ করছিল /home/<user>/snap/foo/1
। এই স্থানান্তরগুলি চালনার আগে পয়েন্টটিতে পুরানো সংস্করণে জিনিসগুলি তুলে ধরা হয়, যেহেতু এই অপারেশনগুলি ডেটার অনুলিপিটিতে পরিচালিত হয়েছিল।
দীর্ঘ গল্প সংক্ষিপ্ত: home
আপনি সংরক্ষণ করতে পারেন এমন ডেটা সঞ্চয় করতে ইন্টারফেসটি ব্যবহার করবেন না SNAP_DATA
বা SNAP_USER_DATA
যেহেতু তারা আপগ্রেড / রোলব্যাক কৌশলটির অবিচ্ছেদ্য অঙ্গ। তাদের সুবিধা গ্রহণ করুন!
V2.0.10 এর জন্য আপডেট করুন:
দুটি নতুন তথ্য ডিরেক্টরিও চালু করা হয়েছিল:
SNAP_COMMON
পাশাপাশি বসে SNAP_DATA
, তবে বিশেষত রূপান্তরিত নয় । নির্দিষ্ট স্ন্যাপের প্রতিটি সংশোধনীর এই ডিরেক্টরিতে অ্যাক্সেস রয়েছে, সুতরাং এটি আপগ্রেড / রোলব্যাক ইত্যাদির উপর অনুলিপি করা হয়নি। এটি বিশেষত বড়, রূপান্তরিত ফাইলগুলির জন্য ব্যবহার করা যেতে পারে (যেমন কাঁচা ডেটা যা সত্যই সংস্করণ-নির্দিষ্ট নয়)।
SNAP_USER_COMMON
পাশাপাশি বসে SNAP_USER_DATA
, তবে আবার বিশেষভাবে রূপান্তরিত হয় না । এটি ব্যবহারকারীর জন্য অ-সংস্করণ-নির্দিষ্ট ডেটা সঞ্চয় করার জন্য ব্যবহৃত হতে পারে।
V2.15 এর জন্য আপডেট করুন:
এর মধ্যে রাখা ফাইলগুলি /snap/bin
আর পরিবেশের সংজ্ঞা দেয় এমন র্যাপারগুলির মধ্যে নেই, তবে এতে সিমলিংক /usr/bin/snap
। সুতরাং কোন অ্যাপ্লিকেশনটি চালায় সেই পরিবেশ নির্ধারণের উপায়টি ব্যবহার করা হবে snap run --shell <snap>.<app>
, উদাহরণস্বরূপ:
$ sudo snap install hello-world
$ snap run --shell hello-world
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
$ env | grep SNAP
SNAP_USER_COMMON=/home/kyrofa/snap/hello-world/common
SNAP_REEXEC=
SNAP_LIBRARY_PATH=/var/lib/snapd/lib/gl:
SNAP_COMMON=/var/snap/hello-world/common
SNAP_USER_DATA=/home/kyrofa/snap/hello-world/27
SNAP_DATA=/var/snap/hello-world/27
SNAP_REVISION=27
SNAP_NAME=hello-world
SNAP_ARCH=amd64
SNAP_VERSION=6.3
SNAP=/snap/hello-world/27
SNAP_USER_COMMON
দির কি স্ন্যাপড দ্বারা স্বয়ংক্রিয়ভাবে তৈরি হচ্ছে না ? লঞ্চার স্ক্রিপ্টটি/snap/bin/
এটি তৈরি করে না এবং স্ন্যাপের ভিতরে এটি ম্যানুয়ালি তৈরি করা ব্যর্থ হয় (অনুমতি অস্বীকৃত)। রানিংsnap run app
সেই ফোল্ডারটি তৈরি করে, যদিও (তবে কমান্ডটি ব্যর্থ হয়execv failed: No such file or directory
... সেই আদেশটি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে আমার কোনও ধারণা নেই)।