diff options
author | phk <phk@FreeBSD.org> | 2006-03-09 14:49:19 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2006-03-09 14:49:19 +0000 |
commit | 057f1af5e2367005b8d1ec5d034caaac920a9c2a (patch) | |
tree | 094ae69f20e97be63b1013de03bb155909a843b4 /usr.sbin/pkg_install | |
parent | 5a08101277f497a6a92cb123d1f1e2dbfb3abb22 (diff) | |
download | FreeBSD-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.h | 1 | ||||
-rw-r--r-- | usr.sbin/pkg_install/add/main.c | 7 | ||||
-rw-r--r-- | usr.sbin/pkg_install/add/perform.c | 6 | ||||
-rw-r--r-- | usr.sbin/pkg_install/add/pkg_add.1 | 4 |
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 |