Aaron J. Grier wrote: > On Wed, Dec 31, 2008 at 10:21:50AM -0800, Scott Francis wrote: >> sure, you _could_ do the OS as a collection of packages ... given that >> no other UNIX-like OS historically has done that, you could also >> adhere to the principle of least surprise and keep a clear segregation >> between core OS (kernel, base tools) and aftermarket packages. > > any examples of linux distributions in which segregation between "core > OS" and "aftermarket packages" is not an ephemeral illusion? > > I count 29 distinct RPM packages on my fedora machine for the contents > of /bin.
/bin (and /sbin), at least in the FHS universe, is just for commands necessary in single user mode when just the root filesystem is mounted. http://www.pathname.com/fhs/pub/fhs-2.3.html#BINESSENTIALUSERCOMMANDBINARIES For example... $ ldd /bin/ls librt.so.1 => /lib/librt.so.1 (0x40021000) libacl.so.1 => /lib/libacl.so.1 (0x40034000) libc.so.6 => /lib/libc.so.6 (0x4003b000) libpthread.so.0 => /lib/libpthread.so.0 (0x4016f000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) libattr.so.1 => /lib/libattr.so.1 (0x401c0000) ls is dynamically linked but it's all to /lib so that's fine. The intention is to keep the boot filesystem potentially as small as possible to run on small devices and so you can get the system moving even with a fried /usr partition. Of course, not everyone gets this right (Debian 3.1)... /bin/lspci: libpci.so.2 => /usr/lib/libpci.so.2 (0x40021000) libc.so.6 => /lib/libc.so.6 (0x40029000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) /sbin/discover: libdiscover.so.1 => /usr/lib/libdiscover.so.1 (0x40021000) libm.so.6 => /lib/libm.so.6 (0x40032000) libc.so.6 => /lib/libc.so.6 (0x40054000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) /sbin/fsck.cramfs: libz.so.1 => /usr/lib/libz.so.1 (0x40021000) libc.so.6 => /lib/libc.so.6 (0x40033000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) /sbin/mkfs.cramfs: libz.so.1 => /usr/lib/libz.so.1 (0x40021000) libc.so.6 => /lib/libc.so.6 (0x40033000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Whoopsie. I'm not sure where one draws the line between "core" and "aftermarket" packages, but what's in /bin and /sbin is a little bit too thin for me. (FWIW I count about 60 packages in /bin and /sbin on this Debian machine). bash bootpc chpax coreutils cpio dash debianutils dhcp-client discover1 dpkg dump e2fsprogs ed elvis-tiny flvtool2-ruby gradm grep grub gzip hdparm hostname ifrename ifupdown initscripts ipchains iproute iptables iputils-ping isapnptools kbd ksh libblkid1 libc6 libpam-modules lilo login makedev mdadm module-init-tools modutils mount nano net-tools nfs-common passwd pciutils portmap procps psmisc quota reiserfsprogs scsitools sed syslog-ng sysvinit tar tcsh udev update util-linux vlan zsh -- Whip me, beat me, make my code compatible with VMS!