FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > ArchLinux > ArchLinux Pacman Development

 
 
LinkBack Thread Tools
 
Old 07-08-2011, 01:42 PM
Dave Reisner
 
Default contrib/log2pkglist: new contribution

converts a pacman log file to a list of installed packages, which should
match the output of `pacman -Q'.

This isn't bullet proof, as testing has revealed that the log is not always
precisely accurate, but it should be good enough for a user whom finds
himself in a situation dire enough to need this.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
---
We've had a similar script floating around on the wiki and some other places,
so this should be a nice addition to our contrib package. It has the added
bonus of providing version numbers.

contrib/Makefile.am | 1 +
contrib/log2pkglist | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ +
2 files changed, 58 insertions(+), 0 deletions(-)
create mode 100755 contrib/log2pkglist

diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index cba2085..b1675f4 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -13,6 +13,7 @@ EXTRA_DIST =
PKGBUILD.vim
bacman.in
bash_completion.in
+ log2pkglist
pacdiff.in
paclist.in
pacscripts.in
diff --git a/contrib/log2pkglist b/contrib/log2pkglist
new file mode 100755
index 0000000..5da47ae
--- /dev/null
+++ b/contrib/log2pkglist
@@ -0,0 +1,57 @@
+#!/bin/awk -f
+#
+# log2pkglist - Parse a log file into a list of currently installed packages
+#
+# Copyright (C) 2011 Dave Reisner <dave@archlinux.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+BEGIN {
+ if (ARGC < 2) {
+ printf "usage: log2pkglist <pacman log>
"
+ printf "example: log2pkglist /var/log/pacman.log
"
+ exit
+ }
+}
+
+{
+ action = $3
+ pkgname = $4
+ pkgver = $5
+ upgver = $7
+}
+
+NF == 5 && action == "installed" {
+ gsub(/[()]/, "", pkgver)
+ pkg[pkgname] = pkgver
+ next
+}
+
+NF == 7 && action == "upgraded" {
+ sub(/)/, "", upgver)
+ pkg[pkgname] = upgver
+ next
+}
+
+NF == 5 && action == "removed" {
+ pkg[pkgname] = -1
+}
+
+END {
+ for (i in pkg) {
+ if (pkg[i] != -1) {
+ printf "%s %s
",i,pkg[i]
+ }
+ }
+}
--
1.7.6
 
Old 07-08-2011, 01:51 PM
Dan McGee
 
Default contrib/log2pkglist: new contribution

On Fri, Jul 8, 2011 at 8:42 AM, Dave Reisner <d@falconindy.com> wrote:
> converts a pacman log file to a list of installed packages, which should
> match the output of `pacman -Q'.
>
> This isn't bullet proof, as testing has revealed that the log is not always
> precisely accurate, but it should be good enough for a user whom finds
> himself in a situation dire enough to need this.
>
> Signed-off-by: Dave Reisner <dreisner@archlinux.org>
> ---
> We've had a similar script floating around on the wiki and some other places,
> so this should be a nice addition to our contrib package. It has the added
> bonus of providing version numbers.

Looks good to me with some quick testing. I used an older version of
gawk (3.1.5) and things seemed fine. Nothing immediately available to
test on a non-GNU system though, anyone on OSX/BSD want to give this a
quick spin?

My only problem here would be the name- it looks great in contrib/,
but not so good in /usr/bin. "log2x" is pretty damn generic and
doesn't really signify "pacman log to package list". I can't come up
with some short and sweet name though. "pacman-log-rescue"?

> *contrib/Makefile.am | * *1 +
> *contrib/log2pkglist | * 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ +
> *2 files changed, 58 insertions(+), 0 deletions(-)
> *create mode 100755 contrib/log2pkglist
>
> diff --git a/contrib/Makefile.am b/contrib/Makefile.am
> index cba2085..b1675f4 100644
> --- a/contrib/Makefile.am
> +++ b/contrib/Makefile.am
> @@ -13,6 +13,7 @@ EXTRA_DIST =
> * * * *PKGBUILD.vim
> * * * *bacman.in
> * * * *bash_completion.in
> + * * * log2pkglist
> * * * *pacdiff.in
> * * * *paclist.in
> * * * *pacscripts.in
> diff --git a/contrib/log2pkglist b/contrib/log2pkglist
> new file mode 100755
> index 0000000..5da47ae
> --- /dev/null
> +++ b/contrib/log2pkglist
> @@ -0,0 +1,57 @@
> +#!/bin/awk -f
> +#
> +# log2pkglist - Parse a log file into a list of currently installed packages
> +#
> +# Copyright (C) 2011 Dave Reisner <dave@archlinux.org>
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License
> +# as published by the Free Software Foundation; either version 2
> +# of the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program. *If not, see <http://www.gnu.org/licenses/>.
> +
> +BEGIN {
> + *if (ARGC < 2) {
> + * *printf "usage: * log2pkglist <pacman log>
"
> + * *printf "example: log2pkglist /var/log/pacman.log
"
> + * *exit
> + *}
> +}
> +
> +{
> + *action *= $3
> + *pkgname = $4
> + *pkgver *= $5
> + *upgver *= $7
> +}
> +
> +NF == 5 && action == "installed" {
> + *gsub(/[()]/, "", pkgver)
> + *pkg[pkgname] = pkgver
> + *next
> +}
> +
> +NF == 7 && action == "upgraded" {
> + *sub(/)/, "", upgver)
> + *pkg[pkgname] = upgver
> + *next
> +}
> +
> +NF == 5 && action == "removed" {
> + *pkg[pkgname] = -1
> +}
> +
> +END {
> + *for (i in pkg) {
> + * *if (pkg[i] != -1) {
> + * * *printf "%s %s
",i,pkg[i]
> + * *}
> + *}
> +}
> --
> 1.7.6
>
>
>
 
Old 07-08-2011, 02:05 PM
Lukas Fleischer
 
Default contrib/log2pkglist: new contribution

From: Dave Reisner <d@falconindy.com>

converts a pacman log file to a list of installed packages, which should
match the output of `pacman -Q'.

This isn't bullet proof, as testing has revealed that the log is not always
precisely accurate, but it should be good enough for a user whom finds
himself in a situation dire enough to need this.

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
---
The bracket in the regular expression in line 42 needs to be escaped, otherwise
OpenBSD's awk(1) fails with:

----
awk: illegal primary in regular expression ) at
source line number 42 source file log2pkglist
context is
sub(/)/, "", >>> upgver) <<<
----

Apart from that, this works fine for me (OpenBSD 4.9, awk version 20100523).

contrib/Makefile.am | 1 +
contrib/log2pkglist | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ +
2 files changed, 58 insertions(+), 0 deletions(-)
create mode 100755 contrib/log2pkglist

diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index cba2085..b1675f4 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -13,6 +13,7 @@ EXTRA_DIST =
PKGBUILD.vim
bacman.in
bash_completion.in
+ log2pkglist
pacdiff.in
paclist.in
pacscripts.in
diff --git a/contrib/log2pkglist b/contrib/log2pkglist
new file mode 100755
index 0000000..e9f27cd
--- /dev/null
+++ b/contrib/log2pkglist
@@ -0,0 +1,57 @@
+#!/bin/awk -f
+#
+# log2pkglist - Parse a log file into a list of currently installed packages
+#
+# Copyright (C) 2011 Dave Reisner <dave@archlinux.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+BEGIN {
+ if (ARGC < 2) {
+ printf "usage: log2pkglist <pacman log>
"
+ printf "example: log2pkglist /var/log/pacman.log
"
+ exit
+ }
+}
+
+{
+ action = $3
+ pkgname = $4
+ pkgver = $5
+ upgver = $7
+}
+
+NF == 5 && action == "installed" {
+ gsub(/[()]/, "", pkgver)
+ pkg[pkgname] = pkgver
+ next
+}
+
+NF == 7 && action == "upgraded" {
+ sub(/)/, "", upgver)
+ pkg[pkgname] = upgver
+ next
+}
+
+NF == 5 && action == "removed" {
+ pkg[pkgname] = -1
+}
+
+END {
+ for (i in pkg) {
+ if (pkg[i] != -1) {
+ printf "%s %s
",i,pkg[i]
+ }
+ }
+}
--
1.7.6
 
Old 07-08-2011, 02:17 PM
Dave Reisner
 
Default contrib/log2pkglist: new contribution

On Fri, Jul 08, 2011 at 08:51:51AM -0500, Dan McGee wrote:
> On Fri, Jul 8, 2011 at 8:42 AM, Dave Reisner <d@falconindy.com> wrote:
> > converts a pacman log file to a list of installed packages, which should
> > match the output of `pacman -Q'.
> >
> > This isn't bullet proof, as testing has revealed that the log is not always
> > precisely accurate, but it should be good enough for a user whom finds
> > himself in a situation dire enough to need this.
> >
> > Signed-off-by: Dave Reisner <dreisner@archlinux.org>
> > ---
> > We've had a similar script floating around on the wiki and some other places,
> > so this should be a nice addition to our contrib package. It has the added
> > bonus of providing version numbers.
>
> Looks good to me with some quick testing. I used an older version of
> gawk (3.1.5) and things seemed fine. Nothing immediately available to
> test on a non-GNU system though, anyone on OSX/BSD want to give this a
> quick spin?

It's POSIX compliant, but I know one of the BSDs ships with nawk as
/bin/awk, so we're going to run into a small issue I've got fixed up (we
ran into the same thing with makepkg -- lack of escaped paren in a
regex).

> My only problem here would be the name- it looks great in contrib/,
> but not so good in /usr/bin. "log2x" is pretty damn generic and
> doesn't really signify "pacman log to package list". I can't come up
> with some short and sweet name though. "pacman-log-rescue"?
>

Variations on a theme...

paclog2pkglist
paclog-rescue
pac-log-rescue
rmrfvarlibpacman

d

> > *contrib/Makefile.am | * *1 +
> > *contrib/log2pkglist | * 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ +
> > *2 files changed, 58 insertions(+), 0 deletions(-)
> > *create mode 100755 contrib/log2pkglist
> >
> > diff --git a/contrib/Makefile.am b/contrib/Makefile.am
> > index cba2085..b1675f4 100644
> > --- a/contrib/Makefile.am
> > +++ b/contrib/Makefile.am
> > @@ -13,6 +13,7 @@ EXTRA_DIST =
> > * * * *PKGBUILD.vim
> > * * * *bacman.in
> > * * * *bash_completion.in
> > + * * * log2pkglist
> > * * * *pacdiff.in
> > * * * *paclist.in
> > * * * *pacscripts.in
> > diff --git a/contrib/log2pkglist b/contrib/log2pkglist
> > new file mode 100755
> > index 0000000..5da47ae
> > --- /dev/null
> > +++ b/contrib/log2pkglist
> > @@ -0,0 +1,57 @@
> > +#!/bin/awk -f
> > +#
> > +# log2pkglist - Parse a log file into a list of currently installed packages
> > +#
> > +# Copyright (C) 2011 Dave Reisner <dave@archlinux.org>
> > +#
> > +# This program is free software; you can redistribute it and/or
> > +# modify it under the terms of the GNU General Public License
> > +# as published by the Free Software Foundation; either version 2
> > +# of the License, or (at your option) any later version.
> > +#
> > +# This program is distributed in the hope that it will be useful,
> > +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *See the
> > +# GNU General Public License for more details.
> > +#
> > +# You should have received a copy of the GNU General Public License
> > +# along with this program. *If not, see <http://www.gnu.org/licenses/>.
> > +
> > +BEGIN {
> > + *if (ARGC < 2) {
> > + * *printf "usage: * log2pkglist <pacman log>
"
> > + * *printf "example: log2pkglist /var/log/pacman.log
"
> > + * *exit
> > + *}
> > +}
> > +
> > +{
> > + *action *= $3
> > + *pkgname = $4
> > + *pkgver *= $5
> > + *upgver *= $7
> > +}
> > +
> > +NF == 5 && action == "installed" {
> > + *gsub(/[()]/, "", pkgver)
> > + *pkg[pkgname] = pkgver
> > + *next
> > +}
> > +
> > +NF == 7 && action == "upgraded" {
> > + *sub(/)/, "", upgver)
> > + *pkg[pkgname] = upgver
> > + *next
> > +}
> > +
> > +NF == 5 && action == "removed" {
> > + *pkg[pkgname] = -1
> > +}
> > +
> > +END {
> > + *for (i in pkg) {
> > + * *if (pkg[i] != -1) {
> > + * * *printf "%s %s
",i,pkg[i]
> > + * *}
> > + *}
> > +}
> > --
> > 1.7.6
> >
> >
> >
>
 
Old 07-08-2011, 08:10 PM
Allan McRae
 
Default contrib/log2pkglist: new contribution

On 09/07/11 00:17, Dave Reisner wrote:

On Fri, Jul 08, 2011 at 08:51:51AM -0500, Dan McGee wrote:

On Fri, Jul 8, 2011 at 8:42 AM, Dave Reisner<d@falconindy.com> wrote:

converts a pacman log file to a list of installed packages, which should
match the output of `pacman -Q'.

This isn't bullet proof, as testing has revealed that the log is not always
precisely accurate, but it should be good enough for a user whom finds
himself in a situation dire enough to need this.

Signed-off-by: Dave Reisner<dreisner@archlinux.org>
---
We've had a similar script floating around on the wiki and some other places,
so this should be a nice addition to our contrib package. It has the added
bonus of providing version numbers.


Looks good to me with some quick testing. I used an older version of
gawk (3.1.5) and things seemed fine. Nothing immediately available to
test on a non-GNU system though, anyone on OSX/BSD want to give this a
quick spin?


It's POSIX compliant, but I know one of the BSDs ships with nawk as
/bin/awk, so we're going to run into a small issue I've got fixed up (we
ran into the same thing with makepkg -- lack of escaped paren in a
regex).


My only problem here would be the name- it looks great in contrib/,
but not so good in /usr/bin. "log2x" is pretty damn generic and
doesn't really signify "pacman log to package list". I can't come up
with some short and sweet name though. "pacman-log-rescue"?



Variations on a theme...

paclog2pkglist
paclog-rescue
pac-log-rescue
rmrfvarlibpacman



givemeapackagelistfrommypacmanlog

But pacman-log-rescue sounds fine to me.

Allan
 
Old 07-08-2011, 08:20 PM
Dieter Plaetinck
 
Default contrib/log2pkglist: new contribution

On Sat, 09 Jul 2011 06:10:37 +1000
Allan McRae <allan@archlinux.org> wrote:

> On 09/07/11 00:17, Dave Reisner wrote:
> > On Fri, Jul 08, 2011 at 08:51:51AM -0500, Dan McGee wrote:
> >> On Fri, Jul 8, 2011 at 8:42 AM, Dave Reisner<d@falconindy.com> wrote:
> >>> converts a pacman log file to a list of installed packages, which should
> >>> match the output of `pacman -Q'.
> >>>
> >>> This isn't bullet proof, as testing has revealed that the log is not always
> >>> precisely accurate, but it should be good enough for a user whom finds
> >>> himself in a situation dire enough to need this.
> >>>
> >>> Signed-off-by: Dave Reisner<dreisner@archlinux.org>
> >>> ---
> >>> We've had a similar script floating around on the wiki and some other places,
> >>> so this should be a nice addition to our contrib package. It has the added
> >>> bonus of providing version numbers.
> >>
> >> Looks good to me with some quick testing. I used an older version of
> >> gawk (3.1.5) and things seemed fine. Nothing immediately available to
> >> test on a non-GNU system though, anyone on OSX/BSD want to give this a
> >> quick spin?
> >
> > It's POSIX compliant, but I know one of the BSDs ships with nawk as
> > /bin/awk, so we're going to run into a small issue I've got fixed up (we
> > ran into the same thing with makepkg -- lack of escaped paren in a
> > regex).
> >
> >> My only problem here would be the name- it looks great in contrib/,
> >> but not so good in /usr/bin. "log2x" is pretty damn generic and
> >> doesn't really signify "pacman log to package list". I can't come up
> >> with some short and sweet name though. "pacman-log-rescue"?
> >>
> >
> > Variations on a theme...
> >
> > paclog2pkglist
> > paclog-rescue
> > pac-log-rescue
> > rmrfvarlibpacman
> >
>
> givemeapackagelistfrommypacmanlog
>
> But pacman-log-rescue sounds fine to me.
>
> Allan
>

get-packagelist-from-pacman-log-you-really-shouldnt-need-this-unless-you-fucked-up-badly-you-know-what-youre-doing-right-omglolwtfifyoureallyneedthisyouwereatleasttryingto dosomethingawesome

j/k of course..

just don't name it `rmrfvarlibpacman`, that's a weird name.

Dieter
 

Thread Tools




All times are GMT. The time now is 03:13 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org