কীভাবে একক লাইনের কমান্ড সহ অক্ষম (অব্যবহৃত) স্ন্যাপ প্যাকেজগুলি সরিয়ে ফেলবেন?


19

আমি snap list --allকমান্ডটি চালানোর সময় এটি স্ন্যাপ প্যাকেজের সমস্ত ইনস্টল করা সংস্করণ দেখায়।

Name                  Version       Rev   Tracking  Developer     Notes
atom                  1.26.1        150   stable    snapcrafters  classic
brave                 v0.22.669dev  23    stable    brave         -
core                  16-2.32.6     4571  stable    canonical     core
core                  16-2.32.5     4486  stable    canonical     core,disabled
firefox               59.0.2-1      71    stable    mozilla       disabled
firefox               60.0-2        85    stable    mozilla       -
gimp                  2.10.0        38    stable    snapcrafters  disabled
gimp                  2.10.0        39    stable    snapcrafters  -
gimp                  2.8.22        30    stable    snapcrafters  disabled
gnome-3-26-1604       3.26.0        64    stable/…  canonical     -
gnome-3-26-1604       3.26.0        62    stable/…  canonical     disabled
gnome-characters      3.28.0        86    stable/…  canonical     -
gnome-characters      3.26.2        69    stable/…  canonical     disabled
gnome-logs            3.26.2        25    stable/…  canonical     disabled
gnome-logs            3.28.0        31    stable/…  canonical     -
gnome-system-monitor  3.26.0        36    stable/…  canonical     disabled
gnome-system-monitor  3.26.0        39    stable/…  canonical     -
libreoffice           6.0.3.2       59    stable    canonical     disabled
libreoffice           6.0.4.2       63    stable    canonical     -

এখন সেখানে অনেকগুলি অক্ষম প্যাকেজ রয়েছে যা আর ব্যবহার করা হয় না। সুতরাং আমি এই প্যাকেজগুলি মুছে ফেলতে চাই। এখানে কমান্ড snap remove gnome-3-26-1604 --revision=62। এখন আমি এটি সমস্ত সংশোধন এবং সমস্ত প্যাকেজগুলির জন্য একে একে করতে হবে। এমন কোন কমান্ড আছে যা একক লাইন কমান্ড সহ অক্ষম বা অব্যবহৃত স্ন্যাপ প্যাকেজগুলি সরিয়ে ফেলবে?

আগাম ধন্যবাদ...


1
হ্যা অবশ্যই!! আমি প্রশ্নটি সম্পাদনা করেছি ...
রাইকো

মনে রাখবেন যে কোনও একক পূর্ববর্তী সংস্করণটি ডিজাইন অনুসারে রাখা : যখন কোনও স্ন্যাপ আপডেট করা হয়, তখন পুরানো সংশোধনটি সরানো হবে।
মুড়ু

তবে এখানে গিম্পের 3 টি সংস্করণ রয়েছে (পুনর্বিবেচনা -30,38,39)। যদিও 38 এবং 39-এর পুনর্বিবেচনার একই সংস্করণ রয়েছে ... আমি আপনাকে পরে
জানাব

স্ন্যাপে এমন কোনও সেটিংস পাওয়া যায় যাতে আমি স্ন্যাপ অ্যাপ্লিকেশনগুলির পূর্ববর্তী সংস্করণগুলি অক্ষম রাখতে পারি ... কারণ তাদের কারও কারও জন্য এত বেশি জায়গার প্রয়োজন হয় ... যেমন লাইব্রে-অফিস প্রায় ২ জিবি স্থান নেয়, এবং যদি পূর্ববর্তী সংস্করণটি হয় অন্তর্ভুক্ত এটি 4 জিবি হয়ে যায়।
Ryko

এটি এখন একটি স্ন্যাপড বিকাশকারী দ্বারা কাজ করা হচ্ছে: github.com/snapcore/snapd/pull/5207
Zygmunt Krynicki

উত্তর:


22

আমি শীঘ্রই এটিকে যুক্ত করার চেষ্টা করব (20% জিনিস হিসাবে)। এদিকে, আপনি ড্রপ করতে পারে

#!/bin/sh
set -eu

snap list --all | awk '/disabled/{print $1, $3}' |
    while read snapname revision; do
        snap remove "$snapname" --revision="$revision"
    done

একটি শেল স্ক্রিপ্ট মধ্যে এবং এটি চালান।


আমি পূর্বে লিখুন হবে উবুন্টু থেকে স্ন্যাপ কমান্ড।
পিয়েরে

1
না, এটি করবেন না: সুডো কলারের মাধ্যমে করা উচিত, স্পষ্টতই।
চিপাচা

তদ্ব্যতীত, আপনার অগত্যা snap removesnap login
সুডোর

1
আপনি xargsএটিকে অনেলিয়ার তৈরি করতে ব্যবহার করতে পারেন :)
Ctrl-C


4

আমি এই সমাধানটি (একটি একক উদ্ধৃতি ব্যবহার করে) একটি উপন্যাসে আরও মার্জিত এবং সহজেই ব্যবহার করতে পেলাম :

LANG=C snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then sudo snap remove "$snapname" --revision="$rev"; fi; done

স্ন্যাপ ২.৩। থেকে শুরু করে এবং পরে, refresh.retainবিকল্পের ( উত্স ) সেট করে আপনি স্ন্যাপের সর্বাধিক সংখ্যার সংশোধন করতে পারেন system

sudo snap set system refresh.retain=2 

2

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


1
কীভাবে স্ন্যাপগুলি (জেএসএন বা অনুরূপ) সম্পর্কে মেশিন-পঠনযোগ্য তথ্য পাবেন যা এটিকে স্বয়ংক্রিয় করতে সহজে পার্স করা যায়?
মুরু

1
দেখে মনে হচ্ছে আলোচনায় আসলে লক্ষ্য করা গেছে যে পুরানো স্ন্যাপগুলি স্বয়ংক্রিয়ভাবে সরিয়ে ফেলা হয়েছে, যাতে সর্বোচ্চ তিনটি থাকে। নম্বরটি কনফিগারযোগ্য করার বিষয়ে আলোচনা।
nealmcb

1

পূর্ববর্তী উত্তরগুলির উপর ভিত্তি করে, আপনার সম্ভবত এমন কিছু করা উচিত:

snap list --all | awk '$5~"disabled"{print $1" --revision "$3}' | xargs -rn3 snap remove

যা কোনও অক্ষম স্ন্যাপ পুনর্বিবেচনা না থাকাকালীন একটি ত্রুটি নির্গত করতে এড়িয়ে চলে এবং নোটস কলামে বিশেষত "অক্ষম" সন্ধান করে।


ওহ হাহ, আমি এটিতে আপনার মন্তব্যের ভিত্তিতে আমার উত্তর সম্পাদনা করেছি, তবে কেবলমাত্র আপনি দেখতে পেয়েছেন যে আপনি মূলত অভিন্ন উত্তর যোগ করেছেন :)
ক্যাস্পার.ড.সিএল

4
দুর্ভাগ্যবশত স্ন্যাপ (2.38 + + 18.10 উবুন্টু 18.10 দিকে) আমার সংস্করণে, নোটস কলাম $6বদলে $5snap listকমান্ড সত্যিই একটি প্রয়োজন --formatযাতে আউটপুট স্ক্রিপ্টিং জন্য সামঞ্জস্যপূর্ণ হতে পারে বিকল্প।
মাইক হিক্স


0

@ শিপাকা, @ সিটিআরএল-সি এবং @ পাবলো ললোনির পরামর্শগুলিতে বিল্ডিং:

snap list --all | awk '$5~"disabled"{print $1" --revision "$3}' | xargs -rn3 snap remove

এটি সম্পর্কিত নোটের "নোটস" কলামে "অক্ষম" জন্য অনুসন্ধান করে snap list --allএবং snap remove <snap> --revision <rev>এটি স্ন্যাপটি চালায় ।


আমি এটি পাই না
পিয়ের.ভ্রিয়েন্স

আপনি xarg এর -r পতাকা ব্যবহার করে ত্রুটি এড়াতে পারেন।
পাবলো লালোনি

সমস্যাটি হ'ল কমান্ডটি তার নামে "অক্ষম" থাকা
স্ন্যাপগুলি

0

এই স্ক্রিপ্টগুলির সংস্করণগুলির মধ্যে বিভাজনগুলি সম্পর্কে মাইকের কাছ থেকে নোটটি দেখার পরে কারণ আউটপুট কলামগুলির সংখ্যা পরিবর্তিত হয়েছে, আমি এই জিনিসটিতে কোনও মেশিন-পঠনযোগ্য বাইন্ডিং আছে কিনা তা দেখতে সন্ধান করলাম।

যা আমি পেয়েছি তা হ'ল স্ন্যাপডের REST এপিআই

সমতুল্য snap list --allহয়

curl --silent --show-error \
    --get --data select=all \
    --unix-socket /run/snapd.socket \
    http://localhost/v2/snaps

এটি JSON ফেরত দেয়। এটিকে অ-অ্যাক্টিভ প্যাকেজগুলিতে নিচে ফিল্ড করতে এবং snap removeকমান্ডের তালিকায় এটি চালু করতে আপনি ব্যবহার করতে পারেন jq:

jq --raw-output '
    .result[] | 
    select(.status != "active") | 
    "snap remove --revision=\(.revision|@sh) \(.name|@sh)"
'

আপনি প্রযুক্তিগতভাবে সমস্ত একক লাইনে চালাতে পারেন (আমি যে ব্রেকগুলি সন্নিবেশ করলাম সেগুলি পাঠযোগ্যতার জন্য) তবে এটি বেশ মুষ্টিমেয়, তাই আমি এটিকে একটি স্ক্রিপ্টে আবৃত করেছি: মুছে ফেলা - অক্ষম- স্ন্যাপস.শ

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