summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pkg_install
diff options
context:
space:
mode:
authorkrion <krion@FreeBSD.org>2007-11-10 09:40:39 +0000
committerkrion <krion@FreeBSD.org>2007-11-10 09:40:39 +0000
commit2f2d57f5929b63ec4a6f50fe8e25891bda1f37b0 (patch)
tree9a6bf6a76416333e12264c41f6d11dd1c90a3010 /usr.sbin/pkg_install
parent852b0453f41ed1efb8ccc1f4d6e4096319bc9802 (diff)
downloadFreeBSD-src-2f2d57f5929b63ec4a6f50fe8e25891bda1f37b0.zip
FreeBSD-src-2f2d57f5929b63ec4a6f50fe8e25891bda1f37b0.tar.gz
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
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.c8
-rw-r--r--usr.sbin/pkg_install/add/perform.c6
-rw-r--r--usr.sbin/pkg_install/add/pkg_add.15
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 37c4ce4..f1607ee 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 30257df..6c2a7dd 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 2404e81..3b357fc 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 1e8ba7c..e20f224 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.
OpenPOWER on IntegriCloud