আমি কীভাবে উবুন্টুতে "অ্যাপ-গেট ইনস্টল" এর ইতিহাস পাই?


85

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

সময়ের সাথে সাথে আমি যে সমস্ত "sudo apt-get ইনস্টল" আদেশ দিয়েছি তার ইতিহাস সন্ধান করার কোনও সহজ উপায় আছে? এটি, dpkg -l আমাকে ইনস্টল করা সমস্ত প্যাকেজ দেখায়, তবে কোন শীর্ষ স্তরের প্যাকেজ তাদের ইনস্টল করেছে তা নয়। যদি ডিপিকেজির জন্য আমাকে ইনস্টল করার প্যাকেজটি দেওয়ার কোনও উপায় থাকে তবে আমি সেখানে অনন্য খুঁজে পেতে পারি; অন্যথায়, আমি "আপনি এই 24 টি প্যাকেজ ইনস্টল করেছেন" বলে অন্য কিছু বলতে চাই।



আপনি নীচে একটি উত্তর গ্রহণ করতে পারেন? যারা উত্তর দিয়েছেন তাদের কাছে কৃতজ্ঞতা প্রকাশ করা।
এম-রিচ


এই সমাধানগুলি কেবলমাত্র শেষ লগ রোটেশনের পরে কী ঘটেছে তা পরীক্ষা করবে। তারা সমস্ত ইতিহাস চেক করে না।
ক্র্যাং প্রাইম 25'18

সরল এবং দ্রুত উপায় এই উত্তরটি দিয়ে জিজ্ঞাসা করা হয়েছে , জিজ্ঞাসাবাবু / এ / 2505030/197730 , সমস্ত ইনস্টল করা প্যাকেজ কীভাবে তালিকাভুক্ত করবেন
টুটোনে

উত্তর:


68

aptমধ্যে ইতিহাস /var/log/apt/history.logউপরের হিসাবে একটি মন্তব্যে বলেন। এটি বলেছে, এটি ম্যানুয়ালি ইনস্টল করা প্যাকেজগুলি, dpkgজিওআইআই ব্যবহার করে বা যেমন GUIs তালিকাভুক্ত করবে না gdebi। যে সমস্ত প্যাকেজ পেরেছে সেগুলি দেখতে dpkg, আপনি দেখতে পারেন /var/log/dpkg.log


8

5
প্রথম লিঙ্কের পদ্ধতিটি স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া প্যাকেজগুলি এবং ম্যানুয়ালি ইনস্টল হওয়া প্যাকেজগুলির মধ্যে পার্থক্য করে না। /var/log/apt/history.log(আপনি জায়গাটি ভুল বিটিডব্লু পেয়েছেন) কয়েক মাস পরে ঘুরবে।
গিলস

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

7

আপনি যে প্যাকেজগুলির স্পষ্টরূপে অনুরোধ করেছেন তার তালিকা তৈরি করতে পারেন apt-mark

apt-mark showmanual

আপনি যদি দেবিয়ানর একটি প্রাচীন মুক্তি চালাচ্ছেন তবে এখানে একটি ম্যানুয়াল উপায় রয়েছে।

নিম্নলিখিত কমান্ডটি ম্যানুয়ালি বা স্বয়ংক্রিয়ভাবে যা প্যাকেজগুলির ইনস্টলেশনের অনুরোধ করেছিল তার তালিকা দেয় gives আপনি (ডি) প্যাকেজ ইনস্টল করার মাঝখানে না থাকলে এটি ইনস্টল করা প্যাকেজগুলির তালিকা।

dpkg --get-selections | sed -n 's/\t\+install$//p'

নিম্নলিখিত কমান্ডটি স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া প্যাকেজগুলির একটি সুপারসেট দেয়:

</var/lib/apt/extended_states awk -v RS= '/\nAuto-Installed: *1/{print$2}'

এগুলি একসাথে রেখে, নিম্নলিখিত কমান্ডটি ম্যানুয়ালি ইনস্টল করা প্যাকেজগুলি তালিকাভুক্ত করে:

comm -23 <(dpkg --get-selections | sed -n 's/\t\+install$//p') \
         <(</var/lib/apt/extended_states \
           awk -v RS= '/\nAuto-Installed: *1/{print$2}' |sort)

1
--- এর থেকে খুব আলাদা ফলাফলcomm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
সিবিহে

দেবিয়ান-তে, apt-mark showmanualআপনার শেষ কমান্ডের সমান যা আছে ।
ম্যাক্সলেপজিগ

3
grep -i "Commandline" /var/log/apt/history.log

আপনি যে প্যাকেজগুলি ইনস্টল করেছেন তা ব্যবহার করে তা দেখায়: sudo apt-get install xxxxx


এটি @ hফিংকের উত্তর থেকে যথেষ্ট আলাদা নয় এবং এটিতে একটি মন্তব্য হওয়া উচিত।
কার্ল রিখটার

2

ট্যাক / মাথা সংমিশ্রণের পরিবর্তে, লেজ ব্যবহার করা ভাল (শেষ 25 লাইনের জন্য):

tail -n 25 /var/log/apt/history.log

এটি @ hফিংকের উত্তর থেকে যথেষ্ট আলাদা নয় এবং এটিতে একটি মন্তব্য হওয়া উচিত।
কার্ল রিখটার

এছাড়াও, এটি একই নয়। লেজটি ফাইলের সর্বশেষ রেখাগুলি তালিকাবদ্ধ করবে যাতে তারা ফাইলটিতে রয়েছে। ট্যাক ক্রমটিকে বিপরীত করবে যাতে শেষ লাইনটি এখন প্রথম, দ্বিতীয় থেকে শেষ দ্বিতীয় হয় second ইত্যাদি আবারও মনে হয় যে আপনি যখন কিছু ব্যাখ্যা করছেন তা কেন "ভাল" বলে কিছুটা ভুল হওয়ার আশঙ্কা রয়েছে। আমি বলতে চাইছি, "ভাল" কার মতে? কি প্রয়োজনে? কিন্ডা বেশি আত্মবিশ্বাসী বলে মনে হচ্ছে।
টড ওয়ালটন

0

অন্যান্য উত্তরগুলি সাহায্য করেছে তবে আমাকে খুব বেশি আউটপুট দিয়েছে। আউটপুটটি কাটাতে, আমি এই উত্তরেরapt-mark showmanual মতোই শুরু করেছি , এবং তারপরে মূলত ইনস্টল করা প্যাকেজগুলি ফিল্টার আউট করেছি (মূলত ইনস্টল হওয়া প্যাকেজগুলির তালিকা কীভাবে পাওয়া যায় তার জন্য এই উত্তরটি দেখুন ; আমি উবুন্টু ব্যবহার করছি 18.04.2 অতএব নীচের লিঙ্কটি) ।

BASE_PACKAGES_MANIFEST=http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-amd64.manifest
REMOVE_VERSIONS_REGEX='[0-9][.-][0-9][.-][0-9]|[0-9][.-][0-9]|[0-9]'
paste  <( apt-mark showmanual ) <( apt-mark showmanual | sed -r "s/$REMOVE_VERSIONS_REGEX//g" ) |
    grep -vf <( curl $BASE_PACKAGES_MANIFEST | cut -f1 | sed -r "s/$REMOVE_VERSIONS_REGEX|:amd//g" ) |
    cut -f1 |
    sort |
    uniq

স্ক্রিপ্টটি সংস্করণ-স্বতন্ত্র তুলনা করে মূল ম্যানিফেস্টে থাকা প্যাকেজগুলি ফিল্টার করে, যাতে আপগ্রেড হওয়া প্যাকেজগুলি তালিকায় উপস্থিত না হয়। আমি প্রায় 60 টি প্যাকেজের তালিকা দিয়ে শেষ করেছি।

আমার পছন্দ মতো অন্য উপায়টি হ'ল এই উত্তর যা সমস্ত অ্যাপ্ট লগ অনুসন্ধান করে


-1

অবতরণ ক্রমে সাম্প্রতিক ইনস্টল হওয়া প্যাকেজগুলির তালিকা পেতে, আমি (যেমন 25 লাইন) ব্যবহার করতে পছন্দ করি:

tac /var/log/apt/history.log |head --lines=25

1
আরও দক্ষ (এবং tail -25 /var/log/apt/history.log | tac
প্রচারমূলক

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