আমি এখানে কোনও সমাধান আমার জন্য কাজ করতে দেখি না, আমি dpkg সহ বেশ কয়েকটি ডিবে প্যাকেজ ইনস্টল করেছি এবং আমি বিশেষভাবে যে আইটেমগুলির সন্ধান করছিলাম সেগুলির মধ্যে কিছু অনুপস্থিত ছিল।
একটি দীর্ঘ দীর্ঘ লাইনার, তবে অনুলিপি এবং কপি করা সুবিধাজনক হবে:
export DPKG_INITIAL=$(mktemp) DPKG_INSTALLED=$(mktemp) DPKG_CUSTOM=$(mktemp) DPKG_DEPS=$(mktemp) zgrep -E '^Package' /var/log/installer/initial-status.gz | awk '{ print $2 }' > $DPKG_INITIAL ; awk '$3 !~ /install|remove|purge/ { next } { gsub(/remove|purge/, "uninstall", $3) ; gsub(/:.+/, "", $4) ; a[$4]=$3 } END { for (p in a) { if (a[p] == "install") { print p } } }' /var/log/dpkg.log | sort -u > $DPKG_INSTALLED ; comm -23 installed initial > $DPKG_CUSTOM ; function rdep() { apt-cache rdepends $1 | tail -n +3 | sed -e 's/^ //' -e '/^ /d' | cut -d':' -f1 | sort -u; } ; echo "$(for i in $(cat custom) ; do rdep $i ; done)" | sort -u > $DPKG_DEPS ; comm -23 custom deps > my-packages ; rm $DPKG_INITIAL $DPKG_INSTALLED $DPKG_CUSTOM $DPKG_DEPS
উপরের কমান্ডটি আপনার বর্তমান ওয়ার্কিং ডিরেক্টরিতে নামের একটি ফাইলের প্যাকেজগুলির একটি তালিকা সংরক্ষণ করে my-packages
।
ব্যাখ্যা
আমি প্রথম প্যাকেজগুলির একটি তালিকা তৈরি করেছি যা ইনস্টলেশনের সময় নির্বাচিত প্যাকেজগুলির বেসলাইন তৈরি করে।
zgrep -E '^Package' /var/log/installer/initial-status.gz | awk '{ print $2 }' > initial
সাধারণভাবে ইনস্টল করা আইটেমগুলির একটি দীর্ঘ তালিকা অনুসরণ করে।
awk '$3 !~ /install|remove|purge/ { next } { gsub(/remove|purge/, "uninstall", $3) ; gsub(/:.+/, "", $4) ; a[$4]=$3 } END { for (p in a) { if (a[p] == "install") { print p } } }' /var/log/dpkg.log | sort -u > installed
আমি তখন দুটি ফাইলের তুলনা করেছি initial
এবং installed
কেবল ইনস্টল করা আইটেম তালিকা করতে।
comm -23 installed initial > custom
সেখান থেকে আমি নির্ভরতাগুলি ফিল্টার করতে চেয়েছিলাম, এই পদ্ধতিতে কিছু পছন্দসই প্যাকেজ মিস হতে পারে, এটি নির্ভরশীলতা সম্পর্কেও অবগত নয় যা স্পষ্টভাবে ইনস্টল করা আছে।
আমি এই আইটেমগুলি প্রক্রিয়া করার এই পদক্ষেপগুলি সংক্ষিপ্ত করতে একটি দ্রুত বাশ ফাংশন লিখেছি।
function rdep() { apt-cache rdepends $1 | tail -n +3 | sed -e 's/^ //' -e '/^ /d' | cut -d':' -f1 | sort -u; }
এর পরে আমি আমার ফাইল থেকে প্রতিটি লাইনটি custom
এই ফাংশনে দিয়েছি xargs
।
echo "$(for i in $(cat custom) ; do rdep $i ; done)" | sort -u > deps
একবার আমি প্রতিটি সম্ভাব্য নির্ভরতার দীর্ঘ তালিকা পেয়েছি, (প্রতিটি সম্ভাব্য বিবৃতিতে নিশ্চিত নয়), আমি আবার একবার লাইন পেয়েছি যা একটি ফাইলে অনন্য ছিল।
comm -23 custom deps > manual
এবং আমার প্যাকেজগুলির সমাপ্ত তালিকাটি এখন manual
আমার কাছে পর্যালোচনা করার জন্য উপলব্ধ একটি ফাইলে রয়েছে ।
something
এবংsomething-common
পাশাপাশি না ।