Re: [pkg_add] PACKAGESITE weirdness - URL not correct for dependencies?
On Thursday 26 March 2009 21:46:07 L Campbell wrote: Okay, so apparently there's some serious weirdness in the logic in src/usr.sbin/pkg_install/lib/url.c, in fileGetURL. This function takes two parameters, base and spec, and has the following behavior -- snip behavior and patch Yes, it is a bit counter-intuitive. However it's documented in the pkg_add(1) manpage that PACKAGESITE should resolve to the full URL where packages can be found (even the trailing slash). I've found in practice, that it is the easiest to set your webroot below All/, so that All/foo-1.2.3.tbz resolves to the foo 1.2.3 package. Then also maintain the various categories links like devel/foo.tbz and as human use pkg_add like so: pkg_add -r devel/foo This will do the right thing(tm) and you don't have to look up/remember the version numbers as a bonus. -- Mel ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org
Re: [pkg_add] PACKAGESITE weirdness - URL not correct for dependencies?
On Sat, Mar 28, 2009 at 7:37 AM, Mel Flynn mel.flynn+fbsd.questi...@mailing.thruhere.net wrote: On Thursday 26 March 2009 21:46:07 L Campbell wrote: Okay, so apparently there's some serious weirdness in the logic in src/usr.sbin/pkg_install/lib/url.c, in fileGetURL. This function takes two parameters, base and spec, and has the following behavior -- snip behavior and patch Yes, it is a bit counter-intuitive. However it's documented in the pkg_add(1) manpage that PACKAGESITE should resolve to the full URL where packages can be found (even the trailing slash). The additional stipulation that any dependent packages must be in an ../All/ directory relative to the path of the initial package is an undocumented feature. It's a bit counter-intuitive, but once it works, it works. ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org
[pkg_add] PACKAGESITE weirdness - URL not correct for dependencies?
I'm running a bunch of jails and running the same set of ports between them. To save myself some CPU time, I've got one jail building packages for everything I need, then serving those packages out over HTTP to the rest of the jails. The package serving jail is at 10.0.0.4, and is serving packages out from it's HTTP root, such that requesting the following URLs properly fetch the desired packages: http://10.0.0.4/lighttpd-1.4.22.tbz http://10.0.0.4/pcre-7.8.tbz I set PACKAGESITE to 'http://10.0.0.4/'; when I attempt to install Lighttpd with pkg_add -rv, I get the following output (snipped to relevant portions): $ pkg_add -rv lighttpd-1.4.22 (..snip..) scheme: [http] user: [] password: [] host: [10.0.0.4] port: [0] document: [/lighttpd-1.4.22.tbz] (..fetches and installs lighttpd-1.4.22 properly..) Package 'lighttpd-1.4.22' depends on 'pcre-7.8' with 'devel/pcre' origin. scheme: [http] user: [] password: [] host: [All] port: [0] document: [/pcre-7.8.tbz] --- All:80 looking up All Error: FTP Unable to get http://All/pcre-7.8.tbz: No address record Somewhere along the process, something breaks and 'host' doesn't get set properly. I'm currently poking through the pkg_install code to figure out wtf is going on, but I figured I'd prod the lists to see if anyone else hit a similar problem (or knows what I'm doing wrong) since I'm not familiar with it. $ uname -a FreeBSD blah 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan 1 14:37:25 UTC 2009 r...@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 Thanks :3 ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org
Re: [pkg_add] PACKAGESITE weirdness - URL not correct for dependencies?
On Thu, Mar 26, 2009 at 3:37 PM, L Campbell ll...@virginia.edu wrote: blah Oh, and please CC me on any replies since I don't follow this list. ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org
Re: [pkg_add] PACKAGESITE weirdness - URL not correct for dependencies?
Okay, so apparently there's some serious weirdness in the logic in src/usr.sbin/pkg_install/lib/url.c, in fileGetURL. This function takes two parameters, base and spec, and has the following behavior -- * if spec is a valid URL, it's used unchanged as the path to the remote package. * if base is non-NULL, the last two '/'s are chopped off and All/ + package name + .tbz is used as the result. * if PKG_ADD_BASE is set in the environment, it's concatenated with the package name and .tbz When fileGetURL is called on the dependencies by pkg_do in add/perform.c, it always gets passed the remote URL of the parent package as the base and the package name as the spec, so the second branch is always taken. Unfortunately, this doesn't work with the PACKAGESITE code in add/main.c, because fileGetURL is expecting the base argument to be of the form http://host/directory/package.tbz;, as in www/lighttpd-1.4.22.tbz. The problem is, when using PACKAGESITE, the actual URL (in my case) is just http://host/lighttpd-1.4.22.tbz;, so that gets incorrectly chopped down to http:/ + Add/ + lighttpd-1.4.22.tbz. It works fine if your PACKAGESITE puts all the packages in the All/ subdirectory (as I think the official ones do), but at the very least, that's an undocumented constraint. My solution was to add another case into fileGetURL which gets overrides the three currently in there and is invoked if and only if PACKAGESITE is set in the environment. The following patch makes it work for me -- --- usr.sbin/pkg_install/lib/url.c.orig 2009-03-26 19:56:12.0 + +++ usr.sbin/pkg_install/lib/url.c 2009-03-26 20:41:44.0 + @@ -57,7 +57,21 @@ * to construct a composite one out of that and the basename we were * handed as a dependency. */ - if (base) { + if (getenv(PACKAGESITE)) { + if (strlcpy(fname, getenv(PACKAGESITE), sizeof(fname)) + = sizeof(fname)) { + return NULL; + } + if (strlcat(fname, spec, sizeof(fname)) + = sizeof(fname)) { + return NULL; + } + if (strlcat(fname, .tbz, sizeof(fname)) + = sizeof(fname)) { + return NULL; + } + } + else if (base) { strcpy(fname, base); /* * Advance back two slashes to get to the root of the package Though I think, in the long-run I'm just going to put all my packages in http://10.0.0.4/All/ and call it a day -- I hate maintaining a bunch of patches for stuff. :( ___ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to freebsd-questions-unsubscr...@freebsd.org