summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pkg_install
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2006-03-09 14:49:19 +0000
committerphk <phk@FreeBSD.org>2006-03-09 14:49:19 +0000
commit057f1af5e2367005b8d1ec5d034caaac920a9c2a (patch)
tree094ae69f20e97be63b1013de03bb155909a843b4 /usr.sbin/pkg_install
parent5a08101277f497a6a92cb123d1f1e2dbfb3abb22 (diff)
downloadFreeBSD-src-057f1af5e2367005b8d1ec5d034caaac920a9c2a.zip
FreeBSD-src-057f1af5e2367005b8d1ec5d034caaac920a9c2a.tar.gz
Add -F option to not fail on already installed packages.
Submitted by: Eugene Grosbein <eugen@grosbein.pp.ru>
Diffstat (limited to 'usr.sbin/pkg_install')
-rw-r--r--usr.sbin/pkg_install/add/add.h1
-rw-r--r--usr.sbin/pkg_install/add/main.c7
-rw-r--r--usr.sbin/pkg_install/add/perform.c6
-rw-r--r--usr.sbin/pkg_install/add/pkg_add.14
4 files changed, 13 insertions, 5 deletions
diff --git a/usr.sbin/pkg_install/add/add.h b/usr.sbin/pkg_install/add/add.h
index 654a101..37c4ce4 100644
--- a/usr.sbin/pkg_install/add/add.h
+++ b/usr.sbin/pkg_install/add/add.h
@@ -29,6 +29,7 @@ extern char *Prefix;
extern Boolean PrefixRecursive;
extern Boolean NoInstall;
extern Boolean NoRecord;
+extern Boolean FailOnAlreadyInstalled;
extern Boolean KeepPackage;
extern char *Mode;
extern char *Owner;
diff --git a/usr.sbin/pkg_install/add/main.c b/usr.sbin/pkg_install/add/main.c
index 5f689bd..2d6f6ff 100644
--- a/usr.sbin/pkg_install/add/main.c
+++ b/usr.sbin/pkg_install/add/main.c
@@ -27,7 +27,7 @@ __FBSDID("$FreeBSD$");
#include "lib.h"
#include "add.h"
-static char Options[] = "hvIRfnrp:P:SMt:C:K";
+static char Options[] = "hvIRfFnrp:P:SMt:C:K";
char *Prefix = NULL;
Boolean PrefixRecursive = FALSE;
@@ -36,6 +36,7 @@ Boolean NoInstall = FALSE;
Boolean NoRecord = FALSE;
Boolean Remote = FALSE;
Boolean KeepPackage = FALSE;
+Boolean FailOnAlreadyInstalled = TRUE;
char *Mode = NULL;
char *Owner = NULL;
@@ -132,6 +133,10 @@ main(int argc, char **argv)
Force = TRUE;
break;
+ case 'F':
+ FailOnAlreadyInstalled = FALSE;
+ break;
+
case 'K':
KeepPackage = TRUE;
break;
diff --git a/usr.sbin/pkg_install/add/perform.c b/usr.sbin/pkg_install/add/perform.c
index 2050e51..2404e81 100644
--- a/usr.sbin/pkg_install/add/perform.c
+++ b/usr.sbin/pkg_install/add/perform.c
@@ -245,9 +245,9 @@ pkg_do(char *pkg)
*/
if ((isinstalledpkg(Plist.name) > 0 ||
matchbyorigin(Plist.origin, NULL) != NULL) && !Force) {
- warnx("package '%s' or its older version already installed",
- Plist.name);
- code = 1;
+ warnx("package '%s' or its older version already installed%s",
+ Plist.name, FailOnAlreadyInstalled ? "" : " (ignored)");
+ code = FailOnAlreadyInstalled != FALSE;
goto success; /* close enough for government work */
}
diff --git a/usr.sbin/pkg_install/add/pkg_add.1 b/usr.sbin/pkg_install/add/pkg_add.1
index 2ab6a2c..1e8ba7c 100644
--- a/usr.sbin/pkg_install/add/pkg_add.1
+++ b/usr.sbin/pkg_install/add/pkg_add.1
@@ -23,7 +23,7 @@
.Nd a utility for installing software package distributions
.Sh SYNOPSIS
.Nm
-.Op Fl vInfrRMSK
+.Op Fl vInfFrRMSK
.Op Fl t Ar template
.Op Fl p Ar prefix
.Op Fl P Ar prefix
@@ -109,6 +109,8 @@ Although
.Nm
will still try to find and auto-install missing prerequisite packages,
a failure to find one will not be fatal.
+.It Fl F
+Already installed packages are not an error.
.It Fl p Ar prefix
Set
.Ar prefix
OpenPOWER on IntegriCloud