tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkgsrcCon: what to steal from *BSD ports
On Thu, Jun 10, 2010 at 01:06:02PM +0200, Thomas Klausner wrote:
> Some features I found worth imitating:
> . OpenBSD "pkg_add -u"
> Upgrades all installed packages based on binary packages; leaves
> libraries lying around in separate packages if they are still
> needed; automatically wanders tree in proper order; removes
> library-packages when they are not needed any longer.
> (OpenBSD, however, doesn't have up-to-date packages currently for the
> last release, only for -current.)
>
> NetBSD: pkgin is probably on the way to get there.
Beware that this was remarkably complicated to get working in all
cases in an efficient manner.
If you are not really careful, it's very easy to have the tools churn
uselessly for an hour once you reach a decent number of installed packages
(500 or more), regardless of the language used.
Proper library handling requires that you be able to bump versions on all
shared libraries from the pkgsrc tree (as upstream frequently has no idea
what an ABI is).
I know that we had to revisit the way dependency information is stored:
there is a dependency tree in built packages, which is stored as shallow
information (pkg_add walks that tree to compute closures), and shared libraries
are special: each package is tied to the specific version of libraries it
was built against. pkg_add checks that all libraries are reachable (e.g.,
there's a package in the closure of dependencies that has the requested
library), and we use that extensively during updates.
The most bitching part was "tied updates", stuff like pgsql where you
have to update BOTH client AND server at the same time....
Well, since you saw jasper and landry and mbalmer, you probably know most
of that...
In my opinion, doing this at some point is mandatory. From my experience,
there are just lots and lots of details to get right you will only discover
as you explore the process.
Good luck.
Home |
Main Index |
Thread Index |
Old Index