CentOS / Fedora- এ ব্যবহৃত (প্যাকেজ) ব্যবহার করা প্যাকেজগুলি সন্ধান করবেন?


3

সংক্ষেপে: ইনস্টল করা সমস্ত (আরপিএম) প্যাকেজগুলি থেকে আমি অব্যবহৃতগুলি সনাক্ত করতে চাই (উদাহরণস্বরূপ গত 6 মাস থেকে)।

দীর্ঘায়িত: আমার কাছে শ্রদ্ধেয় সেবার রেকর্ড সহ বেশ কয়েকটি মেশিন রয়েছে। আমি যখনই এক রিলিজ থেকে অন্যের কাছে আপগ্রেড করি তখনই আমি অবাক হয়ে যাই যে আপগ্রেড পদ্ধতিটি কতটা ভাল চলছে।

তবে বছরের পর বছর ধরে অনেকগুলি প্যাকেজ ইনস্টল করা হয়েছিল (yum এর মাধ্যমে), আমি জানি যে অনেকগুলি আর ব্যবহার করা হয় না। আমি এগুলি থেকে মুক্তি পেতে চাই কারণ সেগুলির উত্স ব্যবহার এবং সিস্টেমের সামগ্রিক সুরক্ষায় নেতিবাচক প্রভাব পড়ে।

অব্যবহৃত প্যাকেজগুলি সন্ধান করার জন্য আমি সেরা পদ্ধতির সন্ধান করছি।

একটি উপায় হ'ল কি ইনস্টল করা প্যাকেজগুলি ম্যানুয়ালি চালিত করা হবে? পদ্ধতিটি কাজ করে এবং আমি অনেক কিছু শিখি তবে এটি অত্যন্ত সময়সাপেক্ষ।

সুতরাং আমি অব্যবহৃত প্যাকেজগুলি সনাক্ত করার জন্য একটি স্বয়ংক্রিয় উপায়ের সন্ধান করছি যাতে আমি সেগুলি ম্যানুয়ালি পরিষ্কার করতে পারি।

আমার ধারণা, এগিয়ে যাওয়ার এক উপায় হ'ল কোনও সার্ভারের সমস্ত ব্যবহৃত ফাইলগুলি পর্যবেক্ষণ করা, তাদের প্যাকেজগুলিতে লিঙ্ক করা এবং কী অবশিষ্ট রয়েছে তা দেখুন। এই উদ্দেশ্যে কি কিছু পাওয়া যায়?

এটি সম্পাদন করার আরও উদ্ভাবনী উপায় কি আছে?


এটি করে আপনি কোন সমস্যার সমাধান করবেন?
ew

যেমনটি উল্লেখ করা হয়েছে: রিসোর্সের ব্যবহার হ্রাস করুন এবং সুরক্ষা বাড়ান
জাবুজ্জামান

1
তারপরে একটি সর্বনিম্ন ইনস্টল করুন এবং পরে আপনার পরিষেবাটি ইনস্টল করুন। সুরক্ষা উদ্বেগের জন্য, যদি কোনও ব্যবহারকারীর বাশ অ্যাক্সেস না থাকে তবে এটি কীভাবে এটি ব্যবহার করবে? Ew white হিসাবে বলা হয়েছে, আপনাকে যা খোলা আছে তা সুরক্ষিত করা দরকার।
yagmoth555

2
না, @ ইয়াগমথ 555 এর পরামর্শ ডেস্কটপগুলিতেও পুরোপুরি প্রযোজ্য, কেবলমাত্র "ন্যূনতম" হ'ল একটি "ডেস্কটপ" ইনস্টলেশন এবং "পরিষেবা" ব্যবহারকারীদের প্রয়োজনীয় অ্যাপ্লিকেশন। উভয় ক্ষেত্রেই, আপনার প্রদত্ত যে কোনও ধরণের সিস্টেমের জন্য কী কী প্যাকেজ দরকার তার কোনও স্পষ্ট ডকুমেন্টেশন থাকা উচিত। আপনার পুতুলের ভূমিকা / প্রোফাইলগুলি যেগুলির জন্য আপনি সংজ্ঞায়িত করেছেন এটির জন্য এটি দুর্দান্ত জায়গা।
মাইকেল হ্যাম্পটন

2
আমি মনে করি যে কেউ এর যথাযথভাবে উত্তর দিতে সক্ষম হতে পারে আপনি 'ব্যবহৃত' এবং 'অব্যবহৃত' হিসাবে আপনি কী নির্ধারণ করেন তার একটি দৃ definition় সংজ্ঞা নিয়ে আসতে হবে।
ম্যাথু ইফ

উত্তর:


9

একাধিক প্যাকেজগুলিতে আরপিএম এবং ভাগ করা লাইব্রেরিগুলির প্রকৃতি বিবেচনা করে আমি যে প্যাকেজগুলি ব্যবহার করি সেগুলির একটি তালিকা তৈরির পদ্ধতি গ্রহণ করব এবং এটি ইনস্টলড প্যাকেজগুলির তালিকার তুলনায় পৃথক। অব্যবহৃত প্যাকেজগুলি মুছে ফেলার মতো সুবিধা রয়েছে যেমন ডিস্কের স্থান মুক্ত করা, প্যাকেজগুলি হ্রাস করার সুবিধা যা সুবিধা বাড়ানোর সুবিধার্থে চেকসাম ডাটাবেস যেমন ওএসএসইসি, সহায়তা, ট্রিপওয়্যারের আকার হ্রাস করে।

অনুমান :

  • সময় সক্রিয় করা হয়। আপনি যদি নোয়াটাইমের মাউন্ট অপশনটি ব্যবহার করছেন তবে ফাইলগুলির অ্যাক্সেসের সময় আপডেট হবে না এবং কোন ফাইল অ্যাক্সেস করা হয় তা নির্ধারণের জন্য ব্যবহার করা যাবে না। রাইটিং পেনাল্টি এড়ানোর জন্য নোয়াটিমের জন্য একটি ফাইল সিস্টেমে সেট করা সাধারণ।

দাবি অস্বীকার: এই পদ্ধতির কিছু ঝুঁকি রয়েছে যা আপনার বিবেচনা করা উচিত। উদাহরণস্বরূপ, যদি আপনার সার্ভার কয়েক বছর ধরে থাকে তবে সেখানে ডেমন চলতে পারে যা সার্ভার / ডেমন শুরুর সময় থেকে আপনি অ্যাক্সেস করেননি এমন পুরানো ফাইলগুলি ব্যবহার করে। ফ্যাক্টর হওয়ার জন্য প্রচুর পরিমাণে অন্যান্য ঝুঁকি রয়েছে, তবে আপনি তাই জিজ্ঞাসা করেছিলেন যে এখানে একটি পদ্ধতি শুরু করা যেতে পারে। এটি এখনও একটি মানুষের নিরাপদে অপসারণ করা যেতে পারে তা নির্ধারণ করা প্রয়োজন। আপনার এই পদ্ধতিটি ব্যবহার করে প্যাকেজগুলি অপসারণ স্বয়ংক্রিয়ভাবে করা উচিত নয়। এটি কেবলমাত্র শিক্ষামূলক ব্যবহারের জন্য।

ইনস্টল করা সমস্ত আরপিএমের একটি তালিকা তৈরি করুন।

rpm -qa | sort -n > /dev/shm/all.txt

সম্প্রতি অ্যাক্সেস করা ফাইলগুলির একটি তালিকা তৈরি করুন এবং একটি গণনা সংরক্ষণ করুন। আমরা নতুন বছর ঘুরছি, সুতরাং আপনি গত বছরটি দেখতে চাইতে পারেন।

YEAR=`date -d "one year ago" '+%Y'`
# YEAR=2014
OFS="$IFS";IFS=$'\n';stat --printf="%y %n\n" $(ls -tr $(find /bin /boot /etc /lib /lib64 /sbin /usr /var -type f ! -name "*~" ! -name "*.gz" ! -name "*.tar")) | grep ^${YEAR} | awk {'print $NF'} > /dev/shm/recent.txt;IFS="$OFS";
FILECOUNT=`egrep -c ^.+ /dev/shm/recent.txt`

রাম ডিস্কে আমাদের আরপিএম ডাটাবেস অনুলিপি করুন যাতে আমরা সার্ভারটি অপব্যবহার করি না। আপনার কমপক্ষে 100 এমবি নিখরচায় রয়েছে তা নিশ্চিত করুন। যেমন df -Ph / dev / shm

mkdir --mode=0700 /dev/shm/rpmdb
rsync -a /var/lib/rpm/. /dev/shm/rpmdb/.

আমাদের সাম্প্রতিক টেক্সট তালিকার সাথে সম্পর্কিত আরপিএমের সন্ধান করুন। এটি একটি সময় নিতে হবে। আমি বাজি ধরছি যে কেউ এই পদক্ষেপটি করার জন্য আরও দক্ষ, দ্রুত এবং চতুর উপায়গুলি খুঁজে পেতে পারে। আমি এটি একটি স্ক্রিন সেশনে করব।

renice 19 -p $$ > /dev/null 2>&1
printf "${FILECOUNT} files to iterate through."
> /dev/shm/recent_packages.txt
for file in `cat /dev/shm/recent.txt`
do
rpm --dbpath /dev/shm/rpmdb -q --whatprovides ${file} >> /dev/shm/recent_packages.txt 2>/dev/null
# optional status indicator.
printf "."
done

অনুসন্ধান থেকে RPM প্যাকেজের মালিকানাধীন ফাইলগুলি আমাদের তালিকা থেকে সরান।

grep -v "not owned by" /dev/shm/recent_packages.txt | sort -n | uniq > /dev/shm/recent_sorted.txt

আউটপুট পার্থক্য। আবার এটি নিজে থেকে পুরোপুরি কার্যকর হয় না। এই প্যাকেজগুলি থেকে কেন ফাইল অ্যাক্সেস করা হয়নি তা আপনাকে নির্ধারণ করতে হবে।

diff -u /dev/shm/recent_sorted.txt /dev/shm/all.txt | grep '^+'

আপনি RPM -Ql প্যাকেজ সহ RPM এর বিষয়বস্তু তালিকাভুক্ত করতে পারেন । আমার ভিএম এর একটিতে আউটপুট এখানে। আপনি দেখতে পাচ্ছেন, এটি আমার ক্ষেত্রে সম্পূর্ণ কার্যকর নয়।

+++ /dev/shm/all.txt    2014-12-31 20:50:06.521227281 +0000
+basesystem-10.0-4.el6.noarch
+dhcp-common-4.1.1-43.P1.el6.centos.x86_64
+filesystem-2.4.30-3.el6.x86_64
+rootfiles-8.1-6.1.el6.noarch

এই ফাইলগুলি কিছুক্ষণের মধ্যে অ্যাক্সেস করা হয়নি সত্ত্বেও, আমাকে ফাইল সিস্টেম এবং বেস সিস্টেমটি প্রায় রাখার প্রয়োজন। দ্রষ্টব্য: কিছু সময় আমি noatime সক্ষম

আমি dhcp- সাধারণ এবং এর সাথে সম্পর্কিত dhclient প্যাকেজটি সরিয়েছি, যেহেতু আমার নির্দিষ্ট ব্যবহারের ক্ষেত্রে আমার কখনই DHCP দরকার হবে না। আমি বুঝতে পারি যে এই পদ্ধতিটি পুরোপুরি দক্ষ নয়, তবে এটি আপনাকে আপনার সার্ভারগুলির প্রতিটি অনন্য ভূমিকার জন্য একটি সূচনা পয়েন্ট দেবে। শুভ নব বর্ষ!


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

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

@ অ্যারন আপনার সাথে যোগাযোগ করার কোনও উপায় আছে দয়া করে?
seoppc

4

আমি জানি না এর সঠিক উত্তর আছে ...

এটি লক্ষণীয় গুরুত্বপূর্ণ যে বহিরাগত প্যাকেজগুলি প্রায়শই অনেকগুলি সাধারণ উদ্দেশ্যে লিনাক্স মোতায়েনে ইনস্টল করা হয়।

বেশিরভাগ প্রকৌশলী ইনস্টল হওয়া স্বতন্ত্র সফ্টওয়্যার প্যাকেজগুলি হ্যান্ড-সিলেক্ট করেন না, বরং অ্যাপ্লিকেশনগুলির লজিক্যাল গ্রুপগুলি (ওয়েব সার্ভার, মেল সার্ভার, এনএফএস সার্ভার) বা সিস্টেম রোলগুলি (সার্ভার, ওয়ার্কস্টেশন, ন্যূনতম) দ্বারা চয়ন করুন

উপরোক্ত নির্বাচনের অংশ হিসাবে কিছু নির্ভরতাও ইনস্টল করা রয়েছে। কোন প্যাকেজগুলি "অব্যবহৃত" তা নির্ধারণের ধারণাটি এই কারণে পরিপূর্ণ।

সুরক্ষা কেবল যা ইনস্টল করা হয়েছে তার উপর নির্ভর করে না ... এটি সিস্টেমে আসলে কী চলছে তার আরও একটি কাজ ; যথা ডেমোনস, নেটওয়ার্ক পরিষেবা, উন্মুক্ত পোর্ট, প্রক্রিয়া ইত্যাদি etc.

সম্পদ ব্যবহারের ক্ষেত্রে, আপনি কেবল অব্যবহৃত সফ্টওয়্যার ইনস্টল করেই ডিস্কের স্থান হারাচ্ছেন। কোনও প্রক্রিয়া কার্যকর না হওয়া অবধি সিপিইউ বা র‌্যামের সংস্থান গ্রহণ করবে না। সুতরাং, ফলাফল কম। আমি যদি কোনও নিয়োগকর্তা / পরিচালক হয়ে থাকি তবে আমি পরামর্শ দিই যে অন্য জিনিসগুলি আপনার দৃষ্টি আকর্ষণ করবে। এটা না.

যদি আপনি সিস্টেমটি বিল্ডগুলি উন্নত করতে চান তবে সঠিক উপায় হ'ল প্যাকেজগুলির বেস সেট দিয়ে শুরু করা এবং প্রয়োজনীয় সিস্টেমের কার্যকারিতা সরবরাহ করার জন্য প্রয়োজনীয় যা কিছু যুক্ত করা উচিত। অতিরিক্ত প্যাকেজ তালিকাগুলি নথিভুক্ত করুন এবং সেগুলি একটি কিকস্টার্টে যুক্ত করুন ( নীচের উদাহরণে )। চলমান সিস্টেম থেকে সফ্টওয়্যারটি সরিয়ে ভুল দিকে যাবেন না।

প্যাকেজ গ্রুপ এবং বেশ কয়েকটি অতিরিক্ত প্যাকেজ সহ আমার একটি কিকস্টার্ট প্যাকেজ তালিকার স্নিপেট ...

%packages

@ base
@ core
@ cifs-file-server
@ compat-libraries
@ console-internet
@ development
@ mail-server
@ nfs-file-server
@ network-server
@ network-tools
@ system-management
@ system-admin-tools
@ web-server

yum-fastestmirror
rpm-devel
e2fsprogs
grub
kernel-devel
net-snmp-utils
screen
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.