Bug 132682 - "minimal" install is over 500 MB
"minimal" install is over 500 MB
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: comps (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: David Cantrell
:
Depends On: 132239
Blocks:
  Show dependency treegraph
 
Reported: 2004-09-15 15:25 EDT by Daniel Reed
Modified: 2013-01-09 20:18 EST (History)
6 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2006-04-19 15:46:32 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Daniel Reed 2004-09-15 15:25:43 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2)
Gecko/20040809 Epiphany/1.3.8

Description of problem:
The "minimal" install of Fedora Core has been over 500 MB since at
least the Fedora Core 2 release. The bulk of this is not "essential"
or even imminently reasonable: One particular component, for example,
includes several dozens of megabytes of documentation outside of its
-devel package. Another component includes dozens to hundreds of
megabytes of localized strings (even if only en_US is selected for
installation in anaconda).

This may be best considered a tracker for individual problems that
unreasonably bloat the "minimal" distribution.
Comment 1 Bill Nottingham 2004-09-15 17:25:52 EDT
Can you dump the package list that ends up installed for such a
minimal install?
Comment 2 Bill Nottingham 2004-09-15 17:46:59 EDT
Note, if you want *truly* minimal, use kickstart with

%packages
@Core
Comment 3 Bill Nottingham 2004-09-15 18:11:13 EDT
The *biggest* way to get rid of some bloat is to drop redhat-lsb.

Of course, there are some interesting political ramifications of that.
Comment 4 Dan Hollis 2005-06-20 05:23:04 EDT
Here's a minimal FC4 install shoehorned into a 1gb compactflash:

acl-2.2.23-8
audit-libs-0.8.2-1
basesystem-8.0-5
bash-3.0-31
beecrypt-4.1.2-8
binutils-2.15.94.0.2.2-2
bzip2-1.0.2-16
bzip2-libs-1.0.2-16
checkpolicy-1.23.1-1
chkconfig-1.3.20-1
comps-4-0.20050606
coreutils-5.2.1-48
cpio-2.6-7
cracklib-2.8.2-1
cracklib-dicts-2.8.2-1
cyrus-sasl-2.1.20-5
cyrus-sasl-md5-2.1.20-5
db4-4.3.27-3
device-mapper-1.01.02-1.0
dhclient-3.0.2-12
dhcpv6_client-0.10-13
diffutils-2.8.1-15
e2fsprogs-1.37-4
elfutils-0.108-1
elfutils-libelf-0.108-1
ethtool-3-1
expat-1.95.8-6
fedora-logos-1.1.31-1
fedora-release-4-2
filesystem-2.3.4-1
findutils-4.2.20-1
gawk-3.1.4-5.2
gdbm-1.8.0-25
gettext-0.14.3-1
glib2-2.6.4-1
glibc-2.3.5-10
glibc-common-2.3.5-10
glibc-devel-2.3.5-10
glibc-headers-2.3.5-10
glibc-kernheaders-2.4-9.1.94
gpg-pubkey-4f2a6fd2-3f9d9d3b
grep-2.5.1-48
grub-0.95-13
gzip-1.3.5-6
hardlink-1.0-1.13
hotplug-2004_09_23-7
hwdata-0.158-1
info-4.8-4
initscripts-8.11.1-1
iproute-2.6.11-1
iptables-1.3.0-2
iptstate-1.4-1.1
iputils-20020927-22
kernel-2.6.11-1.1369_FC4
krb5-libs-1.4-3
ksh-20050202-1
less-382-7
libacl-2.2.23-8
libattr-2.4.16-5
libgcc-4.0.0-8
libselinux-1.23.10-2
libsepol-1.5.9-2
libstdc++-4.0.0-8
libtermcap-2.0.8-41
libuser-0.53.7-1
libxml2-2.6.19-1
libxml2-python-2.6.19-1
lockdev-1.0.1-7
lvm2-2.01.08-2.1
MAKEDEV-3.19-1
mingetty-1.07-5
mkinitrd-4.2.15-1
mktemp-1.5-23
module-init-tools-3.1-3
nano-1.3.5-0.20050302
ncurses-5.4-17
neon-0.24.7-6
net-tools-1.60-52
newt-0.51.6-7
ntsysv-1.3.20-1
openldap-2.2.23-5
openssh-4.0p1-3
openssh-clients-4.0p1-3
openssh-server-4.0p1-3
openssl-0.9.7f-7
pam-0.79-8
passwd-0.69-2
pcre-5.0-4
perl-5.8.6-15
perl-Filter-1.30-7
policycoreutils-1.23.10-2
popt-1.10.1-21
prelink-0.3.4-3
procps-3.2.5-6
psmisc-21.5-4
pyOpenSSL-0.6-1.p24.4
python-2.4.1-2
python-elementtree-1.2.6-4
python-sqlite-1.1.6-1
python-urlgrabber-2.9.6-1
readline-5.0-3
reiserfs-utils-3.6.19-2
rhnlib-1.8-6.p24.1
rootfiles-8.1-1
rpm-4.4.1-21
rpm-libs-4.4.1-21
rpm-python-4.4.1-21
sed-4.1.4-1
selinux-policy-targeted-1.23.16-6
setools-2.1.0-5
setup-2.5.44-1
shadow-utils-4.0.7-9
slang-1.4.9-17
specspo-9.0.92-1.3
sqlite-3.1.2-3
symlinks-1.2-24
sysklogd-1.4.1-30
SysVinit-2.85-39
tar-1.15.1-5
tcl-8.4.9-3
tcp_wrappers-7.6-39
tcsh-6.14-1
termcap-5.4-4
tmpwatch-2.9.3-1
tzdata-2005i-2
udev-058-1
usermode-1.80-1
util-linux-2.12p-9.5
vconfig-1.8-7
wget-1.9.1-22
yum-2.3.2-7
zlib-1.2.2.2-3
zlib-devel-1.2.2.2-3

with this packagelist, FC4 takes up 468456kb.

note that it was a real PITA to get FC4 to install into 1gb.

this minimal install is suitable for eg embedded diskless routers.

you could call this package list "barebones".
Comment 5 Dan Hollis 2005-06-20 05:25:04 EDT
oops. you can lose glibc-devel and zlib-devel also. this brings it down to 463712kb.
Comment 6 Rahul Sundaram 2005-09-04 22:59:31 EDT
Reassigning to comps as that seems the logic place for this to be done
Comment 7 Ricky Ng-Adam 2005-11-20 12:45:47 EST
I did a minimal install today as I only wanted to burn the first CD (why isn't
there an ISO for network install as Debian on the download page?) which was over
600MB with everything unselected.  Not too bad for me because I'm left with a
very functionnal system with no services except sshd but far from minimal... 
Maybe a checkbox with "Remove LSB support" would be a solution for those who
want a truly minimal system?

The first thing I did next was to do a yum update.  93 packages were to be
updated and among them:

xorg-x11-Mesa-libGL
xorg-x11-Mesa-libGLU
xorg-x11-libs

Surprising!
Comment 8 Rahul Sundaram 2005-11-20 13:39:49 EST
(In reply to comment #7)
> I did a minimal install today as I only wanted to burn the first CD (why isn't
> there an ISO for network install as Debian on the download page?) which was over
> 600MB with everything unselected.  

There is a network installation option using the boot iso image. Read the
installation guide for details.
Comment 9 Dan Hollis 2005-11-20 18:31:28 EST
it's still rather ridiculous that FC4 installs X11 crap when not asked for.

it is amazingly difficult to shoehorn FC4 into embedded systems.
Comment 10 Ricky Ng-Adam 2006-01-16 22:51:41 EST
With FC5t2 I've unchecked everything at install and I get a 514M install. 

What's worse is that:

*There is no ssh
*There is no man pages 
*There is no yum
*rpm doesn't work (librpm-4.4.so: cannot open shared object file)!!!

In the meantime, the largest single file is /usr/lib/locale/locale-archive at
52M (see bug #156477 for why this is unreasonable).

It would be ok if I only there was a tradeoff between functionnality and install
size but it doesn't seem to be the case here; we get a large size install and
missing fundamental functionnalities.
Comment 11 Jesse Keating 2006-01-25 18:00:23 EST
I do believe you may have had some other problem re rpm on your core install. 
librpm-4.4.so is part of rpm-libs, which is a dep of rpm itself.  rpm-libs
should have been installed, and thus librpm-4.4.so should have been on your file
system.

A minimal install is just that, the smallest amount of packages to get a working
system, even with package management (rpm).  Look in your comps file.  We'll
happily listen to suggestions on how to tweak this.  Please be aware that some
packages get pulled in due to deps.  These could get looked at if they look
rather insane.
Comment 12 Ricky Ng-Adam 2006-02-22 21:46:28 EST
Perhaps newer bug #167914 and bug #161196 are related to this fight against too
many things in the minimal install? 
Comment 13 Ricky Ng-Adam 2006-02-22 23:26:22 EST
Jesse: I redid an install where I've unchecked everything blindly with FC5T3 and
rpm does work this time.

That install is using 524M (10M more than T2?).  I couldn't do it with the first
CDROM only either as I was asked for the second CD also and had to resort to a
HTTP network install (see my comment in bug #167914).

As for what is and isn't the minimal install... its just that I find the weight
of this minimum install is not proportional with the functionnality provided.
Also, it seems the meaning of minimal as changed if I look at my comment #7
where I had useful/essential things like ssh. On a Debian minimal install, it is
still expected that I'm going to be able to easily install network packages with
apt-get first thing when I boot into it.  This isn't the case here (no yum) but
I can understand the argument that we might not even want the system to be able
to install stuff from elsewhere with "minimal"...

Next, for some packages that have been installed that I find strange if I look
at the list for a few minutes.  Just "talking" out loud here, my rpm-fu is not
so great and I'm not that familiar with what everything is supposed to do:

/usr/share/doc [27M]: as with man, it would be nice if this was splitted from
the programs themselves 

man pages [8M]: man pages are present even when man program is not there.  I
guess it would be require to create separate man pages rpm which might be too
complex (?)  Also, I'm getting man pages in languages I haven't installed: cs,
es, de, fr, hu, id, it, ja, zh, pl, pt... etc.

gawk [4M]: OK, this is needed by prelink [1.5M] utility.  Seems a bit much to
drag in a larger package for what it does however.

db4 [2.5M]: nothing requires it? because of LSB?

fedora-logos [945146 bytes]: nobody requires it, I don't have any GUI to display
it...

sqlite [0.5M]: nothing requires it?

pyxf86config [174606 bytes] : I have no gui so this is probably not useful but
required by rhpl (which has a few modules referencing video/mouse stuff also) 

ed [70K]: nothing requires it and does anyone seriously uses it?

With this quick survey, I can see different aspects that this problem would need
to be approached:

-removing stuff that is not required or cannot be of use in a minimal environment
-splitting existing rpm in more, smaller pieces (I think that this is an
approach that Debian favors
-identifying GUI vs text UI stuff and splitting them
-checking utilities dependencies to see if there are not more lightweight
alternatives for doing the same job
-looking at how and if datafiles could be compressed (and decompressed when needed)
-The kernel is also problematic, as all those unused drivers modules take a
massive amount of place and on the other hand this was supposed to be the
advantage of modules
-removing obsolete things

Is it all worth it? Well, as other have mentionned, it would be nice if Fedora
could scale from embedded to clusters out of the box... Plus, the smaller we get
the true minimal install, the more functionnality can than fit in on top.
Comment 14 Jesse Keating 2006-03-17 16:40:59 EST
So I'm not sure where to go with this.  If you provide some differences to
comps.xml to provide what would be your vision of a truly minimal install, that
would be good.  We'd review these differences and see if they are sane or not.
Comment 15 Dan Hollis 2006-03-17 18:48:17 EST
i think the package list from #4 is close to my ideal of a minimal install.

a box which boots, you can log into (console, maybe optionally ssh) and
install/remove packages. that's _all_.

for now, i'm using ubuntu for compactflash installs. no problems installing
minimal systems onto 1gb cf. for example a compactflash nameserver takes 256mb,
and a fully functional compactflash x86_64 PBX with asterisk, apache2, gcc,
vsftpd/tftpd, about 30mb of phone firmware and config files, and full asterisk
and kernel sources takes 530mb.

i don't see any reason why fedora can't meet or exceed the same slimness as ubuntu.

currently, a bare minimum fc4 will only barely fit in a 1gb cf, and it takes
some annoying gymnastics to get it to install at all.
Comment 16 R P Herrold 2006-03-18 17:14:01 EST
*cough* -- The methodology of unchecking packages is sub-optimal -- a more
general way to go hunting is outlined at:
http://www.owlriver.com/tips/tiny-centos/ to yield a one-way delendency endge
node trimming, and then do pair-wise and greater trims.

-- Russ Herrold
Comment 17 Jesse Keating 2006-04-19 15:46:32 EDT
The minimal install, just core, no base, is very very small indeed.  I don't
think it could get much smaller while still being useable.

Methods to GET to this install set should be brought up in different bug
reports.  I'm going to close this one.

Note You need to log in before you can comment on or make changes to this bug.