কমান্ড লাইনের মাধ্যমে আমি কীভাবে পেলাম প্যাকেজ পরিচালনা ইতিহাস দেখাব?


116

কমান্ড লাইনের মাধ্যমে অ্যাপটি-গেটের মাধ্যমে পরিবর্তিত প্যাকেজগুলির ইতিহাস দেখানোর কোনও উপায় আছে কি?


উত্তর:


131

অ্যাপের সাথে সমস্ত ক্রিয়াকলাপ (apt-get) লগড। এই ফাইলগুলি / var / লগ / এপিটি / এ উপলব্ধ। সর্বাধিক সাম্প্রতিক ইতিহাসের লগটি দেখতে, কার্যকর করুন:

less /var/log/apt/history.log

এই লগগুলি ঘোরানো হয় (প্রতি মাসে আমি অনুমান করি), পুরানো ফাইলগুলি একটি সংখ্যার সাথে প্রত্যয়যুক্ত এবং সংকুচিত হবে। পরবর্তী ইতিহাস লগ দেখতে, ব্যবহার করুন:

zless /var/log/apt/history.log.1.gz

লগ উপলব্ধ উপলব্ধ:

ls -la /var/log/apt/

4
এটি দুর্দান্ত। কমান্ডগুলি চালিত করাই একমাত্র জিনিস।
সীমিত প্রায়শ্চিত্ত

3
@ লিমিটেডএটোনমেন্ট /var/log/auth.log দেখুন, এটিতে ব্যবহারকারীরা ইনস্টলেশন চালিয়ে থাকতে পারেন । (রুট হিসাবে চলমান শেল / প্রোগ্রামের মাধ্যমে ইনস্টলেশনটি আহ্বান করা হলে এটি সাহায্য করবে না)
লেকেনস্টেইন

3
এছাড়াও দরকারী: zgrep, zcat
ইসমাঈল

এই ফাইলটি কি অরিজিনাল অ্যাপ-গেটের ফলাফল হিসাবে ইনস্টল করা নির্ভরতা প্যাকেজগুলি লগ ইন করে?
মাহেশা 999

2
@ লিমিটেডএটোনমেন্টটি এপিটির সর্বশেষ সংস্করণগুলি "কমান্ডলাইন: প্যাকেজকিট ভূমিকা = 'আপডেট-প্যাকেজস'" বা "কমান্ডলাইন: এপি" এর মতো কমান্ডটি চালিয়েছে এবং কমান্ডটি প্রেরণ করেছে তা দেখানোর জন্য লগের একটি "অনুরোধিত বাই:" অফার সরবরাহ করে আপগ্রেড "
মাইকেল টুনেল

21

আকর্ষণীয় সামগ্রীটি প্রদর্শন করতে আপনি একটি শর্ট কমান্ডও করতে পারেন।

  • আপনার এই কাস্টম ফাংশন যুক্ত করুন ~/.bashrc:

    ### pars for fun: install | remove | rollback
    function apt-history(){
    
          case "$1" in
            install)
                  grep 'install ' /var/log/dpkg.log
                  ;;
            upgrade|remove)
                  grep $1 /var/log/dpkg.log
                  ;;
            rollback)
                  grep upgrade /var/log/dpkg.log | \
                      grep "$2" -A10000000 | \
                      grep "$3" -B10000000 | \
                      awk '{print $4"="$5}'
                  ;;
            *)
                  cat /var/log/dpkg.log
                  ;;
          esac
    }
  • এবং এটিকে টার্মিনালে কল করুন:

    kreso@h17:~$ apt-history install
    2013-08-06 14:42:36 install gir1.2-nautilus-3.0:amd64 <none> 1:3.8.2-0ubuntu1~ubuntu13.04.1
    2013-08-06 14:42:36 install python-nautilus:amd64 <none> 1.1-3ubuntu1
    2013-08-06 14:42:37 install insync-nautilus:all <none> 1.0.20
    2013-08-07 14:41:37 install powertop:amd64 <none> 2.1-0ubuntu1
    2013-08-07 18:44:10 install libdiscid0:amd64 <none> 0.2.2-3build1
    2013-08-07 18:44:11 install sound-juicer:amd64 <none> 3.5.0-0ubuntu1
    

এখান থেকে নেওয়া হয়েছে


zgrep ... /var/log/dpkg.log*- সংরক্ষণাগার থেকেও আউটপুট এন্ট্রি।
Ctrl-C

6

আপনি সম্প্রতি ইনস্টল করা প্যাকেজগুলির তালিকা তৈরি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন

grep "\ install\ " /var/log/dpkg.log

1
আরও ভাল: grep "\ install\ " /var/log/apt/history.logযদি আপনাকে কোনও তালিকাটি
এপ

2

আপনি যদি সেই প্যাকেজগুলি ইনস্টল করেন এবং পরবর্তীকালে আনইনস্টল করা না চান তবে এটি চেষ্টা করুন:

comm -23 <(grep "apt-get install" /var/log/apt/history.log | sed 's/.* //' | sort) \ 
<(grep "apt-get remove" /var/log/apt/history.log | sed 's/.* //' | sort) 

এটি ইনস্টল বিয়োগ যেকোন মিল মিলে যায়।

তথ্যসূত্র:


+1: দুর্দান্ত ওয়ান-লাইনার তবে কেবল শেষ লগ রোটেশন পিরিয়ডের জন্য বৈধ। পরিবর্তে sort, sort -uউভয় ক্ষেত্রে যেমন প্যাকেজের মতো প্যাকেজ oracle-java8-installerএবং অন্যান্য অনেকগুলি প্রদর্শন করতে সদৃশ লাইনগুলি এড়াতে ব্যবহার করুন ।
সিবিহে

1

আপনি এখানে এটি কীভাবে করছেন তা প্যাকেজ মুটার বলুন:

_P=mutter &&
(cat /var/log/dpkg.log{,.1};zcat /var/log/dpkg.log.*.gz) |
egrep --text "^[^ ]* [^ ]* (configure|install|remove|status [^ ]*|trigproc|upgrade) $_P[: ]" |
sort --reverse | less

Dpkg.log ব্যবহার করে এমন ক্রিয়াকলাপ ক্যাপচার করে যা অ্যাপ্ট - গেট দেখতে পায় না।

আউটপুট:

2016-12-20 09:47:35 status unpacked mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1
2016-12-20 09:47:35 status installed mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1
…

1
দয়া করে নোট করুন এখানে ট্রিপল ব্যাকটিকগুলি যেভাবে আপনার মনে হয় সেভাবে কাজ করে না।
এডউইনকস্ল

1

নির্দিষ্ট প্যাকেজটির আপডেট ইতিহাস ধরে ধরে এটিপি এর মাধ্যমে ইনস্টল করা / আপডেট করা হয়েছিল এখানে অনেলাইনার (ব্যাশ এবং zgrep) রয়েছে, উদাহরণস্বরূপ প্যাকেজ স্কাইপফোর্ডিনাক্স:

package='skypeforlinux'; pregex="(${package}[^\)]+\))"; while read -r line; do [[ "$line" =~ ^Start-Date:[[:space:]]([[:digit:]].+) ]] && curdate="${BASH_REMATCH[1]} "; [[ "$line" =~ $pregex ]] && echo "$curdate ${BASH_REMATCH[1]}"; done < <(for i in `ls -tr /var/log/apt/history*`; do zgrep -B3 "$package" $i; done)

তারিখটি পেতে পূর্ববর্তী তিনটি লাইন সহ স্কাইপফোর্ডিনাক্সের জন্য এই গ্রেপস অ্যাপের ইতিহাসের লগ ফাইলগুলি। তারপরে ফলাফলটি পুনরাবৃত্তি করে এবং সম্পর্কিত তারিখ এবং সংস্করণ প্রতিধ্বনিত করে।

আপনার প্যাকেজ নামের সাথে প্যাকেজ ভেরিয়েবল মানটি প্রতিস্থাপন করুন , এমনকি একাধিক প্যাকেজগুলির জন্যও কাজ করে যদি তারা একই স্ট্রিং দিয়ে শুরু করে।

আউটপুট সহ উদাহরণ:

package='apache'; pregex="(${package}[^\)]+\))"; while read -r line; do [[ "$line" =~ ^Start-Date:[[:space:]]([[:digit:]].+) ]] && curdate="${BASH_REMATCH[1]} "; [[ "$line" =~ $pregex ]] && echo "$curdate ${BASH_REMATCH[1]}"; done < <(for i in `ls -tr /var/log/apt/history*`; do zgrep -B3 "$package" $i; done)
2017-10-19  15:00:09  apache2-utils:amd64 (2.4.18-2ubuntu3.5)
2017-11-24  14:24:45  apache-pom-java:amd64 (10-2build1, automatic)
2018-02-22  16:42:02  apache2-data:amd64 (2.4.18-2ubuntu3.5, automatic)
2018-02-26  15:34:34  apache2:amd64 (2.4.18-2ubuntu3.5)
2018-02-26  15:36:32  apache2-data:amd64 (2.4.18-2ubuntu3.5)
2018-02-26  15:40:50  apache2-data:amd64 (2.4.18-2ubuntu3.5, automatic)
2018-02-26  15:42:07  apache2:amd64 (2.4.18-2ubuntu3.5)
2018-02-26  15:42:39  apache2:amd64 (2.4.18-2ubuntu3.5)
2018-03-15  10:08:50  apache-pom-java:amd64 (10-2build1)
2018-04-20  08:55:07  apache2-data:amd64 (2.4.18-2ubuntu3.5, 2.4.18-2ubuntu3.8)
2018-07-06  08:55:11  apache2-data:amd64 (2.4.18-2ubuntu3.8, 2.4.18-2ubuntu3.9)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.