# yum-lib.pl # Functions for installing packages with yum if ($config{'yum_config'}) { $yum_config = $config{'yum_config'}; } elsif (&has_command("yum")) { $yum_config = "/etc/yum.conf"; } elsif (&has_command("dnf")) { $yum_config = "/etc/dnf/dnf.conf"; } $yum_command = &has_command("dnf") || &has_command("yum") || "yum"; $yum_repos_dir = "/etc/yum.repos.d"; sub list_update_system_commands { return ($yum_command); } # update_system_install([packages], [&in]) # Install some package with yum sub update_system_install { local $update = $_[0] || $in{'update'}; local $in = $_[1]; $update =~ s/\.\*/\*/g; local $enable; if ($in->{'enablerepo'}) { $enable = "enablerepo=".quotemeta($in->{'enablerepo'}); } local (@rv, @newpacks); # If there are multiple architectures to update for a package, split them out local @updates = split(/\s+/, $update); local @names = map { &append_architectures($_) } split(/\s+/, $update); if (@names == 1) { @names = ( $update ); } $update = join(" ", map { quotemeta($_) } @names); # Work out command to use - for DNF, upgrades need to use the update command local $cmd; if ($yum_command =~ /dnf$/) { local @pinfo = &package_info($updates[0]); if ($pinfo[0]) { $cmd = "update"; } else { $cmd = "install"; } } else { $cmd = "install"; } # Work out the command to run, which may enable some repos my $uicmd = "$yum_command $enable -y $cmd ".join(" ", @names); my $fullcmd = "$yum_command $enable -y $cmd $update"; foreach my $u (@updates) { my $repo = &update_system_repo($u); if ($repo) { $fullcmd = "$yum_command -y $cmd $repo ; $fullcmd"; } } print "<b>",&text('yum_install', "<tt>".&html_escape($uicmd)."</tt>"),"</b><p>\n"; print "<pre>"; &additional_log('exec', undef, $fullcmd); $SIG{'TERM'} = 'ignore'; # Installing webmin itself may kill this script &open_execute_command(CMD, "$fullcmd </dev/null", 2); while(<CMD>) { s/\r|\n//g; if (/^\[(update|install|deps):\s+(\S+)\s+/) { push(@rv, $2); } elsif (/^(Installed|Dependency Installed|Updated|Dependency Updated|Upgraded):\s*(.*)/) { # Line like : # Updated: # wbt-virtual-server-theme.x86 local @pkgs = split(/\s+/, $2); if (!@pkgs) { # Wrapped to next line(s) while(1) { local $pkgs = <CMD>; last if (!$pkgs); print &html_escape($pkgs); $pkgs =~ s/^\s+//; $pkgs =~ s/\s+$//; my @linepkgs = split(/\s+/, $_); last if (!@linepkgs); push(@pkgs, @linepkgs); } } foreach my $p (@pkgs) { if ($p !~ /:/ && $p =~ /^(\S+)\.(\S+)$/) { my $pname = $1; if ($p =~ /[^0-9\.\-\_i]/) { push(@rv, $pname); } } } } elsif (/^\s+(Updating|Installing|Upgrading)\s+:\s+(\S+)/) { # Line like : # Updating : wbt-virtual-server-theme 1/2 # or # Installing : 2:nmap-5.51-2.el6.i686 1/1 local $pkg = $2; $pkg =~ s/^\d://; # Strip epoch from front $pkg =~ s/\-\d.*$//; # Strip version number from end push(@rv, $pkg); } if (!/ETA/ && !/\%\s+done\s+\d+\/\d+\s*$/) { print &html_escape($_."\n"); } if ($update =~ /perl\(/ && /No\s+package\s+.*available/i) { $nopackage = 1; } } close(CMD); print "</pre>\n"; if ($? || $nopackage) { print "<b>$text{'yum_failed'}</b><p>\n"; return ( ); } else { print "<b>$text{'yum_ok'}</b><p>\n"; return &unique(@rv); } } # append_architectures(package) # Given a package name, if it has multiple architectures return the name with # each appended sub append_architectures { my ($name) = @_; local %packages; my $n = &list_packages($name); return ( $name ) if (!$n); my @rv; for(my $i=0; $i<$n; $i++) { if ($packages{$i,'arch'}) { push(@rv, $packages{$i,'name'}.".".$packages{$i,'arch'}); } else { push(@rv, $packages{$i,'name'}); } } @rv = &unique(@rv); return @rv; } # update_system_operations(packages) # Given a list of packages, returns a list containing packages that will # actually get installed, each of which is a hash ref with name and version. sub update_system_operations { my ($packages) = @_; my $temp = &transname(); &open_tempfile(SHELL, ">$temp", 0, 1); &print_tempfile(SHELL, "install $packages\n"); &print_tempfile(SHELL, "transaction solve\n"); &close_tempfile(SHELL); my @rv; open(SHELL, "$yum_command shell $temp |"); while(<SHELL>) { if (/Package\s+(\S+)\s+(\S+)\s+(set|will\s+be\s+an\s+update)/i) { my $pkg = { 'name' => $1, 'version' => $2 }; if ($pkg->{'name'} =~ s/\.([^\.]+)$//) { $pkg->{'arch'} = $1; } if ($pkg->{'version'} =~ s/^(\S+)://) { $pkg->{'epoch'} = $1; } push(@rv, $pkg); } } close(SHELL); &unlink_file($temp); return @rv; } # show_update_system_opts() # Returns HTML for enabling a repository, if any are disabled sub show_update_system_opts { local @pinfo = &package_info("yum"); if (&compare_versions($pinfo[4], "2.1.10") > 0) { local $conf = &get_yum_config(); local @ena; foreach my $r (@$conf) { if ($r->{'values'}->{'enabled'} eq '0') { push(@ena, $r->{'name'}); } } if (@ena) { return $text{'yum_enable'}." ". &ui_select("enablerepo", "", [ [ "", $text{'yum_none'} ], map { [ $_ ] } @ena ]); } } return undef; } # update_system_resolve(name) # Converts a standard package name like apache, sendmail or squid into # the name used by YUM. sub update_system_resolve { local ($name) = @_; local $maria = $gconfig{'real_os_type'} =~ /CentOS|Redhat|Scientific/ && $gconfig{'real_os_version'} >= 7; return $name eq "apache" ? "httpd mod_.*" : $name eq "dhcpd" ? "dhcp" : $name eq "mysql" && $maria ? "mariadb mariadb-server mariadb-devel" : $name eq "mysql" && !$maria ? "mysql mysql-server mysql-devel" : $name eq "openssh" ? "openssh openssh-server" : $name eq "postgresql" ? "postgresql postgresql-libs postgresql-server" : $name eq "openldap" ? "openldap-servers openldap-clients" : $name eq "ldap" ? "nss-pam-ldapd pam_ldap nss_ldap" : $name eq "virtualmin-modules" ? "wbm-.*" : $name; } # update_system_repo(package) # Returns the extra repo package that needs to be installed first before # installing some package, if needed sub update_system_repo { local ($name) = @_; return $name eq "certbot" ? "epel-release" : undef; } # update_system_available() # Returns a list of package names and versions that are available from YUM sub update_system_available { local @rv; local %done; &open_execute_command(PKG, "$yum_command info", 1, 1); while(<PKG>) { s/\r|\n//g; if (/^Name\s*:\s*(\S+)/) { if ($done{$1}) { # Seen before .. update with newer info. This can happen # when YUM shows the installed version first. $pkg = $done{$1}; delete($pkg->{'epoch'}); delete($pkg->{'version'}); } else { # Start of a new package $pkg = { 'name' => $1 }; $done{$pkg->{'name'}} = $pkg; push(@rv, $pkg); } } elsif (/^Arch\s*:\s*(\S+)/) { $pkg->{'arch'} = $1; } elsif (/^Version\s*:\s*(\S+)/) { $pkg->{'version'} = $1; if ($pkg->{'version'} =~ s/^(\S+)://) { $pkg->{'epoch'} = $1; } } elsif (/^Release\s*:\s*(\S+)/) { $pkg->{'version'} .= "-".$1; } elsif (/^Repo\s*:\s*(\S+)/) { $pkg->{'source'} = $1; } elsif (/^Summary\s*:\s*(\S.*)/) { $pkg->{'desc'} = $1; } elsif (/^Epoch\s*:\s*(\S.*)/) { $pkg->{'epoch'} = $1; } } close(PKG); @rv = grep { $_->{'arch'} ne 'src' } @rv; &set_yum_security_field(\%done); return @rv; } # set_yum_security_field(&package-hash) # Set security field on packages which are security updates sub set_yum_security_field { local ($done) = @_; &open_execute_command(PKG, "$yum_command updateinfo list sec 2>/dev/null", 1, 1); while(<PKG>) { s/\r|\n//g; if (/^\S+\s+\S+\s+(\S+?)\-([0-9]\S+)\.([^\.]+)$/) { local ($name, $ver) = ($1, $2); if ($done->{$name}) { $done->{$name}->{'source'} ||= 'security'; $done->{$name}->{'security'} = 1; } } } close(PKG); &open_execute_command(PKG, "$yum_command list-sec 2>/dev/null", 1, 1); while(<PKG>) { s/\r|\n//g; next if (/^(Loaded|updateinfo)/); if (/^\S+\s+\S+\s+(\S+?)\-([0-9]\S+)\.([^\.]+)$/) { local ($name, $ver) = ($1, $2); if ($done->{$name}) { $done->{$name}->{'source'} ||= 'security'; $done->{$name}->{'security'} = 1; } } } close(PKG); } # update_system_updates() # Returns a list of package updates available from yum sub update_system_updates { local @rv; local %done; if ($yum_command =~ /dnf/) { &open_execute_command(PKG, "$yum_command check-update 2>/dev/null", 1, 1); } else { &open_execute_command(PKG, "$yum_command check-update 2>/dev/null | tr '\n' '#' | sed -e 's/# / /g' | tr '#' '\n'", 1, 1); } while(<PKG>) { s/\r|\n//g; if (/^(\S+)\.([^\.]+)\s+(\S+)\s+(\S+)/ && $2 ne 'src') { local $pkg = { 'name' => $1, 'arch' => $2, 'version' => $3, 'source' => $4 }; if ($pkg->{'version'} =~ s/^(\S+)://) { $pkg->{'epoch'} = $1; } $done{$pkg->{'name'}} = $pkg; push(@rv, $pkg); } } close(PKG); &set_yum_security_field(\%done); return @rv; } # get_yum_config() # Returns entries from the YUM config file, as a list of hash references sub get_yum_config { local @rv; local $sect; open(CONF, "<".$yum_config); while(<CONF>) { s/\r|\n//g; s/^\s*#.*$//; if (/^\s*\[(.*)\]/) { # Start of a section $sect = { 'name' => $1, 'values' => { } }; push(@rv, $sect); } elsif (/^\s*(\S+)\s*=\s*(.*)/ && $sect) { # Value in a section $sect->{'values'}->{lc($1)} = $2; } } close(CONF); return \@rv; } # list_package_repos() # Returns a list of configured repositories sub list_package_repos { my @rv; # Parse the raw repo files my $repo; foreach my $f (glob("$yum_repos_dir/*.repo")) { my $lref = &read_file_lines($f, 1); my $lnum = 0; foreach my $l (@$lref) { $l =~ s/#.*$//; if ($l =~ /^\[(\S+)\]/) { # Start of a new repo $repo = { 'file' => $f, 'line' => $lnum, 'eline' => $lnum, 'id' => $1, }; push(@rv, $repo); } elsif ($l =~ /^([^= ]+)=(.*)$/ && $repo) { # Line in a repo $repo->{'raw'}->{$1} = $2; $repo->{'eline'} = $lnum; } $lnum++; } } # Extract common information foreach my $repo (@rv) { my $name = $repo->{'raw'}->{'name'}; $name =~ s/\s*-.*//; $name =~ s/\s*\$[a-z0-9]+//gi; $repo->{'name'} = $repo->{'id'}." (".$name.")"; $repo->{'url'} = $repo->{'raw'}->{'baseurl'} || $repo->{'raw'}->{'mirrorlist'}; $repo->{'enabled'} = defined($repo->{'raw'}->{'enabled'}) ? $repo->{'raw'}->{'enabled'} : 1; } return @rv; } # create_repo_form() # Returns HTML for a package repository creation form sub create_repo_form { my $rv; $rv .= &ui_table_row($text{'yum_repo_id'}, &ui_textbox("id", undef, 20)); $rv .= &ui_table_row($text{'yum_repo_name'}, &ui_textbox("name", undef, 60)); $rv .= &ui_table_row($text{'yum_repo_url'}, &ui_textbox("url", undef, 60)); $rv .= &ui_table_row($text{'yum_repo_gpg'}, &ui_opt_textbox("gpg", undef, 60, $text{'yum_repo_none'})); return $rv; } # create_repo_parse(&in) # Parses input from create_repo_form, and returns either a new repo object or # an error string sub create_repo_parse { my ($in) = @_; my $repo = { 'raw' => { 'enabled' => 1 } }; # ID must be valid and unique $in->{'id'} =~ /^[a-z0-9\-\_]+$/i || return $text{'yum_repo_eid'}; my ($clash) = grep { $_->{'id'} eq $in->{'id'} } &list_package_repos(); $clash && return $text{'yum_repo_eidclash'}; $repo->{'id'} = $in->{'id'}; # Human-readable repo name $in->{'name'} =~ /\S/ || return $text{'yum_repo_ename'}; $repo->{'raw'}->{'name'} = $in->{'name'}; # Base URL $in->{'url'} =~ /^(http|https):/ || return $text{'yum_repo_eurl'}; $repo->{'raw'}->{'baseurl'} = $in->{'url'}; # GPG key file if (!$in->{'gpg_def'}) { -r $in->{'gpg'} || return $text{'yum_repo_egpg'}; $repo->{'raw'}->{'gpgcheck'} = 1; $repo->{'raw'}->{'gpgkey'} = 'file://'.$in->{'gpg'}; } return $repo; } # create_package_repo(&repo) # Creates a new repository from the given hash (returned by create_repo_parse) sub create_package_repo { my ($repo) = @_; my $file = "$yum_repos_dir/$repo->{'id'}.repo"; -r $file && return $text{'yum_repo_efile'}; &lock_file($file); my $lref = &read_file_lines($file); push(@$lref, "[$repo->{'id'}]"); foreach my $r (keys %{$repo->{'raw'}}) { push(@$lref, $r."=".$repo->{'raw'}->{$r}); } &flush_file_lines($file); &unlock_file($file); return undef; } # delete_package_repo(&repo) # Delete a repository from it's config file. Does not delete the file even if # empty, to prevent it from being re-created if it came from an RPM package. sub delete_package_repo { my ($repo) = @_; &lock_file($repo->{'file'}); my $lref = &read_file_lines($repo->{'file'}); splice(@$lref, $repo->{'line'}, $repo->{'eline'}-$repo->{'line'}+1); &flush_file_lines($repo->{'file'}); &unlock_file($repo->{'file'}); } # enable_package_repo(&repo, enable?) # Enable or disable a repository sub enable_package_repo { my ($repo, $enable) = @_; &lock_file($repo->{'file'}); my $lref = &read_file_lines($repo->{'file'}); my $e = "enabled=".($enable ? 1 : 0); if (defined($repo->{'raw'}->{'enabled'})) { # There's a line to update already for(my $i=$repo->{'line'}; $i<=$repo->{'eline'}; $i++) { if ($lref->[$i] =~ /^enabled=/) { $lref->[$i] = $e; last; } } } else { # Need to add a line splice(@$lref, $repo->{'eline'}, 0, $e); } &flush_file_lines($repo->{'file'}); &unlock_file($repo->{'file'}); } 1;
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 2.82 KB | 0644 |
|
aix-lib.pl | File | 19.2 KB | 0755 |
|
apt-lib.pl | File | 14.09 KB | 0755 |
|
apt_upgrade.cgi | File | 1.97 KB | 0755 |
|
cgi_args.pl | File | 524 B | 0755 |
|
close.cgi | File | 263 B | 0755 |
|
config-aix | File | 30 B | 0644 |
|
config-cobalt-linux | File | 30 B | 0644 |
|
config-coherent-linux | File | 30 B | 0644 |
|
config-corel-linux | File | 33 B | 0644 |
|
config-cygwin | File | 33 B | 0644 |
|
config-debian-linux | File | 51 B | 0644 |
|
config-freebsd | File | 54 B | 0644 |
|
config-freebsd-8.4-ALL | File | 52 B | 0644 |
|
config-gentoo-linux | File | 33 B | 0644 |
|
config-hpux | File | 31 B | 0644 |
|
config-mandrake-linux | File | 30 B | 0644 |
|
config-msc-linux | File | 30 B | 0644 |
|
config-netbsd | File | 34 B | 0644 |
|
config-open-linux | File | 30 B | 0644 |
|
config-openSUSE-Linux-15.0-ALL | File | 30 B | 0644 |
|
config-openbsd | File | 34 B | 0644 |
|
config-openmamba-linux | File | 48 B | 0644 |
|
config-openserver | File | 33 B | 0644 |
|
config-redhat-linux | File | 48 B | 0644 |
|
config-slackware-linux | File | 36 B | 0644 |
|
config-solaris | File | 33 B | 0644 |
|
config-suse-linux | File | 30 B | 0644 |
|
config-syno-linux | File | 50 B | 0644 |
|
config-trustix-linux | File | 30 B | 0644 |
|
config-turbo-linux | File | 30 B | 0644 |
|
config-united-linux | File | 30 B | 0644 |
|
config-unixware | File | 33 B | 0644 |
|
config-windows | File | 30 B | 0644 |
|
config.info | File | 511 B | 0644 |
|
config.info.ca | File | 554 B | 0644 |
|
config.info.cs | File | 372 B | 0644 |
|
config.info.de | File | 523 B | 0644 |
|
config.info.es | File | 320 B | 0644 |
|
config.info.fr | File | 135 B | 0644 |
|
config.info.ja | File | 428 B | 0644 |
|
config.info.ko | File | 409 B | 0644 |
|
config.info.ms | File | 411 B | 0644 |
|
config.info.nl | File | 415 B | 0644 |
|
config.info.no | File | 424 B | 0644 |
|
config.info.pl | File | 392 B | 0644 |
|
config.info.ru | File | 175 B | 0644 |
|
config.info.sv | File | 224 B | 0644 |
|
config.info.tr | File | 123 B | 0644 |
|
config.info.uk | File | 174 B | 0644 |
|
config.info.zh | File | 122 B | 0644 |
|
config.info.zh_TW | File | 125 B | 0644 |
|
csw-lib.pl | File | 2.69 KB | 0755 |
|
cygwin-lib.pl | File | 22.34 KB | 0755 |
|
debian-lib.pl | File | 6.67 KB | 0755 |
|
delete_file.cgi | File | 239 B | 0755 |
|
delete_pack.cgi | File | 1.46 KB | 0755 |
|
delete_packs.cgi | File | 1.85 KB | 0755 |
|
do_install.cgi | File | 2.67 KB | 0755 |
|
edit_pack.cgi | File | 1.13 KB | 0755 |
|
emerge-lib.pl | File | 7.65 KB | 0755 |
|
file_info.cgi | File | 2.09 KB | 0755 |
|
find.cgi | File | 1.63 KB | 0755 |
|
freebsd-lib.pl | File | 7.95 KB | 0755 |
|
hpux-lib.pl | File | 8.01 KB | 0755 |
|
index.cgi | File | 3 KB | 0755 |
|
install_pack.cgi | File | 4.71 KB | 0755 |
|
ipkg-close.cgi | File | 269 B | 0755 |
|
ipkg-edit_pack.cgi | File | 1.45 KB | 0755 |
|
ipkg-lib.pl | File | 7.78 KB | 0755 |
|
ipkg-open.cgi | File | 243 B | 0755 |
|
ipkg-tree.cgi | File | 4 KB | 0755 |
|
ipkg_upgrade.cgi | File | 926 B | 0755 |
|
list_pack.cgi | File | 1.85 KB | 0755 |
|
log_parser.pl | File | 1.34 KB | 0755 |
|
module.info | File | 484 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 127 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 170 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 216 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 214 B | 0644 |
|
module.info.ca | File | 116 B | 0644 |
|
module.info.ca.auto | File | 21 B | 0644 |
|
module.info.cs | File | 30 B | 0644 |
|
module.info.cs.auto | File | 114 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 124 B | 0644 |
|
module.info.de | File | 106 B | 0644 |
|
module.info.de.auto | File | 21 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 220 B | 0644 |
|
module.info.es | File | 29 B | 0644 |
|
module.info.es.auto | File | 106 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 129 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 215 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 130 B | 0644 |
|
module.info.fr | File | 29 B | 0644 |
|
module.info.fr.auto | File | 117 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 152 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 138 B | 0644 |
|
module.info.hu | File | 38 B | 0644 |
|
module.info.hu.auto | File | 108 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 134 B | 0644 |
|
module.info.ja | File | 43 B | 0644 |
|
module.info.ja.auto | File | 157 B | 0644 |
|
module.info.ko | File | 34 B | 0644 |
|
module.info.ko.auto | File | 128 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 162 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 151 B | 0644 |
|
module.info.ms | File | 104 B | 0644 |
|
module.info.ms.auto | File | 18 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 150 B | 0644 |
|
module.info.nl | File | 27 B | 0644 |
|
module.info.nl.auto | File | 104 B | 0644 |
|
module.info.no | File | 26 B | 0644 |
|
module.info.no.auto | File | 107 B | 0644 |
|
module.info.pl | File | 121 B | 0644 |
|
module.info.pl.auto | File | 21 B | 0644 |
|
module.info.pt | File | 28 B | 0644 |
|
module.info.pt.auto | File | 102 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 139 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 134 B | 0644 |
|
module.info.ru | File | 30 B | 0644 |
|
module.info.ru.auto | File | 205 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 145 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 132 B | 0644 |
|
module.info.sv | File | 21 B | 0644 |
|
module.info.sv.auto | File | 100 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 253 B | 0644 |
|
module.info.tr | File | 28 B | 0644 |
|
module.info.tr.auto | File | 107 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 202 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 208 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 144 B | 0644 |
|
module.info.zh | File | 18 B | 0644 |
|
module.info.zh.auto | File | 91 B | 0644 |
|
module.info.zh_TW | File | 24 B | 0644 |
|
module.info.zh_TW.auto | File | 97 B | 0644 |
|
msi-lib.pl | File | 8.45 KB | 0755 |
|
open.cgi | File | 238 B | 0755 |
|
openbsd-lib.pl | File | 4.72 KB | 0755 |
|
pkg-lib.pl | File | 2.5 KB | 0644 |
|
pkgadd-lib.pl | File | 9.97 KB | 0755 |
|
pkgadd-no-ask | File | 164 B | 0644 |
|
pkgsrc-lib.pl | File | 7.24 KB | 0644 |
|
ports-lib.pl | File | 3.49 KB | 0644 |
|
ports_upgrade.cgi | File | 501 B | 0755 |
|
rhn-lib.pl | File | 3.02 KB | 0755 |
|
rhn.cgi | File | 1.3 KB | 0755 |
|
rhn_check.cgi | File | 1.84 KB | 0755 |
|
rpm-lib.pl | File | 11.24 KB | 0755 |
|
rpmfind.cgi | File | 2.11 KB | 0755 |
|
search.cgi | File | 2.27 KB | 0755 |
|
slackware-lib.pl | File | 6.95 KB | 0755 |
|
software-lib.pl | File | 7.57 KB | 0755 |
|
tree.cgi | File | 3.79 KB | 0755 |
|
urpmi-lib.pl | File | 2.14 KB | 0755 |
|
urpmi_upgrade.cgi | File | 839 B | 0755 |
|
view.cgi | File | 931 B | 0755 |
|
yum-lib.pl | File | 13.06 KB | 0755 |
|
yum_upgrade.cgi | File | 908 B | 0755 |
|