diff options
author | Kirill Ponomarev <krion@FreeBSD.org> | 2007-11-10 09:40:39 +0000 |
---|---|---|
committer | Kirill Ponomarev <krion@FreeBSD.org> | 2007-11-10 09:40:39 +0000 |
commit | 2cd24b447e19d6d3771d57fa83f397a81a0b6c5a (patch) | |
tree | 9a6bf6a76416333e12264c41f6d11dd1c90a3010 /usr.sbin/pkg_install | |
parent | 989cbe408e49c5df742e070c75da4ce5316902d1 (diff) |
Add -i option for package installation without fetching and
installing its dependencies.
PR: bin/117065
Submitted by: Vladimir Ermakov <samflanker@gmail.com>
MFC after: 14 days
Notes
Notes:
svn path=/head/; revision=173513
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 | 8 | ||||
-rw-r--r-- | usr.sbin/pkg_install/add/perform.c | 6 | ||||
-rw-r--r-- | usr.sbin/pkg_install/add/pkg_add.1 | 5 |
4 files changed, 16 insertions, 4 deletions
diff --git a/usr.sbin/pkg_install/add/add.h b/usr.sbin/pkg_install/add/add.h index 37c4ce4554ed..f1607ee3e36d 100644 --- a/usr.sbin/pkg_install/add/add.h +++ b/usr.sbin/pkg_install/add/add.h @@ -31,6 +31,7 @@ extern Boolean NoInstall; extern Boolean NoRecord; extern Boolean FailOnAlreadyInstalled; extern Boolean KeepPackage; +extern Boolean IgnoreDeps; extern char *Mode; extern char *Owner; extern char *Group; diff --git a/usr.sbin/pkg_install/add/main.c b/usr.sbin/pkg_install/add/main.c index 30257df08358..6c2a7ddd57e3 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[] = "hvIRfFnrp:P:SMt:C:K"; +static char Options[] = "hviIRfFnrp:P:SMt:C:K"; char *Prefix = NULL; Boolean PrefixRecursive = FALSE; @@ -37,6 +37,7 @@ Boolean NoRecord = FALSE; Boolean Remote = FALSE; Boolean KeepPackage = FALSE; Boolean FailOnAlreadyInstalled = TRUE; +Boolean IgnoreDeps = FALSE; char *Mode = NULL; char *Owner = NULL; @@ -167,6 +168,9 @@ main(int argc, char **argv) case 'C': Chroot = optarg; break; + case 'i': + IgnoreDeps = TRUE; + break; case 'h': case '?': @@ -322,7 +326,7 @@ static void usage() { fprintf(stderr, "%s\n%s\n", - "usage: pkg_add [-vInfFrRMSK] [-t template] [-p prefix] [-P prefix] [-C chrootdir]", + "usage: pkg_add [-viInfFrRMSK] [-t template] [-p prefix] [-P prefix] [-C chrootdir]", " pkg-name [pkg-name ...]"); exit(1); } diff --git a/usr.sbin/pkg_install/add/perform.c b/usr.sbin/pkg_install/add/perform.c index 2404e8186b49..3b357fcbbfac 100644 --- a/usr.sbin/pkg_install/add/perform.c +++ b/usr.sbin/pkg_install/add/perform.c @@ -252,6 +252,7 @@ pkg_do(char *pkg) } /* Now check the packing list for conflicts */ + if(!IgnoreDeps){ for (p = Plist.head; p != NULL; p = p->next) { if (p->type == PLIST_CONFLICTS) { int i; @@ -296,7 +297,7 @@ pkg_do(char *pkg) !(deporigin != NULL && matchbyorigin(deporigin, NULL) != NULL)) { char path[FILENAME_MAX], *cp = NULL; - if (!Fake) { + if (!Fake&&!IgnoreDeps) { char prefixArg[2 + MAXPATHLEN]; /* "-P" + Prefix */ if (PrefixRecursive) { strlcpy(prefixArg, "-P", sizeof(prefixArg)); @@ -368,6 +369,7 @@ pkg_do(char *pkg) else if (Verbose) printf(" - already installed.\n"); } + } if (code != 0) goto bomb; @@ -514,6 +516,7 @@ pkg_do(char *pkg) depnames[0] = p->name; depnames[1] = NULL; } + if(!IgnoreDeps){ for (i = 0; depnames[i] != NULL; i++) { sprintf(contents, "%s/%s/%s", LOG_DIR, depnames[i], REQUIRED_BY_FNAME); @@ -531,6 +534,7 @@ pkg_do(char *pkg) } } } + } if (Verbose) printf("Package %s registered in %s\n", Plist.name, LogDir); } diff --git a/usr.sbin/pkg_install/add/pkg_add.1 b/usr.sbin/pkg_install/add/pkg_add.1 index 1e8ba7c8d99c..e20f22403d5f 100644 --- a/usr.sbin/pkg_install/add/pkg_add.1 +++ b/usr.sbin/pkg_install/add/pkg_add.1 @@ -15,7 +15,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 9, 2006 +.Dd November 10, 2007 .Dt PKG_ADD 1 .Os .Sh NAME @@ -87,6 +87,9 @@ Turn on verbose output. Keep any downloaded package in .Ev PKGDIR if it is defined or in current directory by default. +.It Fl i +Install the package without fetching and installing +dependencies. .It Fl I If any installation scripts (pre-install or post-install) exist for a given package, do not execute them. |