]>
git.ipfire.org Git - people/teissler/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 $interactive = 0 if ("$_" eq "--non-interactive");
43 $interactive = 0 if ("$_" eq "-y");
47 if ("$ARGV[0]" eq "install") {
50 ### Make sure that the list is not outdated.
51 &Pakfire
::dbgetlist
("noforce");
53 open(FILE
, "<$Conf::dbdir/lists/packages_list.db");
66 foreach $pak (@ARGV) {
67 unless ("$pak" =~ "^-") {
68 $return = &Pakfire
::isinstalled
($pak);
70 &Pakfire
::message
("PAKFIRE INFO: $pak is already installed");
75 @templine = split(/;/,$_);
76 if ("$templine[0]" eq "$pak" ) {
79 @temp = &Pakfire
::resolvedeps
("$pak");
80 foreach $dep (@temp) {
81 push(@deps,$dep) if $dep;
82 push(@all,$dep) if $dep;
89 &Pakfire
::message
("");
90 &Pakfire
::message
("PAKFIRE WARN: The pak \"$pak\" is not known. Please try running \"pakfire update\".");
96 &Pakfire
::message
("PAKFIRE ERROR: No packages to install. Exiting...");
100 &Pakfire
::message
("");
101 &Pakfire
::message
("");
102 &Pakfire
::message
("PAKFIRE INFO: Packages to install:");
103 foreach $pak (sort @paks) {
104 my $size = &Pakfire
::getsize
("$pak");
105 $size = &Pakfire
::beautifysize
($size);
106 &Pakfire
::message
("PAKFIRE INFO: $pak \t - $size");
110 my %sort = map{ $_, 1 } @deps;
111 @deps = sort keys %sort;
112 &Pakfire
::message
("");
113 &Pakfire
::message
("PAKFIRE INFO: Packages to install for dependencies:");
115 foreach $dep (sort @deps) {
116 my $size = &Pakfire
::getsize
("$dep");
117 $size = &Pakfire
::beautifysize
($size);
118 &Pakfire
::message
("PAKFIRE INFO: $dep \t - $size");
122 foreach $pak (@all) {
123 $totalsize = ($totalsize + &Pakfire
::getsize
("$pak"));
125 $totalsize = &Pakfire
::beautifysize
($totalsize);
126 &Pakfire
::message
("");
127 &Pakfire
::message
("PAKFIRE INFO: Total size: \t ~ $totalsize");
128 &Pakfire
::message
("");
131 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
134 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
136 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
140 &Pakfire
::logger
("PAKFIRE INFO: Interaction skipped.");
143 my %sort = map{ $_, 1 } @all;
144 @all = sort keys %sort;
147 foreach $pak (sort @all) {
148 &Pakfire
::getpak
("$pak", "");
151 &Pakfire
::message
("");
153 foreach $pak (sort @all) {
154 &Pakfire
::setuppak
("$pak") if ($pak ne "");
157 } elsif ("$ARGV[0]" eq "remove") {
163 foreach $pak (@ARGV) {
164 unless ("$pak" =~ "^-") {
165 $return = &Pakfire
::isinstalled
($pak);
167 &Pakfire
::message
("PAKFIRE WARN: $pak is not installed");
177 &Pakfire
::message
("PAKFIRE ERROR: No packages to remove. Exiting...");
181 &Pakfire
::message
("");
182 &Pakfire
::message
("");
183 &Pakfire
::message
("PAKFIRE INFO: Packages to remove:");
184 foreach $pak (sort @paks) {
185 my $size = &Pakfire
::getsize
("$pak");
186 $size = &Pakfire
::beautifysize
($size);
187 &Pakfire
::message
("PAKFIRE INFO: $pak \t - $size");
191 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
194 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
196 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
201 foreach $pak (@paks) {
202 &Pakfire
::removepak
("$pak");
206 } elsif ("$ARGV[0]" eq "update") {
207 my $force = "noforce";
208 &Pakfire
::makeuuid
();
209 &Pakfire
::senduuid
();
210 &Pakfire
::getmirrors
();
211 $force = "force" if ("$ARGV[1]" eq "--force");
212 &Pakfire
::dbgetlist
("$force");
215 } elsif ("$ARGV[0]" eq "upgrade") {
216 my @upgradepaks = &Pakfire
::dblist
("upgrade", "noweb");
219 foreach (@upgradepaks) {
220 @temp = &Pakfire
::resolvedeps
("$_");
221 foreach (@temp) { push(@upgradepaks,$_) if $_; }
225 &Pakfire
::message
("");
226 &Pakfire
::message
("PAKFIRE UPGR: We are going to install all packages listed above.");
228 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
231 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
233 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
240 foreach (sort @upgradepaks) {
241 &Pakfire
::getpak
("$_", "");
244 foreach (sort @upgradepaks) {
245 &Pakfire
::upgradepak
("$_");
248 } elsif ("$ARGV[0]" eq "list") {
249 &Pakfire
::dblist
("all", "noweb");
251 } elsif ("$ARGV[0]" eq "resolvedeps") {
253 next if ("$_" eq "resolvedeps");
254 &Pakfire
::resolvedeps
("$_");
260 &Pakfire
::logger
("PAKFIRE INFO: Pakfire has finished. Closing.");