]>
git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/pakfire/pakfire
3 require "/opt/pakfire/lib/functions.pl";
7 &Pakfire
::logger
("PAKFIRE INFO: IPFire Pakfire $Conf::version started!");
8 &Pakfire
::checkcryptodb
;
10 ### Check if we are running as root
12 my $user = qx(whoami
);
14 unless ( "$user" eq "root" ) {
15 &Pakfire
::message
("PAKFIRE ERROR: You must run pakfire as user root!");
19 ### Check if we are started by another name
21 if ( $0 =~ /pakfire-update$/ ) {
22 &Pakfire
::message
("CRON INFO: Running an update");
25 } elsif ( $0 =~ /pakfire-upgrade$/ ) {
26 &Pakfire
::message
("CRON INFO: Running an upgrade");
37 $interactive = 0 if ("$_" eq "--non-interactive");
38 $interactive = 0 if ("$_" eq "-y");
42 if ("$ARGV[0]" eq "install") {
45 ### Make sure that the list is not outdated.
46 &Pakfire
::dbgetlist
("noforce");
48 open(FILE
, "<$Conf::dbdir/lists/packages_list.db");
61 foreach $pak (@ARGV) {
62 unless ("$pak" =~ "^-") {
63 $return = &Pakfire
::isinstalled
($pak);
65 &Pakfire
::message
("PAKFIRE INFO: $pak is already installed");
70 @templine = split(/;/,$_);
71 if ("$templine[0]" eq "$pak" ) {
74 @temp = &Pakfire
::resolvedeps
("$pak");
75 foreach $dep (@temp) {
76 push(@deps,$dep) if $dep;
77 push(@all,$dep) if $dep;
84 &Pakfire
::message
("");
85 &Pakfire
::message
("PAKFIRE WARN: The pak \"$pak\" is not known. Please try running \"pakfire update\".");
91 &Pakfire
::message
("PAKFIRE ERROR: No packages to install. Exiting...");
95 &Pakfire
::message
("");
96 &Pakfire
::message
("");
97 &Pakfire
::message
("PAKFIRE INFO: Packages to install:");
98 foreach $pak (sort @paks) {
99 my $size = &Pakfire
::getsize
("$pak");
100 $size = &Pakfire
::beautifysize
($size);
101 &Pakfire
::message
("PAKFIRE INFO: $pak \t - $size");
105 my %sort = map{ $_, 1 } @deps;
106 @deps = sort keys %sort;
107 &Pakfire
::message
("");
108 &Pakfire
::message
("PAKFIRE INFO: Packages to install for dependencies:");
110 foreach $dep (sort @deps) {
111 my $size = &Pakfire
::getsize
("$dep");
112 $size = &Pakfire
::beautifysize
($size);
113 &Pakfire
::message
("PAKFIRE INFO: $dep \t - $size");
117 foreach $pak (@all) {
118 $totalsize = ($totalsize + &Pakfire
::getsize
("$pak"));
120 $totalsize = &Pakfire
::beautifysize
($totalsize);
121 &Pakfire
::message
("");
122 &Pakfire
::message
("PAKFIRE INFO: Total size: \t ~ $totalsize");
123 &Pakfire
::message
("");
126 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
129 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
131 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
135 &Pakfire
::logger
("PAKFIRE INFO: Interaction skipped.");
138 my %sort = map{ $_, 1 } @all;
139 @all = sort keys %sort;
142 foreach $pak (sort @all) {
143 &Pakfire
::getpak
("$pak", "");
146 &Pakfire
::message
("");
148 foreach $pak (sort @all) {
149 &Pakfire
::setuppak
("$pak") if ($pak ne "");
152 } elsif ("$ARGV[0]" eq "remove") {
158 foreach $pak (@ARGV) {
159 unless ("$pak" =~ "^-") {
160 $return = &Pakfire
::isinstalled
($pak);
162 &Pakfire
::message
("PAKFIRE WARN: $pak is not installed");
172 &Pakfire
::message
("PAKFIRE ERROR: No packages to remove. Exiting...");
176 &Pakfire
::message
("");
177 &Pakfire
::message
("");
178 &Pakfire
::message
("PAKFIRE INFO: Packages to remove:");
179 foreach $pak (sort @paks) {
180 my $size = &Pakfire
::getsize
("$pak");
181 $size = &Pakfire
::beautifysize
($size);
182 &Pakfire
::message
("PAKFIRE INFO: $pak \t - $size");
186 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
189 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
191 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
196 foreach $pak (@paks) {
197 &Pakfire
::removepak
("$pak");
201 } elsif ("$ARGV[0]" eq "update") {
202 my $force = "noforce";
203 &Pakfire
::makeuuid
();
204 &Pakfire
::senduuid
();
205 &Pakfire
::getmirrors
();
206 $force = "force" if ("$ARGV[1]" eq "--force");
207 &Pakfire
::dbgetlist
("$force");
210 } elsif ("$ARGV[0]" eq "upgrade") {
211 my @upgradepaks = &Pakfire
::dblist
("upgrade", "noweb");
214 foreach (@upgradepaks) {
215 @temp = &Pakfire
::resolvedeps
("$_");
216 foreach (@temp) { push(@upgradepaks,$_) if $_; }
220 &Pakfire
::message
("");
221 &Pakfire
::message
("PAKFIRE UPGR: We are going to install all packages listed above.");
223 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
226 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
228 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
235 foreach (sort @upgradepaks) {
236 &Pakfire
::getpak
("$_", "");
239 foreach (sort @upgradepaks) {
240 &Pakfire
::upgradepak
("$_");
243 } elsif ("$ARGV[0]" eq "list") {
244 &Pakfire
::dblist
("all", "noweb");
246 } elsif ("$ARGV[0]" eq "resolvedeps") {
248 next if ("$_" eq "resolvedeps");
249 &Pakfire
::resolvedeps
("$_");
255 &Pakfire
::logger
("PAKFIRE INFO: Pakfire has finished. Closing.");