по мотивам Решил отрезать от основного топика, чтобы обсудить это отдельным вопросом.
Вопрос: почему так много зависимостей и почему нецелесообразно в данной ситуации делать самодостаточные пакеты.
Итак, мало кто понимает, как обстоит ситуация на самом деле. Ест бинарник, чтобы каждый кодер не писал 100500 раз одни и те же функции, которые выполняют какие-то типовые действия, придумали библиотеки, которые являются коллекциями функций, которые каждый кодер может вызвать в своей программе. Это существенно сокращает время разработки и уменьшает размер программы. При этом разные программы могут юзать одну и ту же либу, вызывая ее функции, тем самым сокращать размер потребляемой памяти <-- вот эти характеристики являются первостепенными в событии «появление библиотек»
Вообще теоретически всё очень круто: делаем либу, кодеры вызывают функции и куда не посмотри - всё очень здорово. НО! т.к GNU/Linux не стандартизирован нет офиц библиотек, которые бы покрывали бОльшую часть потребностей кодеров, которые разрабатывают программы. Попытка сделать что-то - это создание toolchain. Смотрим в вики
GNU toolchain — набор созданных в рамках проекта GNU пакетов программ, необходимых для компиляции и генерации выполняемого кода из исходных текстов. Являются стандартным средством разработки программ и ядра ОС Linux.
Но т.к зависимости есть(как свершившийся факт), то делаем вывод о том, что функций библиотек, которые есть в toolchain недостаточно для осуществления разработки программ.
Хорошо, есть сторонние библиотеки. И это нормально. Но проблема в том, что никто не проверяет софт, какие функции юзаются из этих библиотек. Я подозреваю, что 98% всех функций, которые юзаются во всем софте(актуальном) размазаны по всем этим зависимостям. Т.е так: есть функцияХ0 в glibc. Она выполняет то что нужно. Но васян, который кодит, по каким-то причинам использует другую либу, в которой есть функцияХ1, выполняющая то же самое, что функция glibc.функцияX0. Из-за этого мы факт появления зависимости, которой по определению не должно быть. Думаю, что уровень дебилизма там достигает невероятных масштабов и кмк там даже есть такой вариант развития события:
Кодер юзает функцию somelib10.функцияX10, которая зависит от somelib9.функцияX9, которая зависит от somelib8.функцияX8. А в функции somelib8.функцияX8 вызывает функцию glibc.функцияX0. И самое интересное, что функционал функци somelib10.функцияX10, которую вызывал васян равна функционалу функции glibc.функцияX0
Похоже на шутку, не правда ли? Но это, блин, не шутка. В итоге мы имеем несколько зависимостей и одну большую glibc. Хотя, васян мог просто заюзать glibc, которую юзают многие кодеры(прямо - что есть норм или косвенно(но обосновано косвенно).
И поэтому мы получаем такие финты
┌─[debian]─[~] └──╼ apt-get install xfburn Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: xfburn 0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. Need to get 410 kB of archives.
┌─[✗]─[debian]─[~] └──╼ apt-get install brasero Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: aspell aspell-en brasero-cdrkit brasero-common cdrdao dvdauthor enchant genisoimage gnome-user-guide growisofs gstreamer1.0-pulseaudio libbrasero-media3-1 libenchant1c2a libgstreamer-plugins-bad1.0-0 libiptcdata0 libjavascriptcoregtk-4.0-18 libnautilus-extension1a libperl4-corelibs-perl libquvi-0.9-0.9.3 libquvi-scripts-0.9 libtotem-plparser-common libtotem-plparser18 libtracker-sparql-1.0-0 libwebkit2gtk-4.0-37 libyelp0 lua-bitop lua-expat lua-json lua-lpeg lua-socket wodim yelp yelp-xsl Suggested packages: aspell-doc spellutils vcdimager libdvdcss2 tracker readom cdrkit-doc gstreamer1.0-plugins-bad libenchant-voikko libwebkit2gtk-4.0-37-gtk2 The following NEW packages will be installed: aspell aspell-en brasero brasero-cdrkit brasero-common cdrdao dvdauthor enchant genisoimage gnome-user-guide growisofs gstreamer1.0-pulseaudio libbrasero-media3-1 libenchant1c2a libgstreamer-plugins-bad1.0-0 libiptcdata0 libjavascriptcoregtk-4.0-18 libnautilus-extension1a libperl4-corelibs-perl libquvi-0.9-0.9.3 libquvi-scripts-0.9 libtotem-plparser-common libtotem-plparser18 libtracker-sparql-1.0-0 libwebkit2gtk-4.0-37 libyelp0 lua-bitop lua-expat lua-json lua-lpeg lua-socket wodim yelp yelp-xsl 0 upgraded, 34 newly installed, 0 to remove and 1 not upgraded. Need to get 39.7 MB of archives. After this operation, 147 MB of additional disk space will be used. Do you want to continue? [Y/n]
┌─[✗]─[debian]─[~] └──╼ apt-get install k3b Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: aspell aspell-en cdparanoia cdrdao docbook-xml docbook-xsl dvd+rw-tools enchant genisoimage growisofs gstreamer1.0-pulseaudio icoutils k3b-data kate-data katepart kde-runtime kde-runtime-data kdelibs-bin kdelibs5-data kdelibs5-plugins kdoctools libattica0.4 libcanberra-pulse libdbusmenu-qt2 libdlrestrictions1 libenchant1c2a libfam0 libgpgme++2v5 libimobiledevice6 libiodbc2 libk3b6 libk3b6-extracodecs libkactivities6 libkatepartinterfaces4 libkcddb4 libkcmutils4 libkcompactdisc4 libkde3support4 libkdeclarative5 libkdecore5 libkdesu5 libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkfile4 libkhtml5 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpty4 libkrosscore4 libktexteditor4 libkxmlrpcclient4 libmusicbrainz5cc2v5 libnepomuk4 libnepomukquery4a libnepomukutils4 libntrack-qt4-1 libntrack0 libperl4-corelibs-perl libplasma3 libplist3 libpolkit-qt-1-1 libqt4-qt3support libsolid4 libsoprano4 libthreadweaver4 libupower-glib3 libusbmuxd4 libvcdinfo0 ntrack-module-libnl-0 oxygen-icon-theme phonon phonon-backend-gstreamer phonon-backend-gstreamer-common plasma-scriptengine-javascript sgml-data soprano-daemon sound-theme-freedesktop upower usbmuxd vcdimager wodim Suggested packages: aspell-doc spellutils docbook docbook-dsssl docbook-defguide dbtoepub docbook-xsl-doc-html | docbook-xsl-doc-pdf | docbook-xsl-doc-text | docbook-xsl-doc docbook-xsl-saxon fop libsaxon-java libxalan2-java libxslthl-java xalan cdrskin cdrkit-doc libterm-readline-gnu-perl | libterm-readline-perl-perl k3b-extrathemes k3b-i18n normalize-audio movixmaker-2 kde-config-cddb finger libenchant-voikko fam libusbmuxd-tools iodbc hspell media-player-info phonon-backend-vlc phonon4qt5-backend-gstreamer perlsgml w3-recs opensp virtuoso-minimal The following NEW packages will be installed: aspell aspell-en cdparanoia cdrdao docbook-xml docbook-xsl dvd+rw-tools enchant genisoimage growisofs gstreamer1.0-pulseaudio icoutils k3b k3b-data kate-data katepart kde-runtime kde-runtime-data kdelibs-bin kdelibs5-data kdelibs5-plugins kdoctools libattica0.4 libcanberra-pulse libdbusmenu-qt2 libdlrestrictions1 libenchant1c2a libfam0 libgpgme++2v5 libimobiledevice6 libiodbc2 libk3b6 libk3b6-extracodecs libkactivities6 libkatepartinterfaces4 libkcddb4 libkcmutils4 libkcompactdisc4 libkde3support4 libkdeclarative5 libkdecore5 libkdesu5 libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkfile4 libkhtml5 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpty4 libkrosscore4 libktexteditor4 libkxmlrpcclient4 libmusicbrainz5cc2v5 libnepomuk4 libnepomukquery4a libnepomukutils4 libntrack-qt4-1 libntrack0 libperl4-corelibs-perl libplasma3 libplist3 libpolkit-qt-1-1 libqt4-qt3support libsolid4 libsoprano4 libthreadweaver4 libupower-glib3 libusbmuxd4 libvcdinfo0 ntrack-module-libnl-0 oxygen-icon-theme phonon phonon-backend-gstreamer phonon-backend-gstreamer-common plasma-scriptengine-javascript sgml-data soprano-daemon sound-theme-freedesktop upower usbmuxd vcdimager wodim 0 upgraded, 90 newly installed, 0 to remove and 1 not upgraded. Need to get 72.2 MB of archives. After this operation, 182 MB of additional disk space will be used. Do you want to continue? [Y/n]
Пилить самодостаточные пакеты не имеет смысла т.к самодостаточный k3b будет весить 3гб. Почему? Смотрим выше.