Joerg Sonnenberger wrote:
The big question here is how to deal with packages that have missing dependencies. It is not possible to start open the stream from the remote side, figure out something is missing and start to install that. Consider the connection limit on ftp.netbsd.org for reasons. One way to greatly simplify the code is to just fetch the package to /var/tmp or whatever and install it afterwards like a local package. This does increase the temporary space used, but as the next step in the evolution will switch to inplace extraction, that is only temporary. It also makes it easy to provide a local cache directory.
Your plan as I understand it is:(1) Modify pkg_add(1) to use libfetch to fetch the remote binary package and store it locally, then install the local binary package. I'm not sure precisely what advantage using libfetch is over using ftp(1) if that's all that we're doing; could you explain?
(2) Modify pkg_add(1) to use libarchive to extract the local binary package directly into ${LOCALBASE} and ${PKG_DBDIR} instead of the staged installation via /var/tmp (as is currently done).
I think that sounds fine, as long as both parts are eventually done. Very often, the trade-off for disk space and bandwidth is biased toward "disk space is cheap", but I find that I usually fetch "remote" packages across my local network and really don't want the extra copies of packages everywhere.
Count this as a positive vote for your proposal. Cheers, -- Johnny C. Lam