[arch-dev-public] [RFC] another base cleanup
Hi guys, We have been discussing on IRC on and off that we should cleanup our base group. I thought I'd make a suggestion, this should clearly be improved upon, but my main goal is to get the discussion going on the ML. It seems to me that the base group has several purposes, so to make things simpler I suggest splitting it up into several sub-groups, each with a specific purpose. In the end we might want to merge some/all of these together, or even drop some of them completely, but I thought presenting it in this way made the most sense: We have: base: things needed by everyone everywhere, including in build chroots base-boot: needed to boot a standard arch system, but not needed if all you want is a build chroot base-network: needed to connect to the internet in order to upgrade our machine further, but most people probably want to select the tools they want themselves rather than installing this group. not needed in a build chroot base-storage: some of this might be needed to mount your filesystems at boot, depending on your setup. most people probably want to select the tools they need, rather than install the whole group. not needed in a build chroot base-utils: a sensible set of tools an admin would expect to have at his/hers disposal after installation, needed to configure the machine or install further packages. never needed on a machine/chroot where the admin won't log in to configure it drop: keep in core (for now, removing it would be a different discussion), but remove from base. this would be stuff that don't deserve being in base in its own right (but were pulled in as deps by others) or stuff that, while generally useful is not needed by everyone, and those who need it can install it. My initial suggestion (with some input from people on IRC): base === util-linux bash coreutils man-pages shadow glibc filesystem gettext licenses base-boot ====== initscripts linux grub (drop this in favor of syslinux? it would still be in core of course) syslinux (new) mkinitcpio (new) base-network ======== wpa_supplicant dhcpcd inetutils iputils iproute2 (new) ppp pcmciautils (not strictly speaking networking, but might be needed by some networking devices) base-storage ======== cryptsetup device-mapper e2fsprogs lvm2 xfsprogs jfsutigls reiserfsprogs mdadm base-utils ====== vi wget which procps-ng tar sed bzip2 diffutils file findutils gawk grep gzip less nano pacman psmisc dropped ===== pciutils (usb pulls in hwids) usbutils (same as pciutils) syslog-ng (not necessary on all systems) sysvinit (pulled in by initscripts, no use on its own) udev/systemd-tools (alreday gone, pulled in by systemd or initscripts) man-db (pulled in by man-pages, no use on its own) perl (not necessary on its own, pulled in by whatever needs it) cronie (not needed by everyone) heirloom-mailx (not needed by everyone) logrotate (not needed by everyone) gcc-libs (pulled in by whatever needs it, no good on its own) texinfo (no good on its own, whatever needs it should pull it in) sysfsutils (no good on its own, whatever needs it should pul it in) FYI, this is a link to a previous cleanup (sorry if I missed some other wikipages that I should have linked to): <https://wiki.archlinux.org/index.php/User:Allan/Base_Cleanup>. Cheers, Tom
Am 06.06.2012 13:55, schrieb Tom Gundersen:
base-network ======== wpa_supplicant dhcpcd inetutils iputils iproute2 (new) ppp pcmciautils (not strictly speaking networking, but might be needed by some networking devices)
iw crda netcfg (!)
On 06/06/12 21:55, Tom Gundersen wrote:
gcc-libs (pulled in by whatever needs it, no good on its own)
That will be a disaster... almost nothing has this specified as a dependency. Other than that, my main comment is that seems far to many groups. Saying that, I have never installed all of base apart from in my build chroots. Allan
On Jun 6, 2012 2:07 PM, "Allan McRae" <allan@archlinux.org> wrote:
On 06/06/12 21:55, Tom Gundersen wrote:
gcc-libs (pulled in by whatever needs it, no good on its own)
That will be a disaster... almost nothing has this specified as a dependency.
My bad, someone already told me this. Moved to 'base'.
Other than that, my main comment is that seems far to many groups.
Yeah, my intention was only to have these groups for the purpose of the discussion (so we know what we are talking about), not necessarily introduce new groups in our repos. I really wanted to avoid having the kernel in our build roots, but we might as well keep it in base and manually --ignore it in our scripts. How about this: we only keep one base group. It if the union of the categories in my first email (with the changes we agree on). We drop the packages that don't fit in any category, as already suggested. We could further drop all the packages from base-storage, and possibly base-network (maybe at the expense of adding netcfg to core?). Unless I'm missing something, that should not cause any dependency problems. For what it is worth, I'm not too concerned about saving space, but more about our base group making sense, and being simple to customize for those who want that (at the moment there are simply too many packages that one has to go through when picking what one wants). T
On Wed, Jun 06, 2012 at 01:55:30PM +0200, Tom Gundersen wrote:
Hi guys,
We have been discussing on IRC on and off that we should cleanup our base group. I thought I'd make a suggestion, this should clearly be improved upon, but my main goal is to get the discussion going on the ML.
It seems to me that the base group has several purposes, so to make things simpler I suggest splitting it up into several sub-groups, each with a specific purpose. In the end we might want to merge some/all of these together, or even drop some of them completely, but I thought presenting it in this way made the most sense:
I'm not sure I agree with your definition of "simpler" here... currently, you can install the 'base' group (bloated or not) to a chroot, and its bootable. With this proposed change, that won't be the case. In that regard, I'm somewhat against this. I've left some comments about the groups below, regardless.
We have:
base: things needed by everyone everywhere, including in build chroots base-boot: needed to boot a standard arch system, but not needed if all you want is a build chroot base-network: needed to connect to the internet in order to upgrade our machine further, but most people probably want to select the tools they want themselves rather than installing this group. not needed in a build chroot base-storage: some of this might be needed to mount your filesystems at boot, depending on your setup. most people probably want to select the tools they need, rather than install the whole group. not needed in a build chroot base-utils: a sensible set of tools an admin would expect to have at his/hers disposal after installation, needed to configure the machine or install further packages. never needed on a machine/chroot where the admin won't log in to configure it drop: keep in core (for now, removing it would be a different discussion), but remove from base. this would be stuff that don't deserve being in base in its own right (but were pulled in as deps by others) or stuff that, while generally useful is not needed by everyone, and those who need it can install it.
My initial suggestion (with some input from people on IRC):
base === util-linux bash coreutils man-pages shadow glibc filesystem gettext licenses
base-boot ====== initscripts linux
i would think this should be part of base.
grub (drop this in favor of syslinux? it would still be in core of course) syslinux (new) mkinitcpio (new)
base-network ======== wpa_supplicant dhcpcd inetutils iputils iproute2 (new) ppp pcmciautils (not strictly speaking networking, but might be needed by some networking devices)
base-storage ======== cryptsetup device-mapper e2fsprogs lvm2 xfsprogs jfsutils reiserfsprogs mdadm
+dmraid +btrfs-progs +nilfs-utils
base-utils ====== vi wget
drop. we have curl as a dependency of pacman.
which procps-ng tar sed bzip2 diffutils file findutils gawk grep gzip less nano pacman psmisc
dropped ===== pciutils (usb pulls in hwids) usbutils (same as pciutils) syslog-ng (not necessary on all systems) sysvinit (pulled in by initscripts, no use on its own) udev/systemd-tools (alreday gone, pulled in by systemd or initscripts) man-db (pulled in by man-pages, no use on its own) perl (not necessary on its own, pulled in by whatever needs it) cronie (not needed by everyone) heirloom-mailx (not needed by everyone) logrotate (not needed by everyone) gcc-libs (pulled in by whatever needs it, no good on its own) texinfo (no good on its own, whatever needs it should pull it in) sysfsutils (no good on its own, whatever needs it should pul it in)
FYI, this is a link to a previous cleanup (sorry if I missed some other wikipages that I should have linked to): <https://wiki.archlinux.org/index.php/User:Allan/Base_Cleanup>.
Cheers,
Tom
[2012-06-06 13:55:30 +0200] Tom Gundersen:
base: things needed by everyone everywhere, including in build chroots
base-boot: needed to boot a standard arch system, but not needed if all you want is a build chroot
base-network: needed to connect to the internet in order to upgrade our machine further, but most people probably want to select the tools they want themselves rather than installing this group. not needed in a build chroot
base-storage: some of this might be needed to mount your filesystems at boot, depending on your setup. most people probably want to select the tools they need, rather than install the whole group. not needed in a build chroot
base-utils: a sensible set of tools an admin would expect to have at his/hers disposal after installation, needed to configure the machine or install further packages. never needed on a machine/chroot where the admin won't log in to configure it
I support this; cleaning things up is always good. However, I'd like to note that it'll take great caution and gigantic rebuild lists to add explicit dependencies on all the standard tools that are proposed to be dropped (like sed, file, findutils, gawk, gzip); it's all for the better but still a heavy task. But if we choose to go ahead I'd be happy to help. If we want to keep the fragmentation to a minimum, we could merge base-network into base-storage (and call it base-io), or even merge both into base-utils, since what all those tools have in common is that they are meant to be cherry picked, but I really don't feel strongly about that either way. Oh, and:
jfsutigls
jfsutils, please. :) -- Gaetan
Am 06.06.2012 13:55, schrieb Tom Gundersen:
Hi guys,
We have been discussing on IRC on and off that we should cleanup our base group. I thought I'd make a suggestion, this should clearly be improved upon, but my main goal is to get the discussion going on the ML.
It seems to me that the base group has several purposes, so to make things simpler I suggest splitting it up into several sub-groups, each with a specific purpose. In the end we might want to merge some/all of these together, or even drop some of them completely, but I thought presenting it in this way made the most sense:
We have:
base: things needed by everyone everywhere, including in build chroots base-boot: needed to boot a standard arch system, but not needed if all you want is a build chroot base-network: needed to connect to the internet in order to upgrade our machine further, but most people probably want to select the tools they want themselves rather than installing this group. not needed in a build chroot base-storage: some of this might be needed to mount your filesystems at boot, depending on your setup. most people probably want to select the tools they need, rather than install the whole group. not needed in a build chroot base-utils: a sensible set of tools an admin would expect to have at his/hers disposal after installation, needed to configure the machine or install further packages. never needed on a machine/chroot where the admin won't log in to configure it drop: keep in core (for now, removing it would be a different discussion), but remove from base. this would be stuff that don't deserve being in base in its own right (but were pulled in as deps by others) or stuff that, while generally useful is not needed by everyone, and those who need it can install it.
My initial suggestion (with some input from people on IRC):
base === util-linux bash coreutils man-pages shadow glibc filesystem gettext licenses
base-boot ====== initscripts linux grub (drop this in favor of syslinux? it would still be in core of course) syslinux (new) mkinitcpio (new)
base-network ======== wpa_supplicant dhcpcd inetutils iputils iproute2 (new) ppp pcmciautils (not strictly speaking networking, but might be needed by some networking devices)
base-storage ======== cryptsetup device-mapper e2fsprogs lvm2 xfsprogs jfsutigls reiserfsprogs mdadm
base-utils ====== vi wget which procps-ng tar sed bzip2 diffutils file findutils gawk grep gzip less nano pacman psmisc
dropped ===== pciutils (usb pulls in hwids) usbutils (same as pciutils) syslog-ng (not necessary on all systems) sysvinit (pulled in by initscripts, no use on its own) udev/systemd-tools (alreday gone, pulled in by systemd or initscripts) man-db (pulled in by man-pages, no use on its own) perl (not necessary on its own, pulled in by whatever needs it) cronie (not needed by everyone) heirloom-mailx (not needed by everyone) logrotate (not needed by everyone) gcc-libs (pulled in by whatever needs it, no good on its own) texinfo (no good on its own, whatever needs it should pull it in) sysfsutils (no good on its own, whatever needs it should pul it in)
FYI, this is a link to a previous cleanup (sorry if I missed some other wikipages that I should have linked to): <https://wiki.archlinux.org/index.php/User:Allan/Base_Cleanup>.
Cheers,
Tom Well, I'm not sure if this would make life simpler, A current x86_64 base install is 119 packages with 450MB do you still want to fragment this?
greetings tpowa -- Tobias Powalowski Archlinux Developer & Package Maintainer (tpowa) http://www.archlinux.org tpowa@archlinux.org
You're leaving the KISS principle here. This won't make things simpler than they are right now for some years. Please keep our base and base-devel groups how they are. Skilled users are still allowed to disable unwanted packages at install process or any time later. There's no need to slack down Arch base groups any further. You won't gain much free disc space but handling dependencies would become hell. -Andy
On Wed, Jun 6, 2012 at 8:33 AM, Andreas Radke <andyrtr@archlinux.org> wrote:
You're leaving the KISS principle here. This won't make things simpler than they are right now for some years.
Please keep our base and base-devel groups how they are. Skilled users are still allowed to disable unwanted packages at install process or any time later.
There's no need to slack down Arch base groups any further. You won't gain much free disc space but handling dependencies would become hell.
As Allan indicated as well as Andy here, I'm definitely worried we are trading minimal space savings for a dependency disaster. Right now the base install "just works", and has all the tools you would expect it to have on a base Linux system while still being as lightweight as any Linux install out there. Moving things out of the "you should have these installed" group would require adding a lot of dependencies for things as simple as utilities used in install scripts, and we will definitely find ourselves in circular dependency hell which is something that should be avoided as much as possible. With this said, I have no problem at all with packages being categorized more- there is no reason iputils can't be in both the 'base' and 'base-network' groups. -Dan
On Wed, Jun 6, 2012 at 11:37 AM, Dan McGee <dpmcgee@gmail.com> wrote:
On Wed, Jun 6, 2012 at 8:33 AM, Andreas Radke <andyrtr@archlinux.org> wrote:
You're leaving the KISS principle here. This won't make things simpler than they are right now for some years.
Please keep our base and base-devel groups how they are. Skilled users are still allowed to disable unwanted packages at install process or any time later.
There's no need to slack down Arch base groups any further. You won't gain much free disc space but handling dependencies would become hell.
As Allan indicated as well as Andy here, I'm definitely worried we are trading minimal space savings for a dependency disaster. Right now the base install "just works", and has all the tools you would expect it to have on a base Linux system while still being as lightweight as any Linux install out there. Moving things out of the "you should have these installed" group would require adding a lot of dependencies for things as simple as utilities used in install scripts, and we will definitely find ourselves in circular dependency hell which is something that should be avoided as much as possible.
I agree.
With this said, I have no problem at all with packages being categorized more- there is no reason iputils can't be in both the 'base' and 'base-network' groups.
If I can expand on this idea, we could keep the current base group as-is (except perhaps without the base packages which are dependencies of other base package), but introduce sub-groups: base-essential (what is called base in the original email) base-boot base-network base-storage base-utils So we keep the current base group but each package in the base group now belongs to a second group. We still assume that the base group is installed so we don't break dependencies and users who don't care a bout a few unused package can still install the base packages with a 'pacman -S base'. However, users with non-regular setups (chroot, VM, etc) can use these new groups to install the base package they need/want, e.g. 'pacman -S base-essential base-utils'. That seem to accomplish what is intended here without risking breakage. As for the dropped list, I would remove the base packages which are dependencies of other base packages and keep the rest in base (and put them in base-utils group). Users can always trim it down as they like. I don't really agree on some package on that drop list like texinfo for example. I can't see all packages with texinfo files adding texinfo as a dependency or optional dependency. Eric
-Dan
I agree many/all packages you listed in base-storage, base-network, base-utils (and maybe some in base-boot, dunno) do not belong in base, but I don't understand why we should make new groups to categorize them so heavily. What we usually do with packages like this is put them in core, and remove them from base group, done.
Am 07.06.2012 09:47, schrieb Dieter Plaetinck:
I agree many/all packages you listed in base-storage, base-network, base-utils (and maybe some in base-boot, dunno) do not belong in base, but I don't understand why we should make new groups to categorize them so heavily. What we usually do with packages like this is put them in core, and remove them from base group, done. +1, no need for heavy categorization just remove from base
-- Tobias Powalowski Archlinux Developer & Package Maintainer (tpowa) http://www.archlinux.org tpowa@archlinux.org
participants (10)
-
Allan McRae
-
Andreas Radke
-
Dan McGee
-
Dave Reisner
-
Dieter Plaetinck
-
Eric Bélanger
-
Gaetan Bisson
-
Thomas Bächler
-
Tobias Powalowski
-
Tom Gundersen