Doomed to Wordpress

Serious Reflections During the Life of Jeremy Fisher

   

Subscribe
Subscribe to a syndicated feed of my weblog, brought to you by the wonders of RSS.

Flavours
There's more than one way to view this weblog; try these flavours on for size.

  • index
  • circa 1993
  • RSS
  • Links
    These are a few links to my other sites.

  • Ставропигиальныя Пластинки
  • Анкылым
  • Русское Шрифтовое Зало
  • Gopher (Proxied)
  • More about Gopher
  •        

    2021/01/14 dependency hell

    Очередная симптоматичная новость (https://www.opennet.ru/opennews/art.shtml?num=54402):

    Дистрибутивы Linux столкнулись с проблемой с разрастанием зависимостей у проектов. Если для кода на Python, Perl и Ruby число зависимостей держится в разумных пределах, то в проектах на JavaScript практикуется дробление на очень мелкие библиотеки, часто выполняющие одну простую функцию. Репозиторий NPM уже насчитывает более миллиона пакетов, а типовые приложения связываются с сотнями зависимостей, которые, в свою очередь, имеют свои зависимости, что усложняет сопровождение и распространение традиционных пакетов с JavaScript-приложениями в дистрибутивах Linux.

    Проблема, конечно, относится не только к JS и вообще не только к интерпретируемым языкам. Мне часто приходит в голову мысль, как бы я объяснил пользователю виндоус, что̀ вообще такое зависимости и почему он в своей жизни с ними никогда не сталкивался?

    В 2005 году на свойм первом компе (8Мб (мегабайт!) оперативки, i486, BlackCat Linux, кажется, 1998 года) я собирал для работы Apache 1.3, PHP 4, MySQL 3.23 и для своего удовольствия gopher- и wais- сервера и клиенты (код тоже в основном из 90-х) и ещё что-то. Помню, MySQL собирался 2 дня — я успел на выходные съездить куда-то за город, вернуться и помыться, и к тому времени он собрался. И я не помню, чтоб я сталкивался вообще с какими-либо зависимостями. У меня тогда не было столько опыта, чтобы я смог бы их разрешить, а ресурсы машины не позволяли особо экспериментировать, сборка растянулась бы на недели. Однако все нужные библиотеки были в дистрибутиве (умещавшемся на одном CD). Единственное что̀ — некоторые программы пришлось собирать с помощью egcs вместо gcc. Но в дистрибутиве были оба, ничего доустанавливать не пришлось. В тех редких случаях, когда не было уверенности, сто́ит ли собирать вручную, я ставил пакеты с сайта rpmfind.net. Они были не привязаны к дистрибутиву — по крайней мере, rpm с этого сайта в 2005 году каким-то образом нормально ставились и работали на маргинальном российском дистрибутиве конца 90-х. Вообще BlackCat был очень уютной системой. Из-за этого я потом, добыв более новый комп, поставил туда его потомка ASPLinux, но это было уже не совсем то.

    Вообще же, конечно, проблема не только и не столько в библиотеках (логично иметь в системе полный набор всех возможных библиотек, если бы только это было осуществимо), а в навязывании софта и/или его конкретных версий под видом «зависимостей».

    Что̀ мы имеем сейчас даже только со сборочными зависимостями — я уже описывал в постах про pkgsrc. Из недавнего опыта — собирал MariaDB на Slackware, из-за какой-то единственной синтаксической конструкции требуется определённая версия gcc (и об этом ни слова не сказано в документации!), кроме того, есть и требования к версии cmake, причём реальность отличается от того, что̀ указано в документации, и мало того, для отдельных включённых в дистрибутив модулей хранилищ эти требования разные!

    permanent link