]>
git.ipfire.org Git - 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 unless ( -e
"/var/ipfire/red/active" ) {
20 &Pakfire
::message
("PAKFIRE ERROR: You need to be online to run pakfire!");
24 ### Check if we are started by another name
26 if ( $0 =~ /pakfire-update$/ ) {
27 &Pakfire
::message
("CRON INFO: Running an update");
30 } elsif ( $0 =~ /pakfire-upgrade$/ ) {
31 &Pakfire
::message
("CRON INFO: Running an upgrade");
42 # Turn off interactive mode
43 $interactive = 0 if ("$_" eq "--non-interactive");
44 $interactive = 0 if ("$_" eq "-y");
46 # Turn off shell colors - Bad for displaying in webinterface
47 $Pakfire::enable_colors
= 0 if ("$_" eq "--no-colors");
51 if ("$ARGV[0]" eq "install") {
54 ### Make sure that the list is not outdated.
55 &Pakfire
::dbgetlist
("noforce");
57 open(FILE
, "<$Conf::dbdir/lists/packages_list.db");
70 foreach $pak (@ARGV) {
71 unless ("$pak" =~ "^-") {
72 $return = &Pakfire
::isinstalled
($pak);
74 &Pakfire
::message
("PAKFIRE INFO: $pak is already installed");
79 @templine = split(/;/,$_);
80 if ("$templine[0]" eq "$pak" ) {
83 @temp = &Pakfire
::resolvedeps
("$pak");
84 foreach $dep (@temp) {
85 push(@deps,$dep) if $dep;
86 push(@all,$dep) if $dep;
93 &Pakfire
::message
("");
94 &Pakfire
::message
("PAKFIRE WARN: The pak \"$pak\" is not known. Please try running \"pakfire update\".");
100 &Pakfire
::message
("PAKFIRE ERROR: No packages to install. Exiting...");
104 &Pakfire
::message
("");
105 &Pakfire
::message
("");
106 &Pakfire
::message
("PAKFIRE INFO: Packages to install:");
107 foreach $pak (sort @paks) {
108 my $size = &Pakfire
::getsize
("$pak");
109 $size = &Pakfire
::beautifysize
($size);
110 &Pakfire
::message
("PAKFIRE INFO: $pak \t - $size");
114 my %sort = map{ $_, 1 } @deps;
115 @deps = sort keys %sort;
116 &Pakfire
::message
("");
117 &Pakfire
::message
("PAKFIRE INFO: Packages to install for dependencies:");
119 foreach $dep (sort @deps) {
120 my $size = &Pakfire
::getsize
("$dep");
121 $size = &Pakfire
::beautifysize
($size);
122 &Pakfire
::message
("PAKFIRE INFO: $dep \t - $size");
126 foreach $pak (@all) {
127 $totalsize = ($totalsize + &Pakfire
::getsize
("$pak"));
129 $totalsize = &Pakfire
::beautifysize
($totalsize);
130 &Pakfire
::message
("");
131 &Pakfire
::message
("PAKFIRE INFO: Total size: \t ~ $totalsize");
132 &Pakfire
::message
("");
135 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
138 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
140 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
144 &Pakfire
::logger
("PAKFIRE INFO: Interaction skipped.");
147 my %sort = map{ $_, 1 } @all;
148 @all = sort keys %sort;
151 foreach $pak (sort @all) {
152 &Pakfire
::getpak
("$pak", "");
155 &Pakfire
::message
("");
157 foreach $pak (sort @all) {
158 &Pakfire
::setuppak
("$pak") if ($pak ne "");
161 } elsif ("$ARGV[0]" eq "remove") {
166 foreach $pak (@ARGV) {
167 unless ("$pak" =~ "^-") {
168 $return = &Pakfire
::isinstalled
($pak);
170 &Pakfire
::message
("PAKFIRE WARN: $pak is not installed");
178 &Pakfire
::message
("PAKFIRE ERROR: No packages to remove. Exiting...");
182 &Pakfire
::message
("");
183 &Pakfire
::message
("");
184 &Pakfire
::message
("PAKFIRE INFO: Packages to remove:");
185 foreach $pak (sort @paks) {
186 my $size = &Pakfire
::getsize
("$pak");
187 $size = &Pakfire
::beautifysize
($size);
188 &Pakfire
::message
("PAKFIRE INFO: $pak \t - $size");
192 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
195 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
197 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
202 foreach $pak (@paks) {
203 &Pakfire
::removepak
("$pak");
207 } elsif ("$ARGV[0]" eq "update") {
208 &Pakfire
::makeuuid
();
209 &Pakfire
::senduuid
();
210 &Pakfire
::getmirrors
();
211 &Pakfire
::dbgetlist
("force");
213 } elsif ("$ARGV[0]" eq "upgrade") {
214 my @upgradepaks = &Pakfire
::dblist
("upgrade", "noweb");
217 foreach (@upgradepaks) {
218 @temp = &Pakfire
::resolvedeps
("$_");
219 foreach (@temp) { push(@upgradepaks,$_) if $_; }
223 &Pakfire
::message
("");
224 &Pakfire
::message
("PAKFIRE UPGR: We are going to install all packages listed above.");
226 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
229 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
231 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
238 foreach (sort @upgradepaks) {
239 &Pakfire
::getpak
("$_", "");
242 foreach (sort @upgradepaks) {
243 &Pakfire
::upgradepak
("$_");
246 } elsif ("$ARGV[0]" eq "list") {
247 if ("$ARGV[1]" =~ /installed|notinstalled/) {
248 &Pakfire
::dblist
("$ARGV[1]", "noweb");
250 &Pakfire
::message
("PAKFIRE WARN: Not a known option $ARGV[1]") if ($ARGV[1]);
251 &Pakfire
::dblist
("all", "noweb");
254 } elsif ("$ARGV[0]" eq "resolvedeps") {
256 next if ("$_" eq "resolvedeps");
257 next if ("$_" =~ "^-");
258 &Pakfire
::resolvedeps
("$_");
264 &Pakfire
::logger
("PAKFIRE INFO: Pakfire has finished. Closing.");