[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Recommends for metapackages

Noel David Torres Taño <envite@rolamasao.org> writes:

>> Yet, we try to not diverge much from upstream, and maintain a good
>> relationship with them. If they consider it core, so can we. Those who
>> want to hand-pick parts of a meta package, can do so, we do not forbid.
> If we want to be user friendly, it is not a matter of "we do not forbid", it 
> is a matter of "we make easy". Besides, low-level users will install 
> Recommends by default, so they will get the whole box anyway. But medium or 
> high level users may probably want N-M not to mess their network EVEN if they 
> want the whole gnome desktop set.
>> I do not see the problem: those who want the full platform, can get it
>> easily. Those who don't, and want to exclude some, they can do so easily
>> too. A bit more work, but hey, if you're going to cherry pick, that will
>> always involve more work.
>> The amount of extra work necessary is minimal though.
> Not so minimal if you want your gnome set to be up to date, including new 
> applications being installed.

It is very minimal. 5 minutes of work. Been there, done that, posted the
bulk of the solution, and a general outline of the rest of it to this
list, in this very thread, multiple times.

Please take some time to read it. But alas, I'll make it easy for you:

If you want to install a meta-package, but without one of its
dependencies, and want to keep up to date with it too, so you get all
the new stuff added to it, and you also want to be able to remove the
whole thing with one swift sweep, here's what you do:

- Grab the control file of the meta-package
  (~1 line in shell, use grep-aptavail)
- Filter out unwanted packages from depends
  (~5-6 lines in shell)
- Create a local package, under a different name, with the updated
  (~10-20 lines, use equivs)
=== 5 minutes so far ===
- Push it into a local repository
  (~2-3 lines, use whatever, reprepro, mini-dinstall, or cat <<EOF)
- Put the local repo in sources.list
- apt-get update & install your shiny new meta-package
- Hook all that into Apt::Update::Post-invoke

That's it. The whole thing is under a hundred lines, and easily doable
within half an hour (for the record, I implemented all of the above this
morning in 17 minutes while still half asleep).

If you want to be super-cool, create a sourcable config file that tells
the generator script what packages to filter out from which metas. Pack
it up, ship a deb, everyone's happy.

Even better, here's an alternative solution:

- Grab a list of unwanted packages
- Create a dummy package with an epoch of 99, using the same name the
  unwanted packages.
- Install them
- Use the meta-package unmodified

(Whole excercise doable in 10 minutes tops, including reading the equivs

All of that took a fraction of the time than arguing here on this list,
about things that can already be solved *conveniently* by anyone caring
enough, in multiple ways. Obviously, most people in this thread don't,
as we'd already have a packaged solution if that weren't the case.

And since noone seems to have cared enough to come up with a solution
that works for *everyone* (upstream, novice and advanced users alike,
and maintainers too), can we drop the subject now?

> What we should do is to allow TWO levels of cherry-picking: the one for 
> advanced users who want to individually select every package, and the other 
> for users who want the whole set without a specific, molesting package.

We already have the first, it's called installing by hand. The second
can easily be done, see above.

> If that package is not a true dependency of the core of the set,
> Recommends is more than justified.

Upstream considers it a dependency in this case, part of a
platform. If you don't want the full platform, don't install the full
one, select the pieces you need - it is that easy.

Similarly, if you don't want to install a full blown desktop system with
a GUI, you don't select the desktop task when installing Debian. If you
do want some little things later, you install those by hand.

In case of gnome, the package pulls together what upstream considers the
GNOME platform - it is that simple. If you don't need it all, don't
install it all. If you want to follow the platform, but skip parts of
it, I already presented two solutions above.

You're welcome.


Reply to: