[gelöst]Wann wurde ein bestimmtes Paket installiert?

Du suchst ein Programm für einen bestimmten Zweck?
Benutzeravatar
Strunz_1975
Beiträge: 2464
Registriert: 13.04.2007 14:29:32
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

[gelöst]Wann wurde ein bestimmtes Paket installiert?

Beitrag von Strunz_1975 » 11.08.2016 17:53:41

Hallo.

gibt es entweder mit "dpkg" oder "apt-get" die Möglichkeit zu bestimmen, wann ein bestimmtes Paket "libdvdread4" installiert
worden ist?

Mfg
Strunz_1975
Zuletzt geändert von Strunz_1975 am 11.08.2016 22:37:58, insgesamt 1-mal geändert.
Debian Bookworm

Benutzeravatar
Patsche
Beiträge: 3261
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Patsche » 11.08.2016 18:04:48

Müsste in den logs stehen.

Code: Alles auswählen

cat /var/log/apt/history.log

Benutzeravatar
Strunz_1975
Beiträge: 2464
Registriert: 13.04.2007 14:29:32
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Strunz_1975 » 11.08.2016 18:07:40

Patsche hat geschrieben:Müsste in den logs stehen.

Code: Alles auswählen

cat /var/log/apt/history.log
So:

cat history.log | grep libdvdread4

???
Debian Bookworm

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von rendegast » 11.08.2016 18:16:13

Resp.

Code: Alles auswählen

zcat history.log*gz | grep libdvdread4

oder
zgrep libdvdread4 history.log*gz
Weitere Logs
/var/log/aptitude*
/var/log/dpkg.log*
Zuletzt geändert von rendegast am 11.08.2016 18:18:03, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
Strunz_1975
Beiträge: 2464
Registriert: 13.04.2007 14:29:32
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Strunz_1975 » 11.08.2016 18:17:51

rendegast hat geschrieben:Resp.

Code: Alles auswählen

zcat history.log*gz | grep libdvdread4

oder
zgrep libdvdread4 history.log*gz
Wenn ich beide Befehle in die Kommandozeile eingebe, kommt nichts!
Debian Bookworm

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von rendegast » 11.08.2016 18:18:38

Weitere Logs
/var/log/aptitude*
/var/log/dpkg.log*
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

maroc

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von maroc » 11.08.2016 18:19:35

Oder ganz anders:

Code: Alles auswählen

ls -l /var/lib/dpkg/info/libdvdread4*.list

Benutzeravatar
Patsche
Beiträge: 3261
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Patsche » 11.08.2016 18:25:24

Vielleicht gibts du grep noch die Option --color mit, dann wird es farbig hervorgeheben. Allerdings lässt sich so noch nicht feststellen, wann ein Paket installiert wurde. Vielleicht weiß jemand, wie man einfach zusätzlich noch das Startdatum mit ausgeben kann. Ich bekomme das gerade nicht hin.

Benutzeravatar
Patsche
Beiträge: 3261
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Patsche » 11.08.2016 18:37:09

maroc hat geschrieben:Oder ganz anders:

Code: Alles auswählen

ls -l /var/lib/dpkg/info/libdvdread4*.list
:THX: Das klappt auch gut
Wie kann man den farbig greppen und trotzdem alles anzeigen lassen? So als wenn man eine Datei durchsucht und einfach nur das Wort farbig hervorhebt. Da finde ich auch nichts zu...aber ich will hier nicht kapern.

Benutzeravatar
ohnex
Beiträge: 392
Registriert: 31.01.2010 22:35:36

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von ohnex » 11.08.2016 21:47:00

Hi


[OT]
@ Patsche

Code: Alles auswählen

ls -l /var/lib/dpkg/info/ | grep --color=auto -i libdvdread4
[/OT]

ciao

Benutzeravatar
Patsche
Beiträge: 3261
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Patsche » 11.08.2016 22:19:44

ohnex hat geschrieben:

Code: Alles auswählen

ls -l /var/lib/dpkg/info/ | grep  --color=auto -i libdvdread4
Das ist nicht ganz das, was ich suche. Ich möchte beispielseise die Ausgabe von ls -l /var/lib/dpkg/info/ komplett ausgegeben bekommen, nur dass dann das libdvdread4 markiert wird.
Das ganze soll dann auch mit cat oder less funktionieren....
Als konkretes Beispiel:
Die Ausgabe von

Code: Alles auswählen

cat /var/log/apt/history.log
enthält

Code: Alles auswählen

Start-Date: 2016-08-11  19:20:47
Commandline: apt install engrampa
Install: engrampa:amd64 (1.8.1+dfsg1-1)
End-Date: 2016-08-11  19:20:50
Jetzt probiere ich

Code: Alles auswählen

cat /var/log/apt/history.log | grep -i --color=always engrampa
bekomme aber nur

Code: Alles auswählen

Purge: caja-common:amd64 (1.8.2-3+deb8u1), mate-control-center:amd64 (1.8.3+dfsg1-2), engrampa:amd64 (1.8.1+dfsg1-1)
Commandline: apt install engrampa
Install: engrampa:amd64 (1.8.1+dfsg1-1)
Ist ja auch korekt, weil nur in diesen Zeilen das "Wort" "engrampa" vorkommt. Ich möchte aber den kompletten Inhalt angezeigt bekommen, wo einfach nur das "Wort" "engrampa" markiert wird.
Hoffe ihr versteht, was ich meine.

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von inne » 11.08.2016 22:29:03

@Patsche.

Wo ist der Grund das zu wollen?

Was grep noch kann ist Zeilen vor und hinter der gefunden Zeile mit dem match mit anzuzeigen mit dem Schalter -C. Aber mehr geht wohl nicht.
Zuletzt geändert von Anonymous am 11.08.2016 22:46:39, insgesamt 1-mal geändert.

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von inne » 11.08.2016 22:34:05

cat /var/log/apt/history.log | grep --color -i -E "engrampa|*"

Aber ob das so guter Stiel ist und keine "Falle" birgt kann ich nicht sagen.
Zuletzt geändert von Anonymous am 11.08.2016 22:38:30, insgesamt 2-mal geändert.

Benutzeravatar
Strunz_1975
Beiträge: 2464
Registriert: 13.04.2007 14:29:32
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Strunz_1975 » 11.08.2016 22:36:37

Danke Jungs :-)
Debian Bookworm

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22360
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von KBDCALLS » 11.08.2016 22:36:48

Ich kann aber noch -B (before) und -A (after) und die Zahl der Zeilen angeben.

Ansonsten muß Patsche mal genau beschreiben was er will, so versteht man Zug bleibt stehen und Bahnhof fährt ab.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

tobo
Beiträge: 2013
Registriert: 10.12.2008 10:51:41

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von tobo » 11.08.2016 22:41:06

Und für less sowas hier:

Code: Alles auswählen

less -p<PATTERN> file

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: [gelöst]Wann wurde ein bestimmtes Paket installiert?

Beitrag von inne » 11.08.2016 23:02:41

tobo hat geschrieben:Und für less sowas hier:

Code: Alles auswählen

less -p<PATTERN> file
Mit less macht es (mehr) Sinn. Lesehilfe. Passt bei grep aber auch ;-)
Zuletzt geändert von Anonymous am 11.08.2016 23:21:12, insgesamt 2-mal geändert.

Benutzeravatar
Patsche
Beiträge: 3261
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Patsche » 11.08.2016 23:07:38

inne hat geschrieben:cat /var/log/apt/history.log | grep --color -i -E "engrampa|*"
tobo hat geschrieben:Und für less sowas hier:

Code: Alles auswählen

less -p<PATTERN> file
Genau so etwas habe ich ich gesucht. Danke.

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: [gelöst]Wann wurde ein bestimmtes Paket installiert?

Beitrag von inne » 11.08.2016 23:48:08

Mich wundert es nur, das mein Konstrukt sich so verhält. Aber es wird absichtlich so programmiert worden sein...

Benutzeravatar
Meillo
Moderator
Beiträge: 8823
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Meillo » 11.08.2016 23:58:45

Hier kommt die Erklaerung:
inne hat geschrieben:cat /var/log/apt/history.log | grep --color -i -E "engrampa|*"
- grep(1) gibt nur die Zeilen aus die matchen
- `--color' hebt den gefundenen Match farblich hervor
- `-i' matcht case-insensitive (was hier irrelevant ist)
- `-E' ist (etwa) das Gleiche wie wenn man egrep(1) verwendet, das ist fuer die Alternation (|) erforderlich

Das Pattern matched auf entweder den String ``engrampe'' oder auf ``*''. Was der Stern hier soll, verstehe ich (noch) nicht. Wenn man ihn weglaesst (d.h. leeres Pattern) oder durch ``^'' ersetzt, dann ist das Ergebnis das gleiche. Das leere Pattern oder der Zeilenanfang matchen auf jede Zeile, darum wird jede Zeilie ausgegeben; es wird aber nichts farblich hervorgehoben, weil in beiden Faellen kein Text der Inputzeile matched sondern nur der leere String am Anfang oder Ende der Zeile.

Dass jede Zeile ausgegeben wird liegt also am zweiten Teil der Alternation. Dass ``engrampa'' farblich hervorgehoben wird liegt am ersten Teil der Alternation.

Schaut man sich die Ausfuehrzeiten an, so ist die Variante mit Zeilenanfangs- (^) oder Zeilenendeankern ($) deutlich schneller (0.00s) als wenn man das leere Pattern oder diesen ominoesen Stern verwendet (0.07s).

Nun nochmal zum ominoesen Stern. Vereinfachen wir also:

Code: Alles auswählen

grep -E '*'
Das gibt alle Zeilen aus, matcht aber keinen Teil der Zeilen.

Code: Alles auswählen

grep '*'
Das gibt dagegen nur die Zeilen aus, die einen literalen Stern enthalten ... aus dem Grund, weil ein Quantifier ohne etwas davor keinen Sinn macht und darum literal gematcht wird. Das ist gleich wie ein Dollarzeichen mit etwas dahinter oder ein Caret mit etwas davor. ... allerdings nur im Fall von grep. Anders bei egrep (also ``grep -E'').

Dann schauen wir also mal in POSIX:
http://pubs.opengroup.org/onlinepubs/96 ... g_09_04_03

Code: Alles auswählen

*+?{
    The <asterisk>, <plus-sign>, <question-mark>, and <left-brace> shall be special except when used in a bracket expression (see RE Bracket Expression). Any of the following uses produce undefined results:

        If these characters appear first in an ERE, or immediately following a <vertical-line>, <circumflex>, or <left-parenthesis>
... und siehe da: Das Verhalten ist undefiniert.

(Darueber wie das leere Pattern zu handhaben ist, habe ich allerdings nichts gefunden. Ich sehe das also ebenso als undefiniert an.)

Korrekt ist daher:

Code: Alles auswählen

cat /var/log/apt/history.log | grep --color -i -E  "engrampa|^"
Use ed once in a while!

inne
Beiträge: 3281
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von inne » 12.08.2016 00:03:50

Meillo hat geschrieben:Was der Stern hier soll, verstehe ich (noch) nicht.

Nun nochmal zum ominoesen Stern. Vereinfachen wir also:

Code: Alles auswählen

grep -E '*'
Das muss grep --color -E '*' sein! Und dann ist die Frage, warum wird nicht alles farbig hervorgehoben?

Der * bedeutet das der voranstehende Ausdruck beliebig oft (auch keinmal) vorkommen darf. Hier steht "" davor, deswegen?

PS: Patsche wollte bei grep den gesamten Text ausgegeben haben und Matches wie hier das Pattern engrampa, sollten aber farbig hervorgehoben werden. Also wie der less Befehl oben.

Benutzeravatar
Meillo
Moderator
Beiträge: 8823
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Meillo » 12.08.2016 00:12:42

inne hat geschrieben:
Meillo hat geschrieben:Was der Stern hier soll, verstehe ich (noch) nicht.

Nun nochmal zum ominoesen Stern. Vereinfachen wir also:

Code: Alles auswählen

grep -E '*'
Das muss grep --color -E '*' sein! Und dann ist die Frage, warum wird nicht alles farbig hervorgehoben?
Das musst du die GNU grep-Entwickler fragen, weil das Verhalten fuer diesen Fall unspezifiziert ist und sie damit alles machen koennen was sie wollen und fuer sinnvoll halten. Dass alles farbig werden soll, finde ich falsch, wenn ``*'' ist nicht gleich ``.*''! Ersteres matcht nur beim Globbing auf alles, waehrend zweiteres bei Regexp auf alles matcht!

Btw: Dieses --color braucht man nur, wenn man *sehen* muss was gematcht hat ... wenn man das aber schon weiss, dann muss man es sich nicht noch extra vom Computer anzeigen lassen. :-P
PS: Patsche wollte bei grep den gesamten Text ausgegeben haben und Matches wie hier das Pattern engrampa, sollten aber farbig hervorgehoben werden. Also wie der less Befehl oben.
Schon klar. Genau das macht mein Vorschlag von ganz am Ende (der POSIX-konform ist):

Code: Alles auswählen

egrep --color 'engrampa|^'

(Es scheint Zeit fuer's Bett zu werden ...)
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 8823
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Meillo » 12.08.2016 00:15:22

inne hat geschrieben: Der * bedeutet das der voranstehende Ausdruck beliebig oft (auch keinmal) vorkommen darf. Hier steht "" davor, deswegen?
Siehe POSIX-Zitat.
Use ed once in a while!

tobo
Beiträge: 2013
Registriert: 10.12.2008 10:51:41

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von tobo » 12.08.2016 02:10:28

inne hat geschrieben:Und dann ist die Frage, warum wird nicht alles farbig hervorgehoben?
Vermutlich aus dem selben Grund, wieso ein grep --color -E "a*" auch alles ungefärbt ausgibt, wenn kein a in der Datei ist. Der Stern als Quantifizierer matched immer, völlig egal was in der Zeile steht oder als Suchargument übergeben wird.

Ich glaube auch nicht, dass man hier POSIX heranziehen darf - meiner Meinung nach zielt der Quantifizierer bei grep -E "*" auf den Nullstring, ähnlich wie bei grep -E "()*" auch!? Zusätzliches Indiz ist auch ein Rückgabewert von 0, obwohl -o nichts anzeigt.
Und nur mal so nebenbei, das

Code: Alles auswählen

cat /var/log/apt/history.log | grep --color -i -E  "uuoc|^"
könnte man noch verbessern?!

Benutzeravatar
Meillo
Moderator
Beiträge: 8823
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Wann wurde ein bestimmtes Paket installiert?

Beitrag von Meillo » 12.08.2016 09:20:35

tobo hat geschrieben: Ich glaube auch nicht, dass man hier POSIX heranziehen darf - meiner Meinung nach zielt der Quantifizierer bei grep -E "*" auf den Nullstring, ähnlich wie bei grep -E "()*" auch!?
Wieso sollte man POSIX nicht heranziehen duerfen? POSIX spezifiziert das Verhalten von Unix Tools. Wenn man nun wissen will, warum sich ein Tools soundso verhaelt, dann schaue ich zuerst in die Manpage. Da diese meist recht knapp ist und die Details aussen vor laesst, schaue ich danach in POSIX. Natuerlich ist nicht gesagt, dass sich jedes Tool POSIX-konform verhaelt, aber die meisten schon ... und wer will bei sowas wie egrep(1) schon im Quellcode wuehlen wollen? (Die Alternative waere schliesslich vermuten.)

Und im konkreten Fall ist POSIX doch sehr hilfreich mit seiner Aussage. Hier nochmal die Essenz:
Any of the following uses produce undefined results:

If these characters appear first in an ERE, or immediately following a <vertical-line> [...]
Mir kommt es so vor, wie wenn das nicht richtig verstanden worden waere. Darum nochmal auf Deutsch und auf unseren konkreten Fall bezogen: ``Folgendes erzeugt undefinierte Ergebnisse: Wenn der Stern als erstes in der Regexp steht oder direkt nach einem senkrechten Strich.'' POSIX hilft uns zwar nicht zu verstehen, warum es sich so verhaelt, aber wir lernen, dass sich GNU egrep hier verhaelt wie es will, und man nur bei dem Tool selbst schauen kann, weil sich jede andere egrep-Implementierung anders verhalten kann. Insofern war es schon hilfreich POSIX zu konsultieren.

Also. Man kann jetzt anfangen zu raten, warum sich GNU egrep so verhaelt wie es sich verhaelt ... und *wie* es sich wirklich verhaelt. -- Bislang schauen wir uns ja nur den Output an, verstehen aber nicht wie die Regexp-Engine in diesem Fall tatsaechlich arbeitet. ``*'' kann jedenfalls nicht gleich interpraetiert werden wie ``.*'' (also: matche auf alles), weil sonst wuerden sich die Laufzeiten der beiden Aufrufe nicht unterscheiden, was aber der Fall ist ... und --color wuerde in beiden Faellen den gleiche Treffer markieren.

Es spricht einiges fuer die Erklaerung, die du oben lieferst. Aber an welcher Stelle matcht der beliebig oft wiederholbare leere String nun? Es kann eigentlich nur der leere String am Zeilenbeginn sein. (``Fruehester laengster Treffer'') Aber warum ist die Laufzeit dieses Aufrufs so lang? ``^'' braucht ja auch nicht so lang, obwohl es das Gleiche matcht. Am Stern (also an zu vielen Moeglichkeiten) kann es auch nicht liegen, weil ``?'' dauert genauso lange, und das muss nur zwei Moeglichkeiten pruefen. Und fuer was steht die leere Regexp? Die braucht naemlich auch lange, scheint aber auch nur ``^'' zu entsprechen. Sind das nur die Folgen von Optimierungen fuer ``^'' und Co.?

Im Friedl habe ich jedenfalls keine Antworten zu diesen Fragen gefunden. Hat jemand vielleicht ein Buch zu GNU egrep, das darauf eingeht? Oder kennt jemand den Quellcode?
Use ed once in a while!

Antworten