Linux mail.vriendennsm.nl 6.1.0-51-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.177-1 (2026-07-16) x86_64
Apache/2.4.68 (Debian)
Server IP : 217.154.75.17 & Your IP : 216.73.216.195
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
webmin /
software /
Delete
Unzip
Name
Size
Permission
Date
Action
help
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
images
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
lang
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
CHANGELOG
3.03
KB
-rw-r--r--
2026-07-17 21:17
aix-lib.pl
19.56
KB
-rwxr-xr-x
2026-07-17 21:17
apk-lib.pl
8.52
KB
-rw-r--r--
2026-07-17 21:17
apt-lib.pl
16.07
KB
-rwxr-xr-x
2026-07-17 21:17
apt_upgrade.cgi
1.99
KB
-rwxr-xr-x
2026-07-17 21:22
cgi_args.pl
524
B
-rwxr-xr-x
2026-07-17 21:17
close.cgi
263
B
-rwxr-xr-x
2026-07-17 21:22
config-aix
30
B
-rw-r--r--
2026-07-17 21:17
config-alpine-linux
37
B
-rw-r--r--
2026-07-17 21:17
config-cobalt-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-coherent-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-corel-linux
33
B
-rw-r--r--
2026-07-17 21:17
config-cygwin
33
B
-rw-r--r--
2026-07-17 21:17
config-debian-linux
51
B
-rw-r--r--
2026-07-17 21:17
config-freebsd
54
B
-rw-r--r--
2026-07-17 21:17
config-freebsd-8.4-ALL
52
B
-rw-r--r--
2026-07-17 21:17
config-gentoo-linux
33
B
-rw-r--r--
2026-07-17 21:17
config-hpux
31
B
-rw-r--r--
2026-07-17 21:17
config-mandrake-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-msc-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-netbsd
34
B
-rw-r--r--
2026-07-17 21:17
config-open-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-openSUSE-Linux-15.0-ALL
30
B
-rw-r--r--
2026-07-17 21:17
config-openbsd
34
B
-rw-r--r--
2026-07-17 21:17
config-openmamba-linux
48
B
-rw-r--r--
2026-07-17 21:17
config-openserver
33
B
-rw-r--r--
2026-07-17 21:17
config-redhat-linux
48
B
-rw-r--r--
2026-07-17 21:17
config-slackware-linux
36
B
-rw-r--r--
2026-07-17 21:17
config-solaris
33
B
-rw-r--r--
2026-07-17 21:17
config-suse-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-syno-linux
50
B
-rw-r--r--
2026-07-17 21:17
config-trustix-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-turbo-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-united-linux
30
B
-rw-r--r--
2026-07-17 21:17
config-unixware
33
B
-rw-r--r--
2026-07-17 21:17
config-windows
30
B
-rw-r--r--
2026-07-17 21:17
config.info
541
B
-rw-r--r--
2026-07-17 21:17
config.info.ca
554
B
-rw-r--r--
2026-07-17 21:17
config.info.cs
372
B
-rw-r--r--
2026-07-17 21:17
config.info.de
523
B
-rw-r--r--
2026-07-17 21:17
config.info.es
320
B
-rw-r--r--
2026-07-17 21:17
config.info.fr
135
B
-rw-r--r--
2026-07-17 21:17
config.info.ja
428
B
-rw-r--r--
2026-07-17 21:17
config.info.ko
409
B
-rw-r--r--
2026-07-17 21:17
config.info.ms
411
B
-rw-r--r--
2026-07-17 21:17
config.info.nl
415
B
-rw-r--r--
2026-07-17 21:17
config.info.no
424
B
-rw-r--r--
2026-07-17 21:17
config.info.pl
392
B
-rw-r--r--
2026-07-17 21:17
config.info.ru
175
B
-rw-r--r--
2026-07-17 21:17
config.info.sv
224
B
-rw-r--r--
2026-07-17 21:17
config.info.tr
123
B
-rw-r--r--
2026-07-17 21:17
config.info.uk
174
B
-rw-r--r--
2026-07-17 21:17
config.info.zh
122
B
-rw-r--r--
2026-07-17 21:17
config.info.zh_TW
125
B
-rw-r--r--
2026-07-17 21:17
csw-lib.pl
2.66
KB
-rwxr-xr-x
2026-07-17 21:17
cygwin-lib.pl
22.64
KB
-rwxr-xr-x
2026-07-17 21:17
debian-lib.pl
9.23
KB
-rwxr-xr-x
2026-07-17 21:17
delete_file.cgi
340
B
-rwxr-xr-x
2026-07-17 21:22
delete_pack.cgi
1.71
KB
-rwxr-xr-x
2026-07-17 21:22
delete_packs.cgi
1.82
KB
-rwxr-xr-x
2026-07-17 21:22
do_install.cgi
2.67
KB
-rwxr-xr-x
2026-07-17 21:22
edit_pack.cgi
1.13
KB
-rwxr-xr-x
2026-07-17 21:22
emerge-lib.pl
7.83
KB
-rwxr-xr-x
2026-07-17 21:17
file_info.cgi
2.09
KB
-rwxr-xr-x
2026-07-17 21:22
find.cgi
1.63
KB
-rwxr-xr-x
2026-07-17 21:22
freebsd-lib.pl
8.26
KB
-rwxr-xr-x
2026-07-17 21:17
hpux-lib.pl
8.42
KB
-rwxr-xr-x
2026-07-17 21:17
index.cgi
3.3
KB
-rwxr-xr-x
2026-07-17 21:22
install_pack.cgi
4.8
KB
-rwxr-xr-x
2026-07-17 21:22
ipkg-close.cgi
269
B
-rwxr-xr-x
2026-07-17 21:22
ipkg-edit_pack.cgi
1.45
KB
-rwxr-xr-x
2026-07-17 21:22
ipkg-lib.pl
8.04
KB
-rwxr-xr-x
2026-07-17 21:17
ipkg-open.cgi
243
B
-rwxr-xr-x
2026-07-17 21:22
ipkg-tree.cgi
4
KB
-rwxr-xr-x
2026-07-17 21:22
ipkg_upgrade.cgi
937
B
-rwxr-xr-x
2026-07-17 21:22
list_pack.cgi
1.73
KB
-rwxr-xr-x
2026-07-17 21:22
log_parser.pl
1.34
KB
-rwxr-xr-x
2026-07-17 21:17
module.info
497
B
-rw-r--r--
2026-07-17 21:17
module.info.ar
0
B
-rw-r--r--
2026-07-17 21:17
module.info.ar.auto
170
B
-rw-r--r--
2026-07-17 21:17
module.info.bg
0
B
-rw-r--r--
2026-07-17 21:17
module.info.bg.auto
214
B
-rw-r--r--
2026-07-17 21:17
module.info.ca
116
B
-rw-r--r--
2026-07-17 21:17
module.info.ca.auto
21
B
-rw-r--r--
2026-07-17 21:17
module.info.cs
30
B
-rw-r--r--
2026-07-17 21:17
module.info.cs.auto
114
B
-rw-r--r--
2026-07-17 21:17
module.info.da
0
B
-rw-r--r--
2026-07-17 21:17
module.info.da.auto
124
B
-rw-r--r--
2026-07-17 21:17
module.info.de
106
B
-rw-r--r--
2026-07-17 21:17
module.info.de.auto
21
B
-rw-r--r--
2026-07-17 21:17
module.info.el
0
B
-rw-r--r--
2026-07-17 21:17
module.info.el.auto
220
B
-rw-r--r--
2026-07-17 21:17
module.info.es
29
B
-rw-r--r--
2026-07-17 21:17
module.info.es.auto
106
B
-rw-r--r--
2026-07-17 21:17
module.info.eu
0
B
-rw-r--r--
2026-07-17 21:17
module.info.eu.auto
129
B
-rw-r--r--
2026-07-17 21:17
module.info.fa
0
B
-rw-r--r--
2026-07-17 21:17
module.info.fa.auto
215
B
-rw-r--r--
2026-07-17 21:17
module.info.fi
0
B
-rw-r--r--
2026-07-17 21:17
module.info.fi.auto
130
B
-rw-r--r--
2026-07-17 21:17
module.info.fr
29
B
-rw-r--r--
2026-07-17 21:17
module.info.fr.auto
117
B
-rw-r--r--
2026-07-17 21:17
module.info.hr
0
B
-rw-r--r--
2026-07-17 21:17
module.info.hr.auto
138
B
-rw-r--r--
2026-07-17 21:17
module.info.hu
38
B
-rw-r--r--
2026-07-17 21:17
module.info.hu.auto
108
B
-rw-r--r--
2026-07-17 21:17
module.info.it
0
B
-rw-r--r--
2026-07-17 21:17
module.info.it.auto
134
B
-rw-r--r--
2026-07-17 21:17
module.info.ja
43
B
-rw-r--r--
2026-07-17 21:17
module.info.ja.auto
157
B
-rw-r--r--
2026-07-17 21:17
module.info.ko
34
B
-rw-r--r--
2026-07-17 21:17
module.info.ko.auto
128
B
-rw-r--r--
2026-07-17 21:17
module.info.ms
104
B
-rw-r--r--
2026-07-17 21:17
module.info.ms.auto
18
B
-rw-r--r--
2026-07-17 21:17
module.info.nl
27
B
-rw-r--r--
2026-07-17 21:17
module.info.nl.auto
104
B
-rw-r--r--
2026-07-17 21:17
module.info.no
26
B
-rw-r--r--
2026-07-17 21:17
module.info.no.auto
107
B
-rw-r--r--
2026-07-17 21:17
module.info.pl
121
B
-rw-r--r--
2026-07-17 21:17
module.info.pl.auto
21
B
-rw-r--r--
2026-07-17 21:17
module.info.pt
28
B
-rw-r--r--
2026-07-17 21:17
module.info.pt.auto
102
B
-rw-r--r--
2026-07-17 21:17
module.info.pt_BR
0
B
-rw-r--r--
2026-07-17 21:17
module.info.pt_BR.auto
139
B
-rw-r--r--
2026-07-17 21:17
module.info.ru
30
B
-rw-r--r--
2026-07-17 21:17
module.info.ru.auto
205
B
-rw-r--r--
2026-07-17 21:17
module.info.sk
0
B
-rw-r--r--
2026-07-17 21:17
module.info.sk.auto
145
B
-rw-r--r--
2026-07-17 21:17
module.info.sv
21
B
-rw-r--r--
2026-07-17 21:17
module.info.sv.auto
100
B
-rw-r--r--
2026-07-17 21:17
module.info.tr
28
B
-rw-r--r--
2026-07-17 21:17
module.info.tr.auto
107
B
-rw-r--r--
2026-07-17 21:17
module.info.uk
0
B
-rw-r--r--
2026-07-17 21:17
module.info.uk.auto
202
B
-rw-r--r--
2026-07-17 21:17
module.info.zh
18
B
-rw-r--r--
2026-07-17 21:17
module.info.zh.auto
91
B
-rw-r--r--
2026-07-17 21:17
module.info.zh_TW
24
B
-rw-r--r--
2026-07-17 21:17
module.info.zh_TW.auto
97
B
-rw-r--r--
2026-07-17 21:17
msi-lib.pl
8.63
KB
-rwxr-xr-x
2026-07-17 21:17
open.cgi
238
B
-rwxr-xr-x
2026-07-17 21:22
openbsd-lib.pl
4.98
KB
-rwxr-xr-x
2026-07-17 21:17
pkg-lib.pl
2.49
KB
-rw-r--r--
2026-07-17 21:17
pkgadd-lib.pl
10.26
KB
-rwxr-xr-x
2026-07-17 21:17
pkgadd-no-ask
164
B
-rw-r--r--
2026-07-17 21:17
pkgsrc-lib.pl
7.41
KB
-rw-r--r--
2026-07-17 21:17
ports-lib.pl
3.46
KB
-rw-r--r--
2026-07-17 21:17
ports_upgrade.cgi
512
B
-rwxr-xr-x
2026-07-17 21:22
rhn-lib.pl
3.01
KB
-rwxr-xr-x
2026-07-17 21:17
rhn.cgi
1.3
KB
-rwxr-xr-x
2026-07-17 21:22
rhn_check.cgi
1.84
KB
-rwxr-xr-x
2026-07-17 21:22
rpm-lib.pl
13.23
KB
-rwxr-xr-x
2026-07-17 21:17
rpmfind.cgi
2.11
KB
-rwxr-xr-x
2026-07-17 21:22
search.cgi
2.29
KB
-rwxr-xr-x
2026-07-17 21:22
slackware-lib.pl
7.13
KB
-rwxr-xr-x
2026-07-17 21:17
software-lib.pl
9.15
KB
-rwxr-xr-x
2026-07-17 21:17
tree.cgi
3.79
KB
-rwxr-xr-x
2026-07-17 21:22
urpmi-lib.pl
2.13
KB
-rwxr-xr-x
2026-07-17 21:17
urpmi_upgrade.cgi
850
B
-rwxr-xr-x
2026-07-17 21:22
view.cgi
931
B
-rwxr-xr-x
2026-07-17 21:22
yum-lib.pl
13.46
KB
-rwxr-xr-x
2026-07-17 21:17
yum_upgrade.cgi
919
B
-rwxr-xr-x
2026-07-17 21:22
Save
Rename
# debian-lib.pl # Functions for debian DPKG package management sub list_package_system_commands { return ("dpkg"); } # list_packages([package]*) # Fills the array %packages with a list of all packages sub list_packages { local $i = 0; local $arg = @_ ? join(" ", map { quotemeta($_) } @_) : ""; %packages = ( ); &open_execute_command(PKGINFO, "COLUMNS=1024 dpkg --list $arg", 1, 1); while(<PKGINFO>) { next if (/^\|/ || /^\+/); if (/^[uirph]i..(\S+)\s+(\S+)\s+(.*)/) { $packages{$i,'name'} = $1; $packages{$i,'class'} = &alphabet_name($1); $packages{$i,'version'} = $2; $packages{$i,'desc'} = $3; if ($packages{$i,'version'} =~ /^(\d+):(.*)$/) { $packages{$i,'epoch'} = $1; $packages{$i,'version'} = $2; } if ($packages{$i,'name'} =~ /^(\S+):(\S+)$/) { $packages{$i,'name'} = $1; $packages{$i,'arch'} = $2; } if ($packages{$i,'desc'} =~ /^(all|amd64|x86|arm)\s+(\S.*)/) { $packages{$i,'arch'} = $1; $packages{$i,'desc'} = $2; } $i++; } } close(PKGINFO); return $i; } sub alphabet_name { return lc($_[0]) =~ /^[a-e]/ ? "A-E" : lc($_[0]) =~ /^[f-j]/ ? "F-J" : lc($_[0]) =~ /^[k-o]/ ? "K-O" : lc($_[0]) =~ /^[p-t]/ ? "P-T" : lc($_[0]) =~ /^[u-z]/ ? "U-Z" : "Other"; } # package_info(package, [version]) # Returns an array of package information in the order # name, class, description, arch, version, vendor, installtime sub package_info { local ($pkg, $ver) = @_; local $qm = quotemeta($pkg); # First check if it is really installed, and not just known to the package # system in some way local $out = &backquote_command("dpkg --list $qm 2>&1", 1); local @lines = split(/\r?\n/, $out); if ($lines[$#lines] !~ /^.[ih]/) { return ( ); } # Get full status local $out; if (&has_command("apt-cache")) { $qm .= "=*".quotemeta($ver) if ($ver); $out = &backquote_command("apt-cache show $qm 2>&1", 1); $out =~ s/[\0-\177]*\r?\n\r?\n(Package:)/\\1/; # remove available ver } else { $out = &backquote_command("dpkg --print-avail $qm 2>&1", 1); } return () if ($? || $out =~ /Package .* is not available/i); # Set name and class local @rv = ( $_[0], &alphabet_name($_[0]) ); # Get description push(@rv, $out =~ /Description(-en)?:\s+((.*\n)(\s+.*\n)*)/i ? $2 : $text{'debian_unknown'}); # Get architecture push(@rv, $out =~ /Architecture:\s+(\S+)/i ? $1 : $text{'debian_unknown'}); my $arch = $1; # Get version push(@rv, $out =~ /Version:\s+(\S+)/i ? $1 : $text{'debian_unknown'}); # Get maintainer push(@rv, $out =~ /Maintainer:\s+(.*)/i ? &html_escape($1) : $text{'debian_unknown'}); # Get install time from the package info file my ($path) = grep { -e $_ } $arch ? ("/var/lib/dpkg/info/$pkg:$arch.list", "/var/lib/dpkg/info/$pkg.list") : ("/var/lib/dpkg/info/$pkg.list"); # prefer multi-arch my $inst_epoch = $path ? (stat($path))[9] : undef; push(@rv, $inst_epoch ? &make_date($inst_epoch) : undef); # Get homepage push(@rv, $out =~ /Homepage:\s+(.*)/i ? $1 : undef); # Return info return @rv; } # virtual_package_info(package) # Returns an array of package information for a virtual package, usually called # if "package_info" returns nothing. sub virtual_package_info { my ($pkg) = @_; my $qpkg = quotemeta($pkg); my $apt_cache_cmd = &has_command("apt-cache"); return ( ) if (!$apt_cache_cmd); my $out = &backquote_command("$apt_cache_cmd showpkg $qpkg 2>&1", 1); # Get the package that provides this virtual package my ($vpkg); if ($out =~ /Reverse Provides:\s*(\S+\s+\S+)/) { my ($rpkg, $rver) = split(/\s+/, $1, 2); $vpkg = $rpkg; $qvpkg = quotemeta($vpkg)."=".quotemeta($rver); } return ( ) if (!$vpkg); # Get full status $out = &backquote_command("$apt_cache_cmd show $qvpkg 2>&1", 1); $out =~ s/[\0-\177]*\r?\n\r?\n(Package:)/\\1/; # remove available ver return () if ($? || $out =~ /Package .* is not available/i); local @rv = ( $vpkg, &alphabet_name($vpkg) ); push(@rv, $out =~ /Description(-en)?:\s+((.*\n)(\s+.*\n)*)/i ? $2 : $text{'debian_unknown'}); push(@rv, $out =~ /Architecture:\s+(\S+)/i ? $1 : $text{'debian_unknown'}); push(@rv, $out =~ /Version:\s+(\S+)/i ? $1 : $text{'debian_unknown'}); push(@rv, $out =~ /Maintainer:\s+(.*)/i ? &html_escape($1) : $text{'debian_unknown'}); push(@rv, $text{'debian_unknown'}); return @rv; } # check_files(package) # Fills in the %files array with information about the files belonging # to some package. Values in %files are path type user group mode size error sub check_files { local $i = 0; local $file; local $qm = quotemeta($_[0]); &open_execute_command(PKGINFO, "dpkg --listfiles $qm", 1, 1); while($file = <PKGINFO>) { $file =~ s/\r|\n//g; next if ($file !~ /^\/[^\.]/); local @st = stat($file); $files{$i,'path'} = $file; $files{$i,'type'} = -l $file ? 3 : -d $file ? 1 : 0; $files{$i,'user'} = getpwuid($st[4]); $files{$i,'group'} = getgrgid($st[5]); $files{$i,'mode'} = sprintf "%o", $st[2] & 07777; $files{$i,'size'} = $st[7]; $files{$i,'link'} = readlink($file); $i++; } return $i; } # package_files(package) # Returns a list of all files in some package sub package_files { local ($pkg) = @_; local $qn = quotemeta($pkg); local @rv; &open_execute_command(RPM, "dpkg --listfiles $qn", 1, 1); while(<RPM>) { s/\r|\n//g; push(@rv, $_); } close(RPM); return @rv; } # installed_file(file) # Given a filename, fills %file with details of the given file and returns 1. # If the file is not known to the package system, returns 0 # Usable values in %file are path type user group mode size packages sub installed_file { local $qm = quotemeta($_[0]); local $out = &backquote_command("dpkg --search $qm 2>&1", 1); return 0 if ($out =~ /not\s+found|no\s+path\s+found/i); $out =~ s/:\s+\S+\n$//; local @pkgin = split(/[\s,]+/, $out); local $real = &translate_filename($_[0]); local @st = stat($real); $file{'path'} = $_[0]; $file{'type'} = -l $real ? 3 : -d $real ? 1 : 0; $file{'user'} = getpwuid($st[4]); $file{'group'} = getgrgid($st[5]); $file{'mode'} = sprintf "%o", $st[2] & 07777; $file{'size'} = $st[7]; $file{'link'} = readlink($real); $file{'packages'} = join(" ", @pkgin); return 1; } # is_package(file) sub is_package { local $qm = quotemeta($_[0]); local $out = &backquote_command("dpkg --info $qm 2>&1", 1); return $? || $out !~ /Package:/ ? 0 : 1; } # file_packages(file) # Returns a list of all packages in the given file, in the form # package description sub file_packages { local $qm = quotemeta($_[0]); local $out = &backquote_command("dpkg --info $qm 2>&1", 1); local $name; if ($out =~ /Package:\s+(\S+)/i && ($name=$1) && $out =~ /Description:\s+(.*)/i) { return ( "$name $1" ); } return (); } # install_options(file, package) # Outputs HTML for choosing install options sub install_options { print &ui_table_row($text{'debian_depends'}, &ui_yesno_radio("depends", 0)); print &ui_table_row($text{'debian_conflicts'}, &ui_yesno_radio("conflicts", 0)); print &ui_table_row($text{'debian_overwrite'}, &ui_yesno_radio("overwrite", 0)); print &ui_table_row($text{'debian_downgrade'}, &ui_yesno_radio("downgrade", 0)); } # install_package(file, package) # Installs the package in the given file, with options from %in sub install_package { local $in = $_[2] ? $_[2] : \%in; local $args = ($in->{'depends'} ? " --force-depends" : ""). ($in->{'conflicts'} ? " --force-conflicts" : ""). ($in->{'overwrite'} ? " --force-overwrite" : ""). ($in->{'downgrade'} ? " --force-downgrade" : ""); local $qm = quotemeta($_[0]); $ENV{'UCF_FORCE_CONFFOLD'} = 'YES'; $ENV{'DEBIAN_FRONTEND'} = 'noninteractive'; local $out = &backquote_logged("dpkg --install $args $qm 2>&1 </dev/null"); if ($?) { return "<pre>$out</pre>"; } return undef; } # delete_options(package) # Outputs HTML for package uninstall options sub delete_options { print "<b>$text{'delete_purge'}</b>\n"; print &ui_yesno_radio("purge", 0),"<br>\n"; if ($update_system eq "apt") { print "<b>$text{'delete_depstoo'}</b>\n"; print &ui_yesno_radio("depstoo", 0),"<br>\n"; } } # delete_package(package, [&options], version) # Totally remove some package sub delete_package { local $qm = quotemeta($_[0]); $ENV{'DEBIAN_FRONTEND'} = 'noninteractive'; local $out; if ($_[1]->{'depstoo'}) { # Use apt-get local $flag = $_[1]->{'purge'} ? "--purge" : ""; $out = &backquote_logged("apt-get -y autoremove $flag $qm 2>&1 </dev/null"); } else { # Use dpkg command local $flag = $_[1]->{'purge'} ? "--purge" : "--remove"; $out = &backquote_logged("dpkg $flag $qm 2>&1 </dev/null"); } if ($? || $out =~ /which isn.t installed/i) { return "<pre>$out</pre>"; } return undef; } # package_dependencies(name, [version]) # Returns a list of packages that this one depends on, as hash refs sub package_dependencies { my ($pkg, $ver) = @_; my $out = &backquote_command( "apt-cache show ".quotemeta($pkg)." 2>/dev/null"); return () if ($?); $out =~ /\nDepends:\s+(.*)/ || return (); my @rv; foreach my $w (split(/,\s+/, $1)) { if ($w =~ /^(\S+)\s+\(([<>=]+)\s+(\S+)\)/) { # Depends on a specific version push(@rv, { 'package' => $1, 'compare' => $2, 'version' => $3 }); } elsif ($w =~ /^(\S+)$/) { # Depends on some package push(@rv, { 'package' => $1 }); } elsif ($w =~ /^(\S+)\s+\|/) { # Depends on one of several packages, but just show the first push(@rv, { 'package' => $1 }); } } return @rv; } sub package_system { return $text{'debian_manager'}; } sub package_help { return "dpkg"; } 1;