ruby-debian 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Makefile +47 -0
- data/README +55 -0
- data/TODO +29 -0
- data/bin/dpkg-checkdeps +163 -0
- data/bin/dpkg-ruby +148 -0
- data/debian/changelog +310 -0
- data/debian/compat +1 -0
- data/debian/control +56 -0
- data/debian/copyright +26 -0
- data/debian/dirs +2 -0
- data/debian/manpages +0 -0
- data/debian/ruby-debian.docs +3 -0
- data/debian/ruby-debian.examples +1 -0
- data/debian/ruby-debian.manpages +2 -0
- data/debian/rules +15 -0
- data/debian/source/format +1 -0
- data/examples/ONE_LINER +39 -0
- data/examples/dpkg.rb +95 -0
- data/examples/list_packages.rb +38 -0
- data/examples/unmet_packages.rb +39 -0
- data/ext/debian_version/Version.cpp +43 -0
- data/ext/debian_version/extconf.rb +7 -0
- data/lib/debian.rb +1063 -0
- data/lib/debian/ar.rb +159 -0
- data/lib/debian/utils.rb +111 -0
- data/man/dpkg-checkdeps.1 +102 -0
- data/man/dpkg-ruby.1 +99 -0
- data/t/d/available +492 -0
- data/t/d/non-US_sid_Sources +32 -0
- data/t/d/non-US_sid_i386_Packages +50 -0
- data/t/d/sid_Sources +287 -0
- data/t/d/sid_i386_Packages +456 -0
- data/t/d/status +324 -0
- data/t/d/w3m-ssl_0.2.1-1.f +24 -0
- data/t/d/w3m-ssl_0.2.1-2.dsc +12 -0
- data/t/d/w3m-ssl_0.2.1-2.f +24 -0
- data/t/d/w3m_0.2.1-1.dsc +12 -0
- data/t/d/w3m_0.2.1-1.f +21 -0
- data/t/d/w3m_0.2.1-2.dsc +12 -0
- data/t/d/w3m_0.2.1-2.f +21 -0
- data/t/d/w3m_met_list +83 -0
- data/t/testall.rb +50 -0
- data/t/testar.rb +59 -0
- data/t/testarchives.rb +277 -0
- data/t/testdeb.rb +239 -0
- data/t/testdep.rb +70 -0
- data/t/testdepterm.rb +140 -0
- data/t/testdepunmet.rb +71 -0
- data/t/testdpkg.rb +197 -0
- data/t/testdpkgdeb.rb +83 -0
- data/t/testdsc.rb +49 -0
- data/t/testfield.rb +155 -0
- data/t/testpackages.rb +138 -0
- data/t/testsources.rb +44 -0
- data/t/teststatus.rb +38 -0
- metadata +133 -0
data/lib/debian/ar.rb
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
#
|
2
|
+
# ar.rb - ar(1) ruby interface (for debian.rb)
|
3
|
+
# Copyright (c) 2001 Fumitoshi UKAI <ukai@debian.or.jp>
|
4
|
+
#
|
5
|
+
# This program is free software; you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation; either version 2 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program; if not, write to the Free Software
|
17
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
#
|
19
|
+
# $Id: ar.rb,v 1.3 2003/10/07 17:07:02 ukai Exp $
|
20
|
+
#
|
21
|
+
|
22
|
+
# struct ar_hdr
|
23
|
+
# {
|
24
|
+
# char ar_name[16]; /* Member file name, sometimes / terminated. */
|
25
|
+
# char ar_date[12]; /* File date, decimal seconds since Epoch. */
|
26
|
+
# char ar_uid[6], ar_gid[6]; /* User and group IDs, in ASCII decimal. */
|
27
|
+
# char ar_mode[8]; /* File mode, in ASCII octal. */
|
28
|
+
# char ar_size[10]; /* File size, in ASCII decimal. */
|
29
|
+
# char ar_fmag[2]; /* Always contains ARFMAG. */
|
30
|
+
# };
|
31
|
+
|
32
|
+
module Debian
|
33
|
+
class ArError < StandardError; end
|
34
|
+
class Ar
|
35
|
+
ARMAG = "!<arch>\n"
|
36
|
+
SARMAG = 8
|
37
|
+
ARFMAG = "`\n"
|
38
|
+
AR_HDR_SIZE = (16+12+6+6+8+10+2)
|
39
|
+
class ArFile
|
40
|
+
class Stat
|
41
|
+
def initialize(time,uid,gid,mode,size,dev)
|
42
|
+
@time, @uid, @gid, @mode, @size, @dev = time,uid,gid,mode,size,dev
|
43
|
+
end
|
44
|
+
def <=>(s) @time <=> s.atime; end
|
45
|
+
def atime; @time; end
|
46
|
+
def blksize; 0; end
|
47
|
+
def blockdev?; false; end
|
48
|
+
def blocks; 0; end
|
49
|
+
def chardev?; false; end
|
50
|
+
def ctime; @time; end
|
51
|
+
def dev; @dev; end
|
52
|
+
def directory?; false; end
|
53
|
+
def executable?; false; end
|
54
|
+
def executable_real?; false; end
|
55
|
+
def file?; true; end
|
56
|
+
def ftype; 'file'; end
|
57
|
+
def gid; @gid; end
|
58
|
+
def grpowned?; false; end
|
59
|
+
def ino; @dev; end
|
60
|
+
def mode; @mode; end
|
61
|
+
def mtime; @time; end
|
62
|
+
def nlink; 1; end
|
63
|
+
def owned?; false; end
|
64
|
+
def pipe?; false; end
|
65
|
+
def rdev; @dev; end
|
66
|
+
def readable?; true; end
|
67
|
+
def readable_real?; true; end
|
68
|
+
def setgid?; false; end
|
69
|
+
def setuid?; false; end
|
70
|
+
def size; @size; end
|
71
|
+
def size?; @size == 0 ? nil : @size; end
|
72
|
+
def socket?; false; end
|
73
|
+
def sticky?; false; end
|
74
|
+
def symlink?; false; end
|
75
|
+
def uid; @uid; end
|
76
|
+
def writable?; false; end
|
77
|
+
def writable_real?; false; end
|
78
|
+
def zero?; @size == 0; end
|
79
|
+
end
|
80
|
+
|
81
|
+
def initialize(fp,name,date,uid,gid,mode,size,pos)
|
82
|
+
@fp,@name = fp,name
|
83
|
+
@stat = Stat.new(date,uid,gid,mode,size,pos)
|
84
|
+
@size = size
|
85
|
+
@pos = pos
|
86
|
+
@cur = 0
|
87
|
+
end
|
88
|
+
attr_reader :name, :size, :pos, :cur, :stat
|
89
|
+
|
90
|
+
def read(size = -1)
|
91
|
+
if size < 0
|
92
|
+
size = @size - @cur
|
93
|
+
end
|
94
|
+
if @cur + size > @size
|
95
|
+
size = @size - @cur
|
96
|
+
end
|
97
|
+
@fp.seek(@pos + @cur, IO::SEEK_SET)
|
98
|
+
r = @fp.read(size)
|
99
|
+
@cur += r.size
|
100
|
+
return r
|
101
|
+
end
|
102
|
+
|
103
|
+
def eof?; @cur == @size; end
|
104
|
+
def rewind; @cur = 0; end
|
105
|
+
end
|
106
|
+
|
107
|
+
def initialize(file)
|
108
|
+
@fp = File.open(file)
|
109
|
+
magic = @fp.gets
|
110
|
+
unless magic == ARMAG
|
111
|
+
raise ArError, "archive broken: #{file}"
|
112
|
+
end
|
113
|
+
@ofs = []
|
114
|
+
end
|
115
|
+
|
116
|
+
def close
|
117
|
+
@fp.close
|
118
|
+
end
|
119
|
+
|
120
|
+
def list
|
121
|
+
@fp.seek(SARMAG, IO::SEEK_SET)
|
122
|
+
while ! @fp.eof?
|
123
|
+
hdr = @fp.read(AR_HDR_SIZE)
|
124
|
+
name,date,uid,gid,mode,size,fmag = hdr.unpack('a16a12a6a6a8a10a2')
|
125
|
+
unless fmag == ARFMAG
|
126
|
+
raise ArError, "invalid archive field magic #{fmag} @ #{@fp.pos} [#{hdr}]"
|
127
|
+
end
|
128
|
+
name.strip!
|
129
|
+
size = size.to_i
|
130
|
+
@ofs.push(ArFile.new(@fp,
|
131
|
+
name,Time.at(date.to_i), uid.to_i, gid.to_i,
|
132
|
+
mode.oct, size, @fp.pos))
|
133
|
+
# puts "hdr=[#{hdr}] pos=#{@fp.pos}, size=#{size} #{(size + 1)&~1}"
|
134
|
+
@fp.seek((size + 1)&~1, IO::SEEK_CUR)
|
135
|
+
end
|
136
|
+
@ofs
|
137
|
+
end
|
138
|
+
def each_file
|
139
|
+
if @ofs.empty?; list; end
|
140
|
+
@ofs.each {|file|
|
141
|
+
yield file.name, file
|
142
|
+
}
|
143
|
+
end
|
144
|
+
|
145
|
+
def open(name)
|
146
|
+
if @ofs.empty?; list; end
|
147
|
+
@ofs.each {|file|
|
148
|
+
if file.name == name
|
149
|
+
if block_given?
|
150
|
+
return yield(file)
|
151
|
+
else
|
152
|
+
return file
|
153
|
+
end
|
154
|
+
end
|
155
|
+
}
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
end
|
data/lib/debian/utils.rb
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
#
|
2
|
+
# utils.rb - ruby utilities interface for debian.rb (gunzip, tar, ..)
|
3
|
+
# Copyright (c) 2001 Fumitoshi UKAI <ukai@debian.or.jp>
|
4
|
+
#
|
5
|
+
# This program is free software; you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation; either version 2 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program; if not, write to the Free Software
|
17
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
18
|
+
#
|
19
|
+
# $Id: utils.rb,v 1.2 2003/10/07 17:07:02 ukai Exp $
|
20
|
+
#
|
21
|
+
|
22
|
+
module Debian
|
23
|
+
module Utils
|
24
|
+
GUNZIP = '/bin/gunzip'
|
25
|
+
TAR = '/bin/tar'
|
26
|
+
TAR_EXTRACT = '-x'
|
27
|
+
TAR_LIST = '-t'
|
28
|
+
|
29
|
+
def Utils.pipeline(io,progs,stderr = false)
|
30
|
+
Signal.trap('CHLD', 'IGNORE')
|
31
|
+
# wr0 -> rd0 [gunzip] wr -> rd
|
32
|
+
rd,wr = IO.pipe
|
33
|
+
rde,wre = IO.pipe
|
34
|
+
pid = fork
|
35
|
+
if pid
|
36
|
+
# parent
|
37
|
+
wr.close
|
38
|
+
wre.close
|
39
|
+
if block_given?
|
40
|
+
return yield(rd, rde)
|
41
|
+
else
|
42
|
+
return rd, rde
|
43
|
+
end
|
44
|
+
else
|
45
|
+
# child
|
46
|
+
rd.close
|
47
|
+
rd0, wr0 = IO.pipe
|
48
|
+
pid2 = fork
|
49
|
+
if pid2
|
50
|
+
# gunzip
|
51
|
+
wr0.close
|
52
|
+
STDOUT.reopen(wr)
|
53
|
+
STDERR.reopen(wre) if stderr
|
54
|
+
STDIN.reopen(rd0)
|
55
|
+
ENV["LANG"] = "C"
|
56
|
+
ENV["LC_ALL"] = "C"
|
57
|
+
exec(*progs)
|
58
|
+
# XXX: waitpid(pid2?)
|
59
|
+
else
|
60
|
+
rd0.close
|
61
|
+
while ! io.eof?
|
62
|
+
wr0.write(io.read(4096))
|
63
|
+
end
|
64
|
+
exit 0
|
65
|
+
end
|
66
|
+
end
|
67
|
+
Process.waitpid(pid, 0)
|
68
|
+
Process.wait
|
69
|
+
end
|
70
|
+
|
71
|
+
def gunzip(io)
|
72
|
+
Utils.pipeline(io, [GUNZIP]) {|fp,fpe|
|
73
|
+
fpe.close
|
74
|
+
if block_given?
|
75
|
+
return yield(fp)
|
76
|
+
else
|
77
|
+
return fp
|
78
|
+
end
|
79
|
+
}
|
80
|
+
end
|
81
|
+
def tar(io,op,*pat)
|
82
|
+
progs = [TAR, op, '--wildcards', '-f', '-']
|
83
|
+
if pat[0]
|
84
|
+
progs += ['--to-stdout', *pat]
|
85
|
+
end
|
86
|
+
Utils.pipeline(io,progs,op == "-t") {|fp,fpe|
|
87
|
+
if op == "-t"
|
88
|
+
pid = fork
|
89
|
+
if pid
|
90
|
+
# parent
|
91
|
+
else
|
92
|
+
while !fpe.eof? && str = fpe.readline
|
93
|
+
unless str.match(/^\/bin\/tar: Record size = [0-9]+ blocks$/)
|
94
|
+
STDERR.puts str
|
95
|
+
end
|
96
|
+
end
|
97
|
+
exit
|
98
|
+
end
|
99
|
+
end
|
100
|
+
fpe.close
|
101
|
+
if block_given?
|
102
|
+
return yield(fp)
|
103
|
+
else
|
104
|
+
return fp
|
105
|
+
end
|
106
|
+
}
|
107
|
+
end
|
108
|
+
|
109
|
+
module_function :gunzip, :tar
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
.TH DPKG-CHECKDEPS.RB 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
|
2
|
+
.SH NAME
|
3
|
+
dpkg-checkdeps.rb \- Utility to check deb dependency
|
4
|
+
.SH SYNOPSIS
|
5
|
+
\fBdpkg-checkdeps.rb\fP [\fIopts\fP] \fIdebfile\fP ...
|
6
|
+
.br
|
7
|
+
\fBdpkg-checkdeps.rb\fP [\fIopts\fP] \fB\-\-from\fP \fIpackages\fP \fIpkgname\fP...
|
8
|
+
.br
|
9
|
+
\fBdpkg-checkdeps.rb\fP [\fIopts\fP] \fB\-\-from\fP \fB\-\-all\fP
|
10
|
+
.br
|
11
|
+
\fBdpkg-checkdeps.rb\fP [\fIopts\fP] \fB\-\-check\fP \fIpkgname\fP...
|
12
|
+
.br
|
13
|
+
\fIopts\fP: \fB\-\-to\fP \fIpackages\fP
|
14
|
+
\fB\-\-arch\fP \fIarch\fP
|
15
|
+
\fB\-\-verbose\fP
|
16
|
+
\fB\-q\fP
|
17
|
+
.br
|
18
|
+
.SH DESCRIPTION
|
19
|
+
.I dpkg-checkdeps.rb
|
20
|
+
checks deb dependency problems when specified deb packages are
|
21
|
+
installed in the target packages list.
|
22
|
+
.SH OPTIONS
|
23
|
+
.TP
|
24
|
+
.PD 0
|
25
|
+
.BI \-t " packages-file"
|
26
|
+
.TP
|
27
|
+
.BI \-\-to " packages-file"
|
28
|
+
.PD
|
29
|
+
Specify target \fIpackages-file\fP. If this option is used multiple times,
|
30
|
+
packages lists are appended. If no \fB-t\fP option specified,
|
31
|
+
default is current installed packages list, that is, /var/lib/dpkg/status.
|
32
|
+
.TP
|
33
|
+
.PD 0
|
34
|
+
.BI \-f " packages-file"
|
35
|
+
.TP
|
36
|
+
.BI \-\-from " packages-file"
|
37
|
+
.PD
|
38
|
+
Specify source \fIpackages-file\fP. If this option is used multiple times,
|
39
|
+
packages lists are appended. If you use this option, you can select packages
|
40
|
+
by \fIpackage-name\fP, or all of them by \fB\-\-all\fP option.
|
41
|
+
.TP
|
42
|
+
.PD 0
|
43
|
+
.B \-A
|
44
|
+
.TP
|
45
|
+
.B \-\-all
|
46
|
+
.PD
|
47
|
+
Select all packages in source \fIpackages-file\fP. You must use this option
|
48
|
+
with \fB\-\-from\fP option.
|
49
|
+
.TP
|
50
|
+
.PD 0
|
51
|
+
.BI \-a " arch"
|
52
|
+
.TP
|
53
|
+
.BI \-\-arch " arch"
|
54
|
+
.PD
|
55
|
+
Specify acceptable \fIarch\fP in \fIpackages-file\fP. Default is
|
56
|
+
installation_architecture of dpkg.
|
57
|
+
.TP
|
58
|
+
.PD 0
|
59
|
+
.B \-c
|
60
|
+
.TP
|
61
|
+
.B \-\-check
|
62
|
+
.PD
|
63
|
+
Check selected packages are satisfied by all packages in target
|
64
|
+
\fIpackages\fP.
|
65
|
+
.TP
|
66
|
+
.PD 0
|
67
|
+
.B \-v
|
68
|
+
.TP
|
69
|
+
.B \-\-verbose
|
70
|
+
.PD
|
71
|
+
Verbose mode
|
72
|
+
.TP
|
73
|
+
.PD 0
|
74
|
+
.BI \-h
|
75
|
+
.TP
|
76
|
+
.BI \-\-help
|
77
|
+
.PD
|
78
|
+
Display some help.
|
79
|
+
.SH EXAMPLES
|
80
|
+
|
81
|
+
% dpkg-checkdeps.rb \-\-arch alpha \
|
82
|
+
\-\-to '*/binary-$ARCH/Packages' \
|
83
|
+
\-\-from ../proposed-updates/Packages' \-\-all
|
84
|
+
|
85
|
+
% dpkg-checkdeps.rb \-\-to '*/binary-$ARCH/Packages' \-\-check libc6
|
86
|
+
|
87
|
+
.SH BUGS
|
88
|
+
|
89
|
+
There are probably tons of bugs in this program.
|
90
|
+
|
91
|
+
This checks only depends, recommends and suggests, doesn't check
|
92
|
+
pre-depends and conflicts, yet.
|
93
|
+
|
94
|
+
This program comes with no warranties. If running this program
|
95
|
+
causes fire and brimstone to rain down upon the earth, you will be
|
96
|
+
on our own.
|
97
|
+
|
98
|
+
.SH AUTHOR
|
99
|
+
Fumitoshi UKAI <ukai@debian.or.jp>.
|
100
|
+
|
101
|
+
|
102
|
+
|
data/man/dpkg-ruby.1
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
.TH DPKG-RUBY 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
|
2
|
+
.SH NAME
|
3
|
+
dpkg-ruby \- Utility to read a dpkg style db file, dpkg-awk clone
|
4
|
+
.SH SYNOPSIS
|
5
|
+
\fBdpkg-ruby\fP [\fB(\-f|\-\-file) \fIfilename\fP] [\fB(\-d|\-\-debug) \fI##\fP] [\fB(\-s|\-\-sort) \fIlist\fP] [\fB(\-n|\-\-numeric) \fIlist\fP] [\fB(\-rs|\-\-rec_sep) \fI??\fP] '\fI<fieldname>:<regex>\fP' ... \-\- \fI<out_fieldname>\fP ..
|
6
|
+
.br
|
7
|
+
.SH DESCRIPTION
|
8
|
+
.I dpkg-ruby
|
9
|
+
Parses a dpkg status file(or other similarly formated file) and
|
10
|
+
outputs the resulting records. It can use regex on the field
|
11
|
+
values to limit the returned records, and it can also be told
|
12
|
+
which fields to output. As another option, it can sort the
|
13
|
+
matched fields.
|
14
|
+
.SH OPTIONS
|
15
|
+
|
16
|
+
.TP
|
17
|
+
.PD 0
|
18
|
+
.BI \-f " filename"
|
19
|
+
.TP
|
20
|
+
.BI \-\-file " filename"
|
21
|
+
.PD
|
22
|
+
The file to parse. The default is /var/lib/dpkg/status.
|
23
|
+
.TP
|
24
|
+
.PD 0
|
25
|
+
.BI \-d " [#]"
|
26
|
+
.TP
|
27
|
+
.BI \-\-debug " [#]"
|
28
|
+
.PD
|
29
|
+
Each time this is specified, it increased the debug level.
|
30
|
+
.TP
|
31
|
+
.PD 0
|
32
|
+
.BI \-s " field(s)"
|
33
|
+
.TP
|
34
|
+
.BI \-\-sort " field(s)"
|
35
|
+
.PD
|
36
|
+
A space or comma separated list of fields to sort on.
|
37
|
+
.TP
|
38
|
+
.PD 0
|
39
|
+
.BI \-n " field(s)"
|
40
|
+
.TP
|
41
|
+
.BI \-\-numeric " field(s)"
|
42
|
+
.PD
|
43
|
+
A space or comma separated list of fields that should be
|
44
|
+
interpreted as numeric in value.
|
45
|
+
.TP
|
46
|
+
.PD 0
|
47
|
+
.BI \-rs " ??"
|
48
|
+
.TP
|
49
|
+
.BI \-\-rec_sep " ??"
|
50
|
+
.PD
|
51
|
+
Output this string at the end of each output paragraph.
|
52
|
+
.\" .TP
|
53
|
+
.\" .PD 0
|
54
|
+
.\" .I -of ??
|
55
|
+
.\" .TP
|
56
|
+
.\" .I --outform ??
|
57
|
+
.\" .PD
|
58
|
+
.\" Specify the outform that dpkg-ruby should use. Current
|
59
|
+
.\" formats are normal(the old, tried and true style), and
|
60
|
+
.\" xml.
|
61
|
+
.TP
|
62
|
+
.PD 0
|
63
|
+
.B \-h
|
64
|
+
.TP
|
65
|
+
.B \-\-help
|
66
|
+
.PD
|
67
|
+
Display some help.
|
68
|
+
.TP
|
69
|
+
.I fieldname
|
70
|
+
The fields from the file, that are matched with the regex given.
|
71
|
+
The \fIfieldname\fPs are case insensitive.
|
72
|
+
.TP
|
73
|
+
.I out_fieldname
|
74
|
+
The fields from the file, that are outputted for each record.
|
75
|
+
If the first field listed is begins with
|
76
|
+
.IR ^ ,
|
77
|
+
then the list that follows are fields
|
78
|
+
.I NOT
|
79
|
+
to be outputted.
|
80
|
+
.SH BUGS
|
81
|
+
|
82
|
+
Be warned that the author has only a shallow understanding of the
|
83
|
+
dpkg packaging system, so there are probably tons of bugs in this
|
84
|
+
program.
|
85
|
+
|
86
|
+
This program comes with no warranties. If running this program
|
87
|
+
causes fire and brimstone to rain down upon the earth, you will be
|
88
|
+
on our own.
|
89
|
+
|
90
|
+
This program accesses the dpkg database directly in places, querying
|
91
|
+
for data that cannot be gotten via dpkg.
|
92
|
+
|
93
|
+
.SH AUTHOR
|
94
|
+
Fumitoshi UKAI <ukai@debian.or.jp>.
|
95
|
+
This manual page are based on (or almost copy from :) dpkg-awk(1) manual
|
96
|
+
written by Adam Heath <doogie@debian.org>
|
97
|
+
|
98
|
+
|
99
|
+
|