Dne 17.11.2015 v 11:00 Stef Walter napsal(a):
> On 17.11.2015 02:39, Stephen Gallagher wrote:
>> (Please keep responses on the devel@ list; I've set it in the Reply-To.)
>>
>> To jump right to the premise: The default Fedora Server install is Way
>> Too Big(TM) and the minimal install (also available on the Fedora
>> Server install media) is also Too Big.
>>
>> I've been trying to do some quick-and-dirty analysis of what is in
>> these default installations in order to figure out where we should be
>> focusing our efforts. I'll point out that there are two goals that we
>> need to keep in mind (and the reasons behind them) in order of
>> increasing importance:
>>
>> 1) Reduce disk space usage. While disk space on physical devices is
>> becoming trivially cheap, disk space on Cloud deployments and rented
>> virtual servers is still comparatively very expensive. We really want
>> to minimize the amount of space that we use for Fedora so that users
>> can fit their applications (the stuff they actually care about) into
>> the remaining space without being forced to buy a larger storage
>> allotment.
>>
>> 2) Reduce maintenance efforts. Every additional piece of software on
>> the system (referred to hereafter as "packages") increases the
>> maintenance burden on an administrator. Universally, administrators
>> prefer to have the smallest number of packages to maintain for a
>> variety of reasons:
>>  * Limiting update churn. The more packages on the system, the more
>>    often that one will need to run updates.
>>  * Limiting security exposure. Every package on the system is another
>>    potential privilege-escalation point. Keeping this number under
>>    control means a reduced likelihood of a catastrophic breach. (The
>>    actual risk here is impossible to quantify, but it can be assumed
>>    that less code == less potential vulnerabilities.
>>  * Non-expert administrators do not always know what is installed on
>>    their systems. This can lead to unintentional breaches as an
>>    admin doesn't realize that one or more services needs to be limited
>>    (such as in the firewall or via SELinux).
>>
>> With these two goals in mind, the most obvious approach to improving
>> this situation would be by reducing the number of packages installed
>> by default on the Minimal and Fedora Server installs. As a specific
>> goal of the Server Working Group, we want to aim for a world wherein
>> administrators will no longer desire to install the Minimal install
>> and instead will rely on the platform provided by the default Fedora
>> Server install. They do not do this today because the Fedora Server
>> installation is considerably larger. I postulate that this is due
>> primarily to dependency bloat, which is where we should focus our
>> efforts during the Fedora 24 timeframe. I postulate (but have not yet
>> confirmed) that there are likely many places where we could replace
>> Requires: with Recommends: (or even Suggests:) dependencies. In my
>> ideal world, the difference between a Minimal and Server install would
>> be identical to installing the same set of packages with Recommends:
>> on or off.
>>
>>
>> Some highlights of my initial research (with a lot of my raw data in
>> the tarball attached to this email):
>>
>>
>> == Minimal ==
>>
>> === Disk Usage ===
>> /boot: 79MB
>> /:     755MB
>>
>>
>> === Packages ===
>> Total count: 270
>>
>> ==== Largest 10 packages ====
>> 14288083: coreutils
>> 14486819: glibc
>> 16648994: grub2
>> 18024040: kernel-modules
>> 27253403: systemd
>> 28453336: python3-libs
>> 36004297: grub2-tools
>> 53295853: kernel-core
>> 86298752: linux-firmware
>> 125178630: glibc-common
>>
>> ==== 10 Longest dependency chains ====
>> b'kbd': 116
>> b'dnf-plugins-core': 117
>> b'plymouth-scripts': 121
>> b'plymouth': 121
>> b'firewalld': 122
>> b'grub2-tools': 125
>> b'grub2': 131
>> b'NetworkManager': 138
>> b'dnf': 144
>> b'dnf-yum': 145
>>
>>
>>
>>
>>
>>
>>
>>
>> == Server ==
>>
>> == Disk Usage ==
>> /boot: 97MB [1]
>> /:     1.2GB
>>
>>
>> === Packages ===
>> Total count: 603
>>
>> ==== Largest 10 packages ====
>> 18590064: samba-client-libs
>> 22484896: docker
>> 25209005: python-libs
>> 27253403: systemd
>> 28453336: python3-libs
>> 30242477: libicu
>> 36004297: grub2-tools
>> 53295853: kernel-core
>> 86298752: linux-firmware
>> 125178630: glibc-common
>>
>> ==== 10 Longest dependency chains ====
>> b'abrt-addon-python3': 170
>> b'abrt-retrace-client': 171
>> b'abrt-addon-pstoreoops': 171
>> b'abrt-addon-ccpp': 183
>> b'abrt-addon-vmcore': 190
>> b'rolekit': 196
>> b'abrt-cli': 214
>> b'cockpit': 216
>> b'freeipa-client': 249
>> b'fedora-release-server': 252
>>
>>
>> ==== Additional Package Groups ====
>> (These are the package groups we include above and beyond "Minimal
>> Install")[2]
>>
>> I'm not including package sizes here since most of the space comes
>> from their dependencies.
>>
>> * server-product
>>  - fedora-release-server: dependency chain length: 252
>>    - cockpit: see below
>>    - rolekit: see below
>>    - systemd: chain 104
>>  - chrony: 468KiB, chain 111
>> * server-hardware-support
>>  - lm_sensors: chain 139
>>  - openhpi: chain 108
>>  - smp_utils: chain 19
>> * headless-management
>>  - cockpit: chain 216
>>  - PackageKit: chain 137
>>  - rolekit: chain 196
>>  - tog-pegasus: chain 51
>> * container-management
>>  - docker: chain 148
>> * domain-client
>>  - adcli: chain 51
>>  - freeipa-client: chain 249
>>  - oddjob-mkhomedir: chain 107
>>  - realmd: chain 112
>>  - samba-winbind: chain 131
>>  - sssd: chain 157
>>  - samba-common-tools: chain 129
> These dependencies are really hard to read. A much more clear approach
> would be to see how many unique dependencies each top level feature
> brings in. More on that below.
>
>> == Notes ==
>> [1] The initramfs files are larger on Server.
>> [2] Actually, we have a difference here; Minimal Install forcibly
>> includes the "guest-agents" group; this is only optional on Server.
>>
>> Some specific observations I can make:
>> * The largest difference in the Fedora Server install vs. the minimal
>> install is due to the FreeIPA and Samba packages requiring the
>> inclusion of the Python 2 stack; focusing on eliminating this
>> requirement in Fedora 24 would have the largest impact on both the
>> number of packages and the space on disk.
>>
>> * The largest individual package in both deployments is the
>> glibc-common package. This is primarily due to the 106MiB
>> locale-archive. I'd really like to hear from glibc folks if there is
>> something we can do to break this up into smaller pieces contained in
>> different sub-packages with Suggests: dependencies.
> Some notes about cockpit:
>
> Cockpit itself isn't very big, and most of the dependencies seen above
> are the system services that it can configure (ie: docker,
> NetworkManager, systemd, storaged).
>
> 'cockpit' is a meta-package depending on 'cockpit-xxx' subpackages.
> These subpackages like cockpit-docker or cockpit-networkmanager depend
> on things like docker or NetworkManager respectively.

Then the should use Recommends, shouldn't they?


Vít


>
> If the subpackages that the Fedora 'cockpit' meta-package depend on do
> not match what system services Fedora Server wants to ship, then we
> should adjust the meta-package.
>
> All that to say, the Cockpit dependencies are actually very light on top
> of what's already being shipped.
>
> Cockpit itself has the following dependencies.
>
>  - glibc
>  - glib2
>  - glib-networking
>  - polkit
>  - polkit-libs (*)
>  - grep
>  - keyutils-libs (*)
>  - systemd-libs (*)
>  - pam
>  - json-glib (*)
>  - libpwquality
>  - shadow-utils
>  - bash
>  - krb5-libs
>  - openssl
>
> The dependencies that I've noted with a star, can be theoretically
> removed by copying and pasting some code from those libraries into
> Cockpit. This seems counterproductive and counter to Fedora's posture,
> but it is nonetheless possible.
>
> A dependency on openssl (used for generating self-signed certificates,
> when none are available) could be removed by using gnutls. But not sure
> that would win us anything as far as disk space.
>
> Cheers,
>
> Stef
>
>
>

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Reply via email to