]>
git.ipfire.org Git - ipfire-2.x.git/blob - src/pakfire/pakfire
3 require "/opt/pakfire/lib/functions.pl";
8 &Pakfire
::logger
("PAKFIRE INFO: IPFire Pakfire $Conf::version started!");
9 &Pakfire
::checkcryptodb
;
11 ### Check if we are running as root
13 my $user = qx(whoami
);
15 unless ( "$user" eq "root" ) {
16 &Pakfire
::message
("PAKFIRE ERROR: You must run pakfire as user root!");
20 unless ( -e
"/var/ipfire/red/active" ) {
21 &Pakfire
::message
("PAKFIRE ERROR: You need to be online to run pakfire!");
25 ### Check if we are started by another name
27 if ( $0 =~ /pakfire-update$/ ) {
28 &Pakfire
::message
("CRON INFO: Running an update");
31 } elsif ( $0 =~ /pakfire-upgrade$/ ) {
32 &Pakfire
::message
("CRON INFO: Running an upgrade");
43 # Turn off interactive mode
44 $interactive = 0 if ("$_" eq "--non-interactive");
45 $interactive = 0 if ("$_" eq "-y");
47 # Turn off shell colors - Bad for displaying in webinterface
48 $Pakfire::enable_colors
= 0 if ("$_" eq "--no-colors");
51 $force = "force" if ("$_" eq "-f" );
52 $force = "force" if ("$_" eq "--force" );
56 if ("$ARGV[0]" eq "install") {
59 ### Make sure that the list is not outdated.
60 &Pakfire
::dbgetlist
("noforce");
62 open(FILE
, "<$Conf::dbdir/lists/packages_list.db");
75 foreach $pak (@ARGV) {
76 unless ("$pak" =~ "^-") {
77 $return = &Pakfire
::isinstalled
($pak);
79 &Pakfire
::message
("PAKFIRE INFO: $pak is already installed");
84 @templine = split(/;/,$_);
85 if ("$templine[0]" eq "$pak" ) {
88 @temp = &Pakfire
::resolvedeps
("$pak");
89 foreach $dep (@temp) {
90 push(@deps,$dep) if $dep;
91 push(@all,$dep) if $dep;
98 &Pakfire
::message
("");
99 &Pakfire
::message
("PAKFIRE WARN: The pak \"$pak\" is not known. Please try running \"pakfire update\".");
105 &Pakfire
::message
("PAKFIRE ERROR: No packages to install. Exiting...");
109 &Pakfire
::message
("");
110 &Pakfire
::message
("");
111 &Pakfire
::message
("PAKFIRE INFO: Packages to install:");
112 foreach $pak (sort @paks) {
113 my $size = &Pakfire
::getsize
("$pak");
114 $size = &Pakfire
::beautifysize
($size);
115 &Pakfire
::message
("PAKFIRE INFO: $pak \t - $size");
119 my %sort = map{ $_, 1 } @deps;
120 @deps = sort keys %sort;
121 &Pakfire
::message
("");
122 &Pakfire
::message
("PAKFIRE INFO: Packages to install for dependencies:");
124 foreach $dep (sort @deps) {
125 my $size = &Pakfire
::getsize
("$dep");
126 $size = &Pakfire
::beautifysize
($size);
127 &Pakfire
::message
("PAKFIRE INFO: $dep \t - $size");
131 foreach $pak (@all) {
132 $totalsize = ($totalsize + &Pakfire
::getsize
("$pak"));
134 $totalsize = &Pakfire
::beautifysize
($totalsize);
135 &Pakfire
::message
("");
136 &Pakfire
::message
("PAKFIRE INFO: Total size: \t ~ $totalsize");
137 &Pakfire
::message
("");
140 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
143 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
145 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
149 &Pakfire
::logger
("PAKFIRE INFO: Interaction skipped.");
152 my %sort = map{ $_, 1 } @all;
153 @all = sort keys %sort;
156 foreach $pak (sort @all) {
157 &Pakfire
::getpak
("$pak", "");
160 &Pakfire
::message
("");
162 foreach $pak (sort @all) {
163 &Pakfire
::setuppak
("$pak") if ($pak ne "");
166 } elsif ("$ARGV[0]" eq "remove") {
171 foreach $pak (@ARGV) {
172 unless ("$pak" =~ "^-") {
173 $return = &Pakfire
::isinstalled
($pak);
175 &Pakfire
::message
("PAKFIRE WARN: $pak is not installed");
183 &Pakfire
::message
("PAKFIRE ERROR: No packages to remove. Exiting...");
187 &Pakfire
::message
("");
188 &Pakfire
::message
("");
189 &Pakfire
::message
("PAKFIRE INFO: Packages to remove:");
190 foreach $pak (sort @paks) {
191 my $size = &Pakfire
::getsize
("$pak");
192 $size = &Pakfire
::beautifysize
($size);
193 &Pakfire
::message
("PAKFIRE INFO: $pak \t - $size");
197 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
200 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
202 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
207 foreach $pak (@paks) {
208 &Pakfire
::removepak
("$pak");
212 } elsif ("$ARGV[0]" eq "update") {
213 &Pakfire
::makeuuid
();
214 &Pakfire
::senduuid
();
215 &Pakfire
::getmirrors
("$force");
216 &Pakfire
::dbgetlist
("$force");
217 &Pakfire
::getcoredb
("$force");
219 } elsif ("$ARGV[0]" eq "upgrade") {
220 &Pakfire
::upgradecore
();
221 my @upgradepaks = &Pakfire
::dblist
("upgrade", "noweb");
224 foreach (@upgradepaks) {
225 @temp = &Pakfire
::resolvedeps
("$_");
226 foreach (@temp) { push(@upgradepaks,$_) if $_; }
230 &Pakfire
::message
("");
231 &Pakfire
::message
("PAKFIRE UPGR: We are going to install all packages listed above.");
233 &Pakfire
::message
("PAKFIRE INFO: Is this okay? [y/N]");
236 &Pakfire
::logger
("PAKFIRE INFO: Answer: $ret");
238 &Pakfire
::message
("PAKFIRE ERROR: Installation aborted.");
245 foreach (sort @upgradepaks) {
246 &Pakfire
::getpak
("$_", "");
249 foreach (sort @upgradepaks) {
250 &Pakfire
::upgradepak
("$_");
253 } elsif ("$ARGV[0]" eq "list") {
254 if ("$ARGV[1]" =~ /installed|notinstalled/) {
255 &Pakfire
::dblist
("$ARGV[1]", "noweb");
257 &Pakfire
::message
("PAKFIRE WARN: Not a known option $ARGV[1]") if ($ARGV[1]);
258 &Pakfire
::dblist
("all", "noweb");
261 } elsif ("$ARGV[0]" eq "resolvedeps") {
263 next if ("$_" eq "resolvedeps");
264 next if ("$_" =~ "^-");
265 &Pakfire
::resolvedeps
("$_");
267 } elsif ("$ARGV[0]" eq "enable") {
268 if ("$ARGV[1]" eq "updates") {
269 system("ln -s ../../opt/pakfire/pakfire /etc/fcron.daily/pakfire-update");
270 elsif ("$ARGV[1]" eq "upgrades") {
271 system("ln -s ../../opt/pakfire/pakfire /etc/fcron.daily/pakfire-upgrade");
273 } elsif ("$ARGV[0]" eq "disable") {
274 if ("$ARGV[1]" eq "updates") {
275 system("rm -f /etc/fcron.daily/pakfire-update");
276 elsif ("$ARGV[1]" eq "upgrades") {
277 system("rm -f /etc/fcron.daily/pakfire-upgrade");
283 &Pakfire
::logger
("PAKFIRE INFO: Pakfire has finished. Closing.");