Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: ajv - 04.08.06 - klo:13.23
-
Moro,
onko helppoa keinoa listata asennettuja deb paketteja asennuspäivämäärän mukaisesti järjestettynä? dpkg kirjoittaa logia /var/log/dpkg.log* tiedostoihin, joten niitä parsimalla onnistuu, mutta onko nopeampaa tietä, vrt
rpm -qa --queryformat '%{INSTALLTIME}\t%{NAME}\n' | sort -n
edit: tai mitä paketteja on asennettu tietyllä päivämäärävälillä, viimeiset paketit tuosta logista saa greppaamalla " install " tai " upgrade " sanoja.
-
Tuommosen näpersin joutessani: http://dash.atspace.org/kvaak/dpkg-log.txt
(Palvelimen asetukset on piipilleen säädetty tuolla serverillä, joten vaihda selaimen charsetiksi UTF-8 jos kopioit sen tuolta ja ääkköset vikuroi, tai ota wgetillä niin ne tulee oikein.)
Komentoriville sitten dpkg-log -d 20060804 ja tämän päivän päivitykset listautuu,
dpkg-log -d 20060704 -d 20060804 listaa kuukauden ajalta
Onhan se ihan näppärä minusta ainakin, kun näkee mitkä paketit on esim eilen päivittyneet.
Ja etenkin vikatilanteessa voi olla hyödyksi jopa. :)
-
Kiitos vaivannäöstä. Itsekin kerkesin pienen pyyttonin pyöräyttää, tämä ei tosin komentoriviltä lue optioita, ne pitää säätää skriptiin. Tuo perli on kyllä just sen näköstä aku ankan kiroilua kuin muistinkin ;D, nimimerkillä olen koittanut vähentää.
#!/usr/bin/python
import datetime
logfile = "/var/log/dpkg.log"
def year(DateStr):
return int(DateStr.split("-")[0])
def month(DateStr):
return int(DateStr.split("-")[1])
def day(DateStr):
return int(DateStr.split("-")[2])
def hour(TimeStr):
return int(TimeStr.split(":")[0])
def minute(TimeStr):
return int(TimeStr.split(":")[1])
def second(TimeStr):
return int(TimeStr.split(":")[2])
def sortByDate(db):
decorated = [ (db[pkg]["INSTALLDATE"], pkg) for pkg in db.keys()]
decorated.sort()
return [ pkg for (date, pkg) in decorated ]
def PkgsInTimeInterval(db, StartDate, EndDate = "TODAY"):
import time
if EndDate == "TODAY":
t = time.localtime()
EndDate = datetime.date(t.tm_year, t.tm_mon, t.tm_mday)
pkgs = []
qualify = pkgs.append
for pkg in db.keys():
if db[pkg]["INSTALLDATE"] >= StartDate and db[pkg]["INSTALLDATE"] <= EndDate:
qualify(pkg)
return pkgs
d = open(logfile, "r").read()
db = dict()
for line in d.split("\n"):
if line.find("install ") != -1 or line.find("upgrade ") != -1:
(DateStr, TimeStr, Stat, Package, notneeded, Version) = line.split()
db[Package + "-" + Version] = dict()
db[Package + "-" + Version]["INSTALLDATE"] = datetime.date(year(DateStr), month(DateStr), day(DateStr))
db[Package + "-" + Version]["INSTALLTIME"] = datetime.time(hour(TimeStr), minute(TimeStr), second(TimeStr))
for pkg in PkgsInTimeInterval(db, datetime.date(2006, 8, 4)):
print db[pkg]["INSTALLDATE"], pkg
-
Kiitos vaivannäöstä. Itsekin kerkesin pienen pyyttonin pyöräyttää, tämä ei tosin komentoriviltä lue optioita, ne pitää säätää skriptiin. Tuo perli on kyllä just sen näköstä aku ankan kiroilua kuin muistinkin ;D, nimimerkillä olen koittanut vähentää.
;D joo, no kieltämättä Pythoni on ehkä kauniimpaa, pitäisi jaksaa opetella sekin kieli.
Toisaalta Perlilläkin tulee erinomaisen hyvin toimeen.
Today -parametri pitää lisätä, kiitos vinkistä. ;)
ee: nysse osaa today:nkin.