FreeBSD packages normally bloated

I am fed up!

I installed boinc-client in ubuntu, it took very few megabytes.

boinc-client in FreeBSD downloads 657 MB.

This is an overall experience.

FreeBSD packages have all dependencies, here gtk, although the program is for a server.

In an OpenBSD desktop one can avoid cups and texlive-bloat without effort, in FreeBSD is impossible.

This is for me a clear sign of sinking quality.
 
I guess that's the problem with having someone else build packages: we are at the mercy of the defaults.
Thats why a lot of people prefer to build their own ports tree, so they can control the options used.

What may be an interesting experiment for you:
setup a local ports tree
then run through the steps to build boinc-client, especially the "make config" step. See what you can strip out.
Quick look at the Makefile, yes there are a bunch of "required" things depending on the options. Default options seem to include a lot. https://cgit.freebsd.org/ports/tree/net/boinc-client/Makefile
I think this may be a good candidate for a "port flavor": like we have vim and vim-tiny maybe propose to the maintainer a "boinc-client-tiny" that has the minimum needed requirements.
 
boinc on Mint looks plenty bloated to me:
Code:
~(grisu)2180% ldd `which boinc`
        linux-vdso.so.1 (0x0000771a6e3a9000)
        libboinc.so.7 => /lib/x86_64-linux-gnu/libboinc.so.7 (0x0000771a6e175000)
        libboinc_crypt.so.7 => /lib/x86_64-linux-gnu/libboinc_crypt.so.7 (0x0000771a6e16c000)
        libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x0000771a6e0ab000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x0000771a6e08f000)
        libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x0000771a6df52000)
        libXss.so.1 => /lib/x86_64-linux-gnu/libXss.so.1 (0x0000771a6df4b000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x0000771a6dc00000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x0000771a6db17000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x0000771a6df1d000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000771a6d800000)
        libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x0000771a6d200000)
        libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x0000771a6def0000)
        libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x0000771a6dece000)
        librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x0000771a6deb0000)
        libssh.so.4 => /lib/x86_64-linux-gnu/libssh.so.4 (0x0000771a6daa5000)
        libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x0000771a6de9c000)
        libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x0000771a6d756000)
        libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x0000771a6da51000)
        libldap.so.2 => /lib/x86_64-linux-gnu/libldap.so.2 (0x0000771a6d1a2000)
        liblber.so.2 => /lib/x86_64-linux-gnu/liblber.so.2 (0x0000771a6de8a000)
        libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x0000771a6d0e8000)
        libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x0000771a6da43000)
        libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x0000771a6da1a000)
        libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x0000771a6d742000)
        /lib64/ld-linux-x86-64.so.2 (0x0000771a6e3ab000)
        libunistring.so.5 => /lib/x86_64-linux-gnu/libunistring.so.5 (0x0000771a6cf3b000)
        libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x0000771a6cd40000)
        libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x0000771a6ccf8000)
        libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x0000771a6cca3000)
        libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x0000771a6cc1f000)
        libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x0000771a6cb56000)
        libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x0000771a6d716000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x0000771a6de80000)
        libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x0000771a6cb49000)
        libsasl2.so.2 => /lib/x86_64-linux-gnu/libsasl2.so.2 (0x0000771a6cb2f000)
        libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x0000771a6cb0c000)
        libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x0000771a6da14000)
        libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x0000771a6cb04000)
        libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x0000771a6c960000)
        libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x0000771a6c94a000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x0000771a6c943000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x0000771a6c930000)
        libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x0000771a6c91a000)
        libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x0000771a6c90e000)
        libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x0000771a6c8ff000)

And that is without installing the packages for the individual hardware accelerations, which are marked recommended for it.
 
FreeBSD packages have all dependencies
Packages are convenience items to cover every possible user. Your ubuntu installation cripples you if you needed some of that functionality.
If you want something more custom to your needs, that's what ports are for. There you can usually customize to exactly what you want and possibly better than your ubuntu install.
 
I installed boinc-client in ubuntu, it took very few megabytes.

While Mint seems to have boinc, a debootstrapped Ubuntu Noble knows nothing about it. The install instructions for boinc for Ubuntu say you need to add a package mirror from Berkeley.

That seems to indicate that it isn't Ubuntu that installs the maybe slimmer package, but the original software factory.
 
Here are the FreeBSD shared libs for boinc:
Code:
/usr/local/bin/boinc:
        libexecinfo.so.1 => /usr/lib/libexecinfo.so.1 (0x145747a30000)
        libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x145747bfe000)
        libssl.so.35 => /usr/lib/libssl.so.35 (0x1457485bb000)
        libcrypto.so.35 => /lib/libcrypto.so.35 (0x14574a200000)
        libdl.so.1 => /usr/lib/libdl.so.1 (0x145747098000)
        libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x1457492fb000)
        libz.so.6 => /lib/libz.so.6 (0x14574b560000)
        libxkbcommon.so.0 => /usr/local/lib/libxkbcommon.so.0 (0x14574c65b000)
        libX11.so.6 => /usr/local/lib/libX11.so.6 (0x14574d062000)
        libXss.so.1 => /usr/local/lib/libXss.so.1 (0x14574d71f000)
        libthr.so.3 => /lib/libthr.so.3 (0x14574dbb5000)
        libm.so.5 => /lib/libm.so.5 (0x14574e9bf000)
        libc++.so.1 => /lib/libc++.so.1 (0x14574f84e000)
        libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x1457508bd000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x145750b20000)
        libc.so.7 => /lib/libc.so.7 (0x1457518a7000)
        libelf.so.2 => /lib/libelf.so.2 (0x145752b29000)
        libnghttp2.so.14 => /usr/local/lib/libnghttp2.so.14 (0x145752e17000)
        libidn2.so.0 => /usr/local/lib/libidn2.so.0 (0x145753ca7000)
        libssh2.so.1 => /usr/local/lib/libssh2.so.1 (0x1457543d5000)
        libpsl.so.5 => /usr/local/lib/libpsl.so.5 (0x145754554000)
        libzstd.so.1 => /usr/local/lib/libzstd.so.1 (0x145754841000)
        libbrotlidec.so.1 => /usr/local/lib/libbrotlidec.so.1 (0x14575560a000)
        libbrotlicommon.so.1 => /usr/local/lib/libbrotlicommon.so.1 (0x145755b6e000)
        libkrb5.so.122 => /usr/lib/libkrb5.so.122 (0x145756040000)
        libgssapi_krb5.so.122 => /usr/lib/libgssapi_krb5.so.122 (0x14574bfd6000)
        libbz2.so.4 => /usr/lib/libbz2.so.4 (0x145757a18000)
        libpng16.so.16 => /usr/local/lib/libpng16.so.16 (0x145757c95000)
        libxcb.so.1 => /usr/local/lib/libxcb.so.1 (0x145756f4c000)
        libXext.so.6 => /usr/local/lib/libXext.so.6 (0x1457586fa000)
        libsys.so.7 => /lib/libsys.so.7 (0x1457595fc000)
        libunistring.so.5 => /usr/local/lib/libunistring.so.5 (0x14575b262000)
        libk5crypto.so.122 => /usr/lib/libk5crypto.so.122 (0x145759f4a000)
        libcom_err.so.122 => /usr/lib/libcom_err.so.122 (0x14575bf12000)
        libkrb5support.so.122 => /usr/lib/libkrb5support.so.122 (0x14575bfae000)
        libXau.so.6 => /usr/local/lib/libXau.so.6 (0x14575c9ac000)
        libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x14575ca6a000)
        [vdso] (0x1457463be000)

It seems to me that your download size difference between Ubuntu and FreeBSD is caused by bunutu already having all the stuff for the shared libraries installed before you started.

What were the sizes of your Ubuntu and FreeBSD installs before you installed boinc?

Is it possible that your Ubuntu install had a desktop environment and FreeBSD did not?
 
Is it possible that your Ubuntu install had a desktop environment and FreeBSD did not?
It seems some libs were preinstalled.
~$ ldd /usr/bin/boinc
linux-vdso.so.1 (0x000075aef3931000)
libboinc.so.7 => /lib/x86_64-linux-gnu/libboinc.so.7 (0x000075aef3723000)
libboinc_crypt.so.7 => /lib/x86_64-linux-gnu/libboinc_crypt.so.7 (0x000075aef371a000)
libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x000075aef3659000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x000075aef363d000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x000075aef3500000)
libXss.so.1 => /lib/x86_64-linux-gnu/libXss.so.1 (0x000075aef34f9000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x000075aef3200000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000075aef3117000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x000075aef34cb000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000075aef2e00000)
libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x000075aef2800000)
libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x000075aef349e000)
libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x000075aef30f5000)
librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x000075aef3480000)
libssh.so.4 => /lib/x86_64-linux-gnu/libssh.so.4 (0x000075aef3083000)
libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x000075aef306f000)
libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x000075aef2d56000)
libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x000075aef301b000)
libldap.so.2 => /lib/x86_64-linux-gnu/libldap.so.2 (0x000075aef27a2000)
liblber.so.2 => /lib/x86_64-linux-gnu/liblber.so.2 (0x000075aef2d46000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x000075aef26e8000)
libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x000075aef2d38000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x000075aef26bf000)
libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x000075aef2d24000)
/lib64/ld-linux-x86-64.so.2 (0x000075aef3933000)
libunistring.so.5 => /lib/x86_64-linux-gnu/libunistring.so.5 (0x000075aef2512000)
libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x000075aef2317000)
libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x000075aef22cf000)
libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x000075aef227a000)
libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x000075aef21f6000)
libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x000075aef212d000)
libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x000075aef2101000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x000075aef2d1e000)
libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x000075aef20f4000)
libsasl2.so.2 => /lib/x86_64-linux-gnu/libsasl2.so.2 (0x000075aef20da000)
libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x000075aef20b7000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x000075aef2d18000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x000075aef20af000)
libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x000075aef1f0b000)
libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x000075aef1ef5000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x000075aef1eee000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x000075aef1edb000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x000075aef1ec5000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x000075aef1eb9000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x000075aef1eaa000)
But this still does not justify 650MB.

Package dependencies in ubuntu
~$ apt-cache depends boinc-client
boinc-client
PreDepends: init-system-helpers
|Depends: debconf
Depends: <debconf-2.0>
cdebconf
debconf
Depends: <python3:any>
python3
Depends: libboinc7t64
Depends: libc6
Depends: libcurl4t64
Depends: libgcc-s1
Depends: libstdc++6
Depends: libx11-6
Depends: libxss1
Depends: zlib1g
Depends: adduser
Depends: ca-certificates
Depends: lsb-base
sysvinit-utils
Suggests: boinc-manager
Suggests: boinc-client-opencl
Suggests: boinc-client-nvidia-cuda
Suggests: x11-xserver-utils
And in FreeBSD
pkg search -d boinc-client
boinc-client-8.2.8
Comment : Berkeley Open Infrastructure for Network Computing client
Depends on :
xcb-util-0.4.1,1
wx32-gtk3-3.2.8.1_1
pango-1.57.1
libxkbcommon-1.13.2
libxcb-1.17.0
libnotify-0.8.8
libXmu-1.3.1,1
libXi-1.8.3,1
libXext-1.3.7,1
libXScrnSaver-1.2.4_1
libX11-1.8.13_1,1
jpeg-turbo-3.1.4.1
harfbuzz-14.2.1
gtk3-3.24.52
glib-2.86.4,2
gettext-runtime-1.0_1
gdk-pixbuf2-2.44.1
freetype2-2.14.3
freeglut-3.2.1
desktop-file-utils-0.28
curl-8.21.0
cairo-1.18.2,3
ca_root_nss-3.125
at-spi2-core-2.60.4
 
The boinc-client port has the optional GUI manager enabled by default.
Yes.

And ubuntu offers to install it separately what I of course did not do.

650 MB only to have a GUI. Otherwise only 1,4 MB.

Out of proportion!

But to install it, I would need to install the whole ports tree, and I do not want to continuously compile ports.
 
Yes.

And ubuntu offers to install it separately what I of course did not do.

650 MB only to have a GUI. Otherwise only 1,4 MB.

Out of proportion!

But to install it, I would need to install the whole ports tree, and I do not want to continuously compile ports.
That's why I sugested "ask the maintainer if he can create a -tiny flavor"
We have "emacs" and "emacs-nox" so why not ask for similar?

Edit:
Honestly this is the prime tradeoff between "using prebuilt packages" and "building everything from ports". Using official packages means you get the defaults. Using ports you need to maintain settings. My opinion is basically pick one and don't mix. If you pick ports, you should get used to /fully understand poudiere and configuration and probably follow quarterly (less churn). If you pick prebuilt pkgs you have to accept "You get what you get by defaults".
So "use my resources and get exactly what I want" or "use someone elses and get more than I need"
 
I believe this situation (GUI Manager) was supposed to be handled by a subpackage, not a flavor.
Ok, but honestly "semantics" end result of both is the same "one package built with all default config options set, the other a package built built with a subset of all config options enabled".
In the emacs case: a package that supports running emacs as an X application in it's own window and a package that does not.
 
I understand the idea of using flavors, given that the subpackages are still experimental.
Note that the Emacs binaries for `emacs` and `emacs-nox` are different.
Edit:
The reason I mentioned subpackages is simply because I thought there might be people who would object to the "flavor" approach.
If you provide a patch, I imagine alven (the maintainer) would handle it.
 
You can strip it down. List all related executables and binary dependencies. What's left is program-specific expectations. Does a config file or directory has to exist somewhere?

Currently having a similar problem. My firefox install stopped playing particular Youtube videos but not all after an upgrade. If I install x264, it works. But that's 130 packages. Can we also explain what firefox needs exactly? It's a missing direct dependency that causes a visible browser error. But nobody remembers what did it.
 
Back
Top