স্ন্যাপ প্যাকেজগুলি অন্য কোনও স্থানে / ডিরেক্টরিতে সরান


13

আমি ইনস্টল করা স্ন্যাপ প্যাকেজগুলি হোম ডিরেক্টরিতে সরাতে চাই। স্ন্যাপ প্যাকেজগুলি .deb প্যাকেজগুলির চেয়ে কিছুটা বড় thus তারা আমার মূল বিভাজনে স্থান নেয়। আমি জানি প্যাকেজগুলি অবস্থিত /var/lib/snapd/snapsএবং তারা প্যাকেজটি মাউন্ট করার সাথে কাজ করছে /snap/app_dir। আমি অনুরূপ করার চেষ্টা করেছি, কিন্তু এটি কার্যকর হয়নি।

উত্তর:


15

স্ন্যাপ ইনস্টলেশন ডিরেক্টরি পরিবর্তন করুন

এটি একটি সাধারণ সমস্যা যা অনেকেই জিজ্ঞাসা করেন। দেখে মনে হচ্ছে স্ন্যাপ বিকাশকারীরা শীঘ্রই এটি সমাধানের ইচ্ছা করছে না, তাই কিছু সমাধানের পরামর্শ দেওয়া হয়েছিল।

প্রথম সমাধানটি যা সম্প্রদায়ের দ্বারা দৃ strongly়ভাবে প্রত্যাখ্যান করা হয়েছিল, কিন্তু আমি চেষ্টা করিনি, তা হ'ল ডিরেক্টরিগুলির সাথে সংযোগের জন্য প্রতীকী লিঙ্কগুলি ব্যবহার করা। এই পদ্ধতিটি তেমন কাজ করছে না বলে মনে হচ্ছে সম্প্রদায়ের জবাবগুলি বলে যে সংযোজনীয় লিঙ্কগুলির সাথে অ্যাপারমম কাজ করে না।

দ্বিতীয় সমাধানটি হ'ল mount --bindডিরেক্টরিটি /val/lib/snapd/snapsযা ইতিমধ্যে ইনস্টল করা অ্যাপ্লিকেশনগুলির সাথে আমার পক্ষে সূক্ষ্মভাবে কাজ করে তবে নতুন অ্যাপ্লিকেশন ইনস্টল করতে ব্যর্থ হয়েছিল কারণ আমি ডিরেক্টরিটি অন্য পার্টিশনে নিয়ে যাচ্ছিলাম। এটি আমাকে অবস্থিত ক্যাশে ডিরেক্টরিটির সাথে স্ন্যাপ অ্যাপ্লিকেশনটির সাথে হার্ড লিঙ্ক করার বিষয়ে একটি ত্রুটি দিয়েছে /var/lib/snapd/cache। আমি জানি না যে অবস্থানটি একই পার্টিশনে থাকলে এই সমাধানটি কাজ করতে পারে; তবে এই কারণেই আমি স্ন্যাপ ডিরেক্টরিটি পার্টিশন থেকে অন্য একটি স্থান থেকে মুক্ত করতে সরিয়ে নিচ্ছি।

তৃতীয় এবং কার্যক্ষম বিকল্পটি হ'ল /var/lib/snapdডিরেক্টরিটিকে পুরোপুরি mount --bindঅন্য কোনও স্থান থেকে সরিয়ে নেওয়া এবং এটি আমার পক্ষে কাজ করেছিল এবং এখানে পদক্ষেপগুলি রয়েছে।

কেবলমাত্র একটি ছোট্ট নোট, আপনি ইতিমধ্যে জানেন, নীচের পদক্ষেপগুলিতে আরএসসিএনসি করার পরে, /var/lib/snapdপুরো প্রক্রিয়াটি সফলভাবে না হওয়া পর্যন্ত আপনি অন্য কোনও স্থানে ডেটাটিকে ব্যাকআপ করতে পারবেন যদি আপনি আরও স্থান খালি করতে চান তবে আপনি ব্যাকআপ ডেটা সরাতে পারবেন।

##############################################################################
# Take Care this section may break the System !!!
##############################################################################
##Move snap folder to Home instead of root.
#Create the directory : you can change the location
mkdir /home/$USER/snap/snapd

#Copy the data
sudo rsync -avzP /var/lib/snapd/  /home/$USER/snap/snapd/

#Do backups
sudo mv /var/lib/snapd /var/lib/snapd.bak
sudo cp /etc/fstab /etc/fstab.bak

#Change fstab (Change $USER with your name or change the path totally)
echo "/home/$USER/snap/snapd /var/lib/snapd none bind 0 0" | sudo tee -a /etc/fstab

#remount fstab Or reboot.
sudo mkdir /var/lib/snapd
sudo mount -a

if ls  /var/lib/snapd/ | grep snaps
then
    echo "Re-mounting snapd folder is done successfully. !!!!"
    sudo rm -rf /var/lib/snapd.bak
else
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "
    echo "WARNING : Re-mounting snapd folder failed, please revert !!!!! "

    # Trying to revert automatically
    sudo cp /etc/fstab.bak /etc/fstab

    sudo mount -a
    sudo umount /var/lib/snapd

    sudo mv /var/lib/snapd.bak /var/lib/snapd

    echo "Files located at ~/snap/snapd should be removed, but it keeped for
    recovery until you ,manually, reboot the system and make sure the service
    is running correctly then manually you can remove that folder ~/snap/snapd
    !!!!!!!!!!!!!!, you should do that manually."

fi
##############################################################################
# Take Care the pervious section may break the System !!!
##############################################################################

তথ্যসূত্র

  1. নির্দিষ্ট স্ন্যাপ ইস্যুর জন্য কাস্টম ডিস্কের অবস্থান
  2. উবুন্টু প্রশ্ন জিজ্ঞাসা (সেরা সমাধান নয়) লিঙ্ক
  3. স্ন্যাপ ডিরেক্টরিগুলি লিঙ্কে প্রতীকী লিঙ্কগুলির পরিবর্তে বাইন্ড মাউন্ট ব্যবহার করার পরামর্শ
  4. বাইন্ড মাউন্ট এবং প্রতীকী লিঙ্কগুলির মধ্যে পার্থক্য Link
  5. বাঁধাই মাউন্ট permenant করুন

1
আমার জন্য দুর্দান্ত কাজ করে ধন্যবাদ! আমাকে মাউন্ট -a কাজ করতে .bak এ নিয়ে যাওয়ার পরে কেবল (পুনরায়) / var / lib / স্ন্যাপডি ডিরেক্টরি তৈরি করতে হয়েছিল
সেলিম

@ সলিম, আপনি ঠিক বলেছেন, আমি এই পদক্ষেপটি মিস করেছি যা আমি স্ক্রিপ্টে যুক্ত করব
মুহাম্মদ ইউসুফ

11

আমি অবশেষে একটি উপায় খুঁজে পেয়েছি।

  • প্রথমে স্ন্যাপ প্যাকেজটিকে কাঙ্ক্ষিত স্থানে নিয়ে যান। snap_app.snapআপনি যে অ্যাপটি সরাতে চান তা হিসাবে চলুন । থেকে প্যাকেজ সরান /var/lib/snapd/snaps/snap_app.snapকরতে ~/snaps/snap_app.snap
  • তারপরে আপনাকে মাউন্ট বিকল্পটি পরিবর্তন /etc/systemd/system/snap-snap_app-90.mountকরতে হবে, ফাইলের নামের সংখ্যাটি ভিন্ন হতে পারে। এটির What=/snap_app_loactionঅধীন নির্দেশ রয়েছে [Mount]। আপনার নতুন স্ন্যাপ প্যাকেজ অবস্থান এ এটি পরিবর্তন করুন।
  • অবশেষে আপনাকে স্ন্যাপ প্যাকেজটিতে সিএমিলিং করতে হবে /var/lib/snapd/snaps/
    উদা: ln -s ~/snaps/snap_app.snap /var/lib/snapd/snaps/snap_app.snap

স্ন্যাপ প্যাকেজটি মূলত /snap/snap_appডিরেক্টরিতে মাউন্ট হয় । আপনি এটি দিয়ে পরীক্ষা করতে পারেন mount। আপনার মেশিনটি পুনরায় বুট করুন এবং আপনার কাজ শেষ হয়েছে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.