অ্যাপটি-ইনস্টলের ইতিহাস কীভাবে দেখুন?


18

apt-get installআমি ম্যানুয়ালি কার্যকর করা আদেশগুলির ইতিহাস কীভাবে দেখতে পারি?

আমার কাছে মনে হয় যে সমস্ত পদ্ধতি উপলভ্য উবুন্টু ইনস্টলেশন শুরু হওয়ার সাথে সাথে ইনস্টল করা হয়েছে এমন সমস্ত কিছু দেখায়।

apt-get installআমার সিস্টেম-ইনস্টলেশন প্রক্রিয়াটি শেষ হওয়ার পর থেকে আমি কীভাবে ইতিহাস দেখতে পারি ?


হ্যাঁ ঠিক. আপনি আর কী আশা করবেন? আপনি কি টার্মিনাল থেকে ছুটে এসেছেন এবং জিইউআই বা অন্য কিছু দ্বারা চালিত তাদেরকেই কেবল এটি দেখাতে চান? দয়া করে সম্পাদনা আপনার প্রশ্ন এবং নির্মল।
টেরডন

@terdon Okay একটি নতুন সম্পাদনা করেছেন
টেলমেউ কেন

1
লগ dpkgইন আছে /var/log/dpkg.log*
ভেলকান

1
@ পরানয়েডপান্ডা যা বিভিন্ন উপায়ে ব্যর্থ হয়। ইতিহাস truncations, জিনিষ, অন্যান্য শাঁস চালানোর ইতিহাস থেকে মুছে জিনিস, বা প্রথমে সেখানে কখনো করা, জিনিষ স্ক্রিপ্ট থেকে ইনস্টল, জিনিষ অন্য ব্যবহারকারীদের দ্বারা চালানো ইত্যাদি ইত্যাদি
Squidly

1
@ মিঃবোনস: আমি জানি, এবং আমি আমার উত্তরে (এবং এর নীচে দেওয়া মন্তব্যে) বলেছি । তবে ওপি সমস্ত পন্থাগুলি দেখার জন্য একটি উপায় চেয়েছিল যখন তারা ম্যানুয়ালি apt-get installপ্যাকেজ ইনস্টল করার জন্য কমান্ডটি সম্পাদন করে , এবং আমি একটি সমাধান সরবরাহ করেছি যা এই তথ্যটি দেয় যদি না ইতিহাসের ফাইলটি নির্দিষ্ট উপায়ে পরিবর্তন না করা হয় (যেমন: এন্ট্রিগুলিতে সরানো হয়েছে)।

উত্তর:


20

আমি মনে করি এখানে কোস দ্বারা প্রদত্ত উত্তরটি এখন পর্যন্ত দেখা সবচেয়ে ভাল উপায়। যদিও সফ্টওয়্যার সেন্টার ব্যবহার করে apt, এটি ইনস্টল করা যে কোনও কিছুই খুব তালিকাভুক্ত করা হবে।

আদেশটি হ'ল:

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'

আমি বাড়িতে এলে এটি পরীক্ষা করে নেব এবং এটি যদি কাজ করে তবে তা গ্রহণ করব :)
টেলমেউ কেন

এটা না! আপডেটটি দেখুন: Askubuntu.com/a/680405/320386
কোস

এটি ব্যবহার করুন, এই কাজের জন্য আরও নিরাপদ zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?=.* install ) \K.*' | sed '1,4d':: grep -Po '^Commandline:(?=.* install ) \K.*'কেবলমাত্র একটি শীর্ষস্থানীয় এবং চলমান স্থানের সাথে থাকা apt-getকমান্ডগুলি ফিল্টার করবে install, এটি নির্দিষ্ট ইনস্টলেশনের উপর নির্ভরশীল sed '1,4d' হতে পারে; খনিতে 1,4সর্বব্যাপী থেকে আগত ঠিকানার সংখ্যা মুছে ফেলা হয়, যা আপনি মুছে ফেলতে চান। আপনার ইনস্টলেশনতে যদি নম্বরটি একই হয় তবে আমাকে জানতে দিন, কমপক্ষে আমাদের কাছে একটি বেসলাইন রয়েছে: |
কোস

@ কোস আমি apt-get -o APT::Status-Fd=4 -o APT::Keep-Fds::=5 -o APT::Keep-Fds::=6 -q -y --no-remove install linux-genericনতুন কমান্ডের মতো অতিরিক্ত লাইন পাই । তারা কি সর্বব্যাপী রেখা?
অরোনিকাল

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

9

সমস্ত ইনস্টল লগ দেখতে কেবল আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি টাইপ করুন।

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

3

@ অ্যারোনিকাল উত্তরের সরলকরণের জন্য, আমি সম্প্রতি শিখেছি একটি ঝরঝরে কৌশল আপনি zcat -qfটেক্সট এবং টেক্সট উভয়ই জিজেপিড ফাইলগুলিকে বিড়াল করতে ব্যবহার করতে পারেন ।

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'

হয়ে

zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'

ম্যান জ্যাক্যাট থেকে:

   -q --quiet
          Suppress all warnings.
   -f --force
          Force  compression  or  decompression  even if the file has multiple links or the corre‐
          sponding file already exists, or if the compressed data is read from  or  written  to  a
          terminal.  If  the  input  data is not in a format recognized by gzip, and if the option
          --stdout is also given, copy the input data without change to the standard  output:  let
          zcat  behave  as  cat.  If -f is not given, and when not running in the background, gzip
          prompts to verify whether an existing file should be overwritten.

2

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

#!/bin/sh
NumDaysAgo=18
find /var/lib/dpkg/info -name "*.list" -mtime -$NumDaysAgo \
    -exec stat -c $'%y\t%n' {} \; | \
sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list,,' | \
sort -r | \
while read Date Time Xxx Pkg
do 
    lncnt=$(apt-cache --installed rdepends $Pkg | wc -l)
    if [ $lncnt -eq "2" ]
        then echo "$Date $Time $Pkg"
    fi
done
echo "JOB COMPLETED: $BASH_SOURCE"

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

প্রোগ্রাম প্রবাহ:

  • প্রোগ্রামটি প্রথমে ইনস্টল করা সমস্ত প্যাকেজগুলির নীচে ফাইলের নামগুলি পড়ে একটি তালিকাতে সংগ্রহ করে /var/lib/dpkg/info/। ফাইলের মোড সময়গুলি হল ইনস্টলেশন বার।
  • এই তালিকাটি বিপরীত ক্রমে সাজানো হয়েছে।
  • প্রতিটি ইনস্টল করা প্যাকেজের জন্য $Pkg, কলটি apt-cache rdepends $Pkg এর বিপরীত-নির্ভরতাগুলির জন্য অনুরোধ করে $Pkg। যদি কোনও নির্ভরতা না থাকে তবে এটি একটি শীর্ষ স্তরের প্যাকেজ এবং প্যাকেজের তথ্য মুদ্রিত হয়: তারিখের সময় প্যাকেজের নাম

মন্তব্য:

  • স্ক্রিপ্টটি আউটপুট ফর্ম্যাটের উপর নির্ভর করে apt-cache rdepends $Pkgযা মানুষের চোখের জন্য তৈরি হয়েছিল এবং অ্যাপের ভবিষ্যতের সংস্করণগুলিতে পরিবর্তন করতে পারে।
  • অংশটি সংগ্রহের ফাইলের নামগুলি / var / lib / dpkg / তথ্য / এর অধীনে এই ইউনিক্স.স্ট্যাকেক্সচেঞ্জের পোস্ট থেকে এসেছে । যেহেতু এই পোস্টারটি 'মাইকেল' উল্লেখ করেছে, dpgkইতিহাসের লগ ফাইলগুলি নির্ভরযোগ্য নয় কারণ এগুলি একটি নির্দিষ্ট ভলিউমে পৌঁছানোর পরে ঘোরানো হবে।
  • ম্যান পেজ apt-chache
  • কলটি apt-cache rdepends ...সম্ভবত খুব ধীর কারণ প্রতিটি কল সমস্ত নির্ভরতার মধ্য দিয়ে পুনরাবৃত্তি করে গণনা করা হয়। অতএব উপরের স্ক্রিপ্টটি ব্যবহারকারীদের যতটা সম্ভব তাত্ক্ষণিক তৃপ্তির জন্য নতুন ইনস্টল থেকে শুরু হয়।
  • --installedপতাকা পর apt-cacheচেক করে dpkg-ইনস্টল করা প্যাকেজ এছাড়াও কার্যক্ষম-ইনস্টল করা আছে। যদি ব্যবহারকারী বা অন্য কোনও ইনস্টল করা সফ্টওয়্যার অ্যাপ্টিকে বাইপাস করে সরাসরি dpkg ব্যবহার করে, এটি সম্ভব হবে। এই পরিস্থিতি পরীক্ষা করা হয়নি, তবে আমি মনে করি কিছু লক্ষণীয় কিছু স্ট্যান্ডার্ড বা ত্রুটির ফলাফলের মধ্যে মুদ্রিত হবে
  • আউটপুটটিতে ম্যানুয়ালি নির্বাচিত প্যাকেজগুলি অন্তর্ভুক্ত হয় না যা পরে উচ্চতর প্যাকেজটির উপর নির্ভর করে। আউটপুটটিতে এমন প্যাকেজগুলি অন্তর্ভুক্ত থাকতে পারে যা অন্য তৃতীয় পক্ষের ইনস্টল সফ্টওয়্যার দ্বারা অ্যাপের মাধ্যমে ইনস্টল করা হয়েছিল এবং তাই সত্যই ম্যানুয়ালি ইনস্টল করা হয়নি। তবে, যদি আউটপুটের উদ্দেশ্যটি ব্যাকআপ /homeডিরেক্টরি থেকে একটি পুনরুদ্ধার লিনাক্স স্থাপনের ভিত্তি হিসাবে থাকে যা তৃতীয় পক্ষের সফ্টওয়্যারটিকে অন্তর্ভুক্ত করে থাকে তবে এই আউটপুটটি উপযুক্ত হবে।
  • কিছু প্যাকেজের নামগুলিতে সংস্করণ নম্বরগুলি অন্তর্ভুক্ত থাকে এবং কিছুতে নেই। কেবল সত্যে সচেতনতা আনার জন্য উল্লেখ করা হয়েছে।

1

আপনি রান করে ইনস্টল করা সমস্ত জিনিস দেখতে চাইলে:

sudo apt-get install [package]

এবং আপনি বাশ ইতিহাসের সাথে গোলমাল করেননি বা অন্য ব্যবহারকারী (বা সমস্ত ব্যবহারকারী) এর জন্য এই ধরণের ইনস্টলেশন ধরণের ইতিহাস দেখতে চান না তবে আপনি কেবল চালাতে পারেন:

history | grep "apt-get install"

এবং এটি আপনার বেশিরভাগ প্রাসঙ্গিক ফলাফল পেতে হবে।


1
আমি কি এর সাথে সমস্ত ইতিহাস পাব ?
টেলমেউ কেন

@ ডেভ্রোবোট: আপনি যদি ফাইলটিতে প্রবেশের মাধ্যমে ম্যানুয়ালি এন্ট্রিগুলি পরিবর্তন apt-get installনা করে .bash_historyবা এই ফাইলটি মুছে না ফেলে থাকেন তবে আপনি যখন apt-get installব্যবহারকারীর অ্যাকাউন্টে স্ট্রিং সহ একটি কমান্ড কার্যকর করেছেন তখন কমান্ডটি আপনাকে সমস্ত উদাহরণ প্রদর্শন করবে (এমনকি আপনি যদি কমান্ডটি রুট হিসাবে চালান এবং সুতরাং আপনার ব্যবহারকারীর অ্যাকাউন্টের মতো নয় - এটি একটি কমান্ড চালাচ্ছে sudo) running

2
আপনি 200 টিরও বেশি কমান্ড
লিখলেও

2
দাবী করার সময় @ অরোনালিকাল প্রমাণ আশা করা যায় ;-)
রিনজউইন্ড

1
আমি নিজেই 500 কে ডিফল্ট হিসাবে ধরে নিব ( gnu.org/software/bash/manual/html_node/… )।
রিনজউইন্ড

1

আপনি যদি apt-get installআদেশের ইতিহাস চান তবে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

grep "apt-get install" .bash_history

আউটপুট:

ravan@ravan:~$ grep "apt-get install" .bash_history

sudo apt-get install --no-install-recommends ubuntu-mate-core ubuntu-mate-desktop
sudo apt-get install xfce4
sudo apt-get install xfce4.12
sudo apt-get install pgadmin
sudo apt-get install touchegg
sudo apt-get install aptitude
sudo apt-get install aptitude
sudo gedit .bash_history | grep "apt-get install" 
sudo apt-get installvim
grep "apt-get install" .bash_history
cat .bash_history | grep "apt-get install" 

অন্যান্য তথ্যের জন্য অতিরিক্ত তথ্য পড়ুন ।

এছাড়া আরও বিস্তারিত ইনস্টলেশন তথ্য /var/log/apt/মধ্যে history.logএবং history.log.X.gzফাইল ও term.logএবং term.log.X.gzফাইল

আপনি যদি কেবল apt-getঅন্তর্ভুক্ত কমান্ডগুলির ইতিহাস চান , তবে

history | grep apt-get


apt-mark showmanualওএস ইনস্টল করার সময় সমস্ত প্যাকেজ ইনস্টল করা দেখায়, আসলে ম্যানুয়ালি ইনস্টল করাগুলির চেয়ে। এটি আচরণ করার জন্য এটি একটি বিজোড় উপায়!
অ্যারোনিকাল

1
এটি অগত্যা ইতিহাস সম্পর্কিত নির্দিষ্ট বিবরণ দেয় না। লোকেদের যা দেখতে হবে তা হ'ল /var/log/apt/history.logএবং অনুরূপ ফাইল। আপনি কেবল ম্যানুয়ালি নির্বাচিত এবং স্বনির্বাচিত প্যাকেজগুলির তালিকা পাবেন। আপনি এই উত্তরটি থেকে কী ইনস্টল করা হয়েছিল, কী সরানো হয়েছিল, কোনটি আপগ্রেড হয়েছিল ইত্যাদি কোনও কালানুক্রমিক ইতিহাস দেবেন না।
থমাস ওয়ার্ড

@ আরোনিকাল - ম্যান পেজটি কোথায় apt -mark showmanual? আমি এটি উবুন্টু 16.04 এলটিএসের ম্যান পেজে দেখতে পাচ্ছি না apt: < manpages.ubuntu.com/manpages/xenial/en/man8/apt.8.html >।
ক্রেগ হিক্স


0

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

উত্তরটি একটি উপাধিতে পরিবর্তিত হতে পারে:

alias apted='zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | fgrep Commandline: | cut -d " " -f 2- | grep -P "^|install"'

0

নোট করুন যে কিছু আর্গুমেন্ট ইনস্টল করার আগে সেট করা যেতে পারে, যেমন ভার্চুয়াল্মিন স্ক্রিপ্ট ইনস্টল করার সময় করছে: apt-get -y ইনস্টল করুন প্যাকেজ নাম।

সুতরাং আপনি যদি সমস্ত ইনস্টল কমান্ড ক্যাপচার করতে চান তবে আপনার রেজেক্স ক্যোয়ারী পরিবর্তন করতে হবে।

zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get.*install (?!.*--reinstall)\K.*'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.