+sub install_package {
+ my $feed = shift;
+ my $name = shift;
+ my $force = shift;
+
+ my $select_feed = lookup_package($feed, $name);
+ unless ($select_feed) {
+ $installed_pkg{$name} and return 0;
+ $feed_vpackage->{$name} or warn "WARNING: No feed for package '$name' found\n";
+ return 0;
+ }
+
+ # switch to the metadata for the selected feed
+ get_feed($select_feed->[1]);
+ my $pkg = $feed_vpackage->{$name} or return 1;
+ return install_src($feed, $pkg->[0]{src}{name}, $force);
+}
+
+sub install_target_or_package {
+ my $feed = shift;
+ my $name = shift;
+ my $force = shift;
+
+ lookup_target($feed, $name) and do {
+ return install_target($feed, $name, $force);
+ };
+
+ lookup_src($feed, $name) and do {
+ return install_src($feed, $name, $force);
+ };
+
+ return install_package($feed, $name, $force);
+}
+