Re: [CFT] packaging the base system with pkg(8)

From: Nathan Whitehorn <nwhitehorn_at_freebsd.org>
Date: Mon, 18 Apr 2016 17:09:14 -0700
On 04/18/16 14:29, Alfred Perlstein wrote:
> Guys please stop arguing about the number of packages.  The high 
> granularity is VERY useful!
>
> Managing large groups of small packages is much easier than just 
> having large packages.

I'm not so sure about these statements. Maintaining groups of packages 
can be easier, but it can be also be harder. The goal is to find the 
right level. And I haven't seen a case where an 800-packages level of 
granularity is helpful. Maybe you can suggest one? I can, however, see 
the reverse case, where it leads, in addition to system administration 
hassle, to a balkanization of the base system, the predictability of 
which is one of FreeBSD's greatest assets.

More granularity than we have is good (having the ability to strip debug 
information, profiling, sendmail, the toolchain, etc.) and it is going 
to be very nice to have that. But I can name of order 10 packages where 
that makes sense. I think we will learn to regret 800. Clearly you can 
have too few (one giant package called "FreeBSD 11" -- although this is 
a model that works for many organizations) and you can have too many 
(every file is its own package -- no one does this). I'm not sure where 
the optimum is, but this seems way too far in the direction of the latter.

> All this can be done by meta-packages which depend on larger package 
> groups.
>
> Later pkg can be augmented to "remove packages not explicitly 
> installed" which would remove leaf packages.
>
> Example: you installed "base-debug" which pulls in let's say 50 small 
> packages, later you want all of those removed, you can do something 
> like:  "pkg delete --leafs base-debug" which should delete 
> "base-debug" and any dangling packages it pulled in not required by 
> other pkgs.

But what benefit do you get from the sub-packages? Let's say you have a 
single package that is the debug files for one library. Why would you 
ever care about that specific package? I can see why you might want all 
the debug files as a separate thing, but this seems way too fine-grained 
to be useful.

Put another way, the base system for FreeBSD 11 (I grabbed a powerpc64 
distfile because I had it handy) has 11765 files in it, neglecting 
symlinks. Split into 755 packages, the average package then has just 15 
files in it. You are rapidly approaching pkg info resembling ls -R / at 
that point and managing the system at the individual file level, which 
totally defeats the concept of packaging things. If you remove files in 
var, share, etc, and /usr/include from that list (which include things 
like all the timezone files, which are hopefully packaged together, or 
all the man pages), this average is 2.1 files per package.

>
> Huge thanks to the team that implemented this!

Yes, of course. Please do not interpret my comments about the level of 
discretization of packages as in any way reflecting the project in 
general, which is broader than this issue. We need better tools than tar 
and patch to manage the system; using pkg is a huge step forward.
-Nathan

>
> thanks.
> -Alfred
>
> On 4/18/16 1:07 PM, Lev Serebryakov wrote:
>> On 18.04.2016 22:40, Glen Barber wrote:
>>
>>> This granularity allows easy removal of things that may not be wanted
>>> (such as *-debug*, *-profile*, etc.) on systems with little 
>>> storage.  On
>>> one of my testing systems, I removed the tests packages and all debug
>>> and profiling, and the number of base system packages is 383.
>>   IMHO, granularity like "all base debug", "all base profile" is enough
>> for this. Really, I hardly could imagine why I will need only 1 debug or
>> profile package, say, for csh. On resource-constrained systems NanoBSD
>> is much better anyway (for example, my typical NanoBSD installation is
>> 37MB base system, 12MB /boot and 10 packages), and on developer system
>> where you need profiled libraries it is Ok to install all of them and
>> don't think about 100 packages for them.
>>
>>   Idea of "Roles" from old FreeBSD installers looks much better. Again,
>> here are some "contrib" software which have one-to-one replacements in
>> ports, like sendmail, ssh/sshd, ntpd, but split all other
>> FreeBSD-specific code? Yes, debug. Yes, profile. Yes, static libraries.
>> Yes, lib32 on 64 bit system.
>>
>>    It seems that it is ideological ("holy war") discussion more than
>> technical one...
>>
>
Received on Mon Apr 18 2016 - 22:09:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:04 UTC