The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Эксперимент с созданием NPM-пакета, зависящего от всех пакетов в репозитории

05.01.2024 12:23

Один из разработчиков JavaScript-пакетов провёл эксперимент с созданием и размещением в репозитории NPM пакета "everything", который охватывает зависимостями все существующие пакеты в репозитории. Для реализации подобной возможности пакет "everything" связан прямыми зависимостями с пятью пакетами "@everything-registry/chunk-N", которые в свою очередь привязываются зависимостями к более 3000 пакетов "sub-chunk-N", в каждом из которых осуществляется привязка к 800 существующих пакетов в репозитории.

Размещение "everything" в NPM привело к двум интересным эффектам. Во-первых, пакет "everything" стал своеобразным инструментом для совершения DoS-атак, так как попытка его установки приводит к загрузке миллионов размещённых в NPM пакетов и исчерпанию имеющегося дискового пространства или остановке выполнения сборочных процессов. По статистике NPM пакет был загружен около 250 раз, но никто не мешает добавить его в зависимости к другому пакету после взлома учётной записи разработчика для совершения диверсии. Кроме того, невольно атаке оказались подвержены некоторые службы и инструменты осуществляющие мониторинг и проверку новых пакетов, размещаемых в NPM.

Во-вторых, публикация пакета "everything" фактически заблокировала возможность удаления любых пакетов в NPM, которые оказались в списке его зависимостей. Пакет из NPM может быть удалён автором только если он ещё не используется в зависимостях других пакетов, но после публикации "everything" зависимостями оказались охвачены все пакеты в репозитории. Примечательно, что удаление самого пакета "everything" также оказалось заблокированным, так как 9 лет назад в репозитории был размещён тестовый пакет "everything-else", в котором была указана строка "everything" в списке зависимостей. Таким образом, пакет "everything" после публикации оказался в зависимостях у другого пакета.

  1. Главная ссылка к новости (https://checkmarx.com/blog/whe...)
  2. OpenNews: Инцидент с захватом прав на NPM-модуль привёл к сбою в работе проектов, использующих NPM
  3. OpenNews: Сбой антиспам-системы привёл к коллапсу в репозитории NPM
  4. OpenNews: Удаление Gem-пакета в знак протеста привело к проблемам в ряде систем на базе Chef
  5. OpenNews: Внедрение двухфакторной аутентификации в PyPI привело к инциденту с удалением популярного пакета
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60392-npm
Ключевые слова: npm, dos
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (76) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:34, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    меня всегда удивляло - откуда эти цифры - миллионы пакетов, сотни миллионов загрузок чего-то за месяц - неужели этот нпм так популярен? - откуда на планете вообще столько итишников взялось
     
     
  • 2.3, Трэхо (?), 12:35, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +17 +/
    Ci/CD
     
     
  • 3.11, Аноним (11), 12:55, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Облачные
     
  • 3.145, Аноним (145), 11:38, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    *криво настроенные CI/CD без кэширования зависимостей
     
  • 2.22, Tron is Whistling (?), 13:01, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Миллионы лефтпадов в различныз вариациях.
     
  • 2.42, FF (?), 13:17, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это рутинное дело, а не эксперимент. Типичный node_modules.
    Миллионы потому, что npm install и npm audit fix, постоянно надо всю гроздь обновлять, и вместо разработки фич заниматься адаптацией после обновы.
     
  • 2.43, FF (?), 13:21, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В Го по умолчанию, например, есть общий каталог, куда качаются пакеты разных версий для всех проектов пользователя. А тут для каждого, например, примера из урока, надо выгружать тысячи пакетов, но это по умолчанию если из-за вебпак, sass и т.п.
     
     
  • 3.157, jt3k (ok), 13:31, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В Го по умолчанию, например, есть общий каталог, куда качаются пакеты разных
    > версий для всех проектов пользователя.

    Это на машине разработчика такое. А в докере не будет этой папки из-за особенностей его работы и из-за безопасности возможно или сложности реализации)

     
     
  • 4.164, Аноним (164), 23:35, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В докере будет так как вы настроите. И он таки будет.
     
  • 2.63, Криптоханыга (?), 16:13, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там там извините, "пакеты" из 1-3 строк и то выкладывают...
     
     
  • 3.68, Аноним (68), 16:31, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Всё правильно делают. Раз Node.js такоеьговно, что в стандартой библиотеке нет самых базовых вещей, то приходится делать свою стандартную библиотеку.
     
     
  • 4.158, jt3k (ok), 13:32, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Всё правильно делают. Раз Node.js такоеьговно, что в стандартой библиотеке нет самых
    > базовых вещей, то приходится делать свою стандартную библиотеку.

    Всё там теперь есть. Просто раньше не было вот и наделали обёрток для старых версий

     
  • 2.71, Витюшка (?), 17:19, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На каждый коммит в CI/CD создаётся чистое окружение и туда устанавливаются (скачиваются) в зависимости с нуля (из npm) чтобы собрать пакет/проект/приложение.

    Так делают многие, если не большинство. Вот оттуда)

     
     
  • 3.95, Аноним (95), 21:09, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кеширование тоже устаревшая технология и потому ненужно?
     
     
  • 4.159, jt3k (ok), 13:36, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Кеширование тоже устаревшая технология и потому ненужно?

    Любой squid в сети установить и данная проблема улетучится. Просто недогоняторов много развелось

     
  • 3.117, Витюшка (?), 03:48, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кэширование делает дай бог один из 10 проектов (репозиториев), если не из 100. А если учитывать все hello world с гитхаба...
     
  • 2.93, banonymous (?), 19:26, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В Js/Rust модно делать пакет для каждой васянофункции.
     
     
  • 3.120, ПомидорИзДолины (?), 11:06, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Unix-way же, все правильно делают.
     
     
  • 4.151, _kp (ok), 00:36, 08/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Простенькую функцию как пакет может и нормально, но бардак с зависимостями это проблемы репозитория.
    Не должно быть даже возможности включения в зависимости, того, что не используется, или не обязательно.
    Ps: впрочем, множество мелких пакетов, даже без зависимостей, заспамливают репозитории.
     
  • 2.156, jt3k (ok), 13:28, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Сколько сайтов столько и пакетов в каждом.
    Конечно не все сайты используют пакеты нпм. Но есть команда которые создают собственные пакеты которые в свою очередь используют другие пакеты из нпм. Любой ci конвеер за неимением кеш-состояния выкачивает нпм пакеты заново из нпм.
    Это может быть просто зацикленная труба тестирования внутри которой докер качает из нпма себе зависимости для работы приложения.

    Нпм популярен. Жабаскрипт ведь везде.

     
  • 2.165, Пряник (?), 10:00, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    все атишнеке сидят в united states of murica
     

  • 1.5, Аноним (5), 12:44, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Уровень.
     
  • 1.6, Аноним (6), 12:51, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +20 +/
    >Пакет из NPM может быть удалён автором только если он ещё не >используется в зависимостях других пакетов, но после публикации >"everything" зависимостями оказались охвачены все пакеты в >репозитории.

    Шах

    >Примечательно, что удаление самого пакета "everything" также оказалось >заблокированным, так как 9 лет назад в репозитории был размещён >тестовый пакет "everything-else", в котором была указана строка >"everything" в списке зависимостей. Таким образом, пакет "everything" >после публикации оказался в зависимостях у другого пакета.

    И мат!


     
     
  • 2.51, Sw00p aka Jerom (?), 13:41, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Шах

    но это же вроде после истории с лефт-падом, запретили удалять свой гамнокод :) а когда нет возможности его удалить, то и со временем в нем можно утонуть, как показал эксперимент :))

    >И мат!

    когда связываешся с гамном, будь готов поплавать в нем :)

     
     
  • 3.160, jt3k (ok), 13:39, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +/

    > когда связываешся с гамном, будь готов поплавать в нем :)

    Важна не ошибка а реакция на ошибку. Уверен они это очень быстро смогут решить. Сообщество ведь живое. Ждём новостей. Лефтпад меньше недели провалялся анпаблишным в нпм.)

     
     
  • 4.162, Sw00p aka Jerom (?), 14:28, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Сообщество ведь живое.

    В аду своя жизнь!

    https://ru.wikipedia.org/wiki/%D0%90%D0%B4_%D0%B


     
  • 2.52, Sw00p aka Jerom (?), 13:46, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ПАТ

    ждем когда авторам позволят запрещать использовать свой код в качестве зависимости в других пакетах, что собственно равносильно вернуть возможность удаления пакета:)

    хотя из этого порочного круга можно выйти, и устанавливать галочку запрета единожды при регистрации нового пакета. И тогда ничего ломаться не будет, ибо никто в зависимости не потащит.

     
     
  • 3.65, ИмяХ (ok), 16:22, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тогда на каждый такой проект появятся тысячи автоматически синхронизируемых форков, что ещё больше раздует базу пакетов
     
     
  • 4.113, Sw00p aka Jerom (?), 22:53, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Тогда на каждый такой проект появятся тысячи автоматически синхронизируемых форков, что
    > ещё больше раздует базу пакетов

    ну запрет на форк никто не отменял :)

     

  • 1.19, Аноним (19), 12:59, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Чего-то Gentoo с portage попахивает. Будто это повод новость создать какие дураки бывают.
    В генте тоже можно новичку вдуплять на тему что делать когда обновление требует обновить зависимость, но другой пакет гвоздями прибит к этой версии зависимости.
     
     
  • 2.31, Аноним (31), 13:04, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Пожаловаться. Сделают для пакета зависимости слотовую установку.
     
  • 2.75, Котофалк (?), 18:06, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В плане зависимостей gentoo portage ничем не отличается от любой другой репы и всё зависит от мейнтейнеров. Для новичка в gentoo проблема в том, что он про зависимости не знает-не понимает (и, возможно, ни знать, ни понимать и не хочет), а от него требуется установка флагов с пониманием зависимостей.
     

  • 1.27, Аноним (27), 13:03, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вопрос к специалистам по NPM. NPM-репозтории - это репозитории, доступ к заливке только у его хозяев (в смысле, создателя этого сервиса), или любой Васян может залить туда вирус? Или же хозяева сами туда заливают вирусы? Получается, хозяева NPM репозитория днём и ночью пьют кефир и проверяют залитые пакеты от Васянов на вирусы? Или им пох.?
     
     
  • 2.35, Аноним (-), 13:07, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Или им пох.?

    Последнее)
    Ну могут добавить какую-то двухфакторку, чтобы от гореразраба, у которого один пароль на все сервисы, не заливали всякую чушню.

    От намеренной диверсии это не спасет, так же как и не спасет от заливки в репу вредноносного кода.
    Мало кто проверяет все изменения при обнолении программы.


     

  • 1.33, Аноним (33), 13:07, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >Примечательно, что удаление самого пакета "everything" также оказалось заблокированным, так как 9 лет назад в репозитории был размещён тестовый пакет "everything-else", в котором была указана строка "everything" в списке зависимостей. Таким образом, пакет "everything" после публикации оказался в зависимостях у другого пакета.

    Это баг npmа, что он позволил разместить пакет с неразрешёнными зависимостями.

     
  • 1.39, Тот_ещё_аноним (ok), 13:11, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    С NPM не пересекаюсь, а тут друг спрашивает...
    Можно использовать в имени требуемого пакета "*" или "?"? Чтоб не "everything1" & "everything2", а "everything?" или  "everything*"
     
     
  • 2.55, Аноним (55), 14:09, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нельзя
     
     
  • 3.116, Тот_ещё_аноним (ok), 01:21, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Спасибо
    Жаль, было бы эпично)
     
  • 3.161, jt3k (ok), 13:45, 09/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нельзя

    Надо смотреть в исходники, чтобы такое утверждать. Возможно и можно)

     

  • 1.40, Аноньимъ (ok), 13:12, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Пороть за такие "эксперементы".

    > Один из разработчиков JavaScript-пакетов

    Разработчик пакетов? Это что-то новое.

     
     
  • 2.67, scriptkiddis (?), 16:30, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почему пороть? Хотите чтобы этот прикольный эффект так и остался security by obscurity? Лицемерненько не?
     
     
  • 3.124, warlock66613 (ok), 14:11, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что не надо ссать в солонки.
     
     
  • 4.132, Аноним (132), 16:58, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тебе лично в солонку нассали? Как на тебе это отразилось?
     
  • 2.108, Аноним (108), 21:52, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Он же разработал именно пакет и даже применил знания из области структур данных, размазав всё по дереву. Разработчик позаботился о масштабируемости проекта. Так что всё корректно
     

  • 1.44, Аноним (44), 13:27, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Хакер и директор столовой
     
  • 1.48, Аноним (48), 13:38, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В NixOS рарзабы в документацию такую же бомбу положили.
    https://github.com/NixOS/nix/issues/308
    Вот тут они пишут "running nix-env -i again" Эта бомба установит всё подряд.
    https://nmikhailov.github.io/nixpkgs/index.html#sec-ad-hoc-packages
     
     
  • 2.137, Golangdev (?), 00:30, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ха!
    Лучше apt / apk / rpm ещё ничего не придумали.
     
     
  • 3.148, Аноним (148), 20:13, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > apt
    > rpm

    На разных уровнях работают; dpkg и rpm, тогда уж

     

  • 1.58, Вы забыли заполнить поле Name (?), 14:26, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Введут ограничение на кол-во зависимостей. Больше по подписке. Скриньте.
     
     
  • 2.107, Аноним (108), 21:49, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Больше 42 зависимости можно указывать только после KYC
     
  • 2.135, fuggy (ok), 23:49, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну будет не 5 пакетов chunk-N, а 50 пакетов chunk-N. Если не поможет, то добавят 3 уровень. А от ограничения количества пострадают в основном любители лефтпадов, которые каждую функцию в свой пакет формируют.
     

  • 1.59, Аноним (59), 15:23, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > пакет "everything" связан прямыми зависимостями с пятью пакетами
    > которые в свою очередь привязываются зависимостями к более 3000 пакетов
    > в каждом из которых осуществляется привязка к 800 существующих пакетов.

    И это самый standalone пакет в репозитории npm.

     
  • 1.60, ZloySergant (ok), 15:26, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Да это всё фигня, вы представьте какие лулзы автор эксплойта словит от введённых костылей, либо от позиции "всем пох".
     
  • 1.61, Аноним (61), 15:48, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Хакер и солонка в чистом виде!
     
     
  • 2.70, Аноним (70), 16:37, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да надоели вы со своими "умными" (именно в кавычках) историями.
    Проблема решается путём выдачи соли\сахара в одноразовом пакете.
     
     
  • 3.129, Аноним (132), 16:48, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хакер устраивается на фабрику, производящую пакеты с солью/сахаром.

    Хотя зачем фантазировать - про иглы в клубнике в Австралии мегаумный айтишник не слышал?

     
     
  • 4.133, 78 (?), 17:17, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Делает пластическую операцию, покупает поддельные документы, учится говорить с а... большой текст свёрнут, показать
     
  • 3.149, Аноним (149), 22:07, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    История очень даже умная, только мало кто умные выводы из неё делает (вот юзер 78 ниже сделал).
     

  • 1.76, Аноним (76), 18:09, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    кто-нить в курсе: всяко-разные cratesы и голангорги по тем же принципам работают, что и npm?
     
     
  • 2.140, Аноним (140), 02:37, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Насколько я знаю: повторить NPM с его приколами (типа исполнение произвольного скрипта при установке) ещё никто не решился...
     

  • 1.79, beck (??), 18:35, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Второй закон Вейнберга: если бы строители строили здания так же, как программисты пишут программы, первый залетевший дятел разрушил бы цивилизацию.
     
     
  • 2.105, Аноним (108), 21:46, 05/01/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не правда, everything-else бы не дал ей разрушится
     

  • 1.81, Аноним (11), 19:09, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тот случай, когда твой датацентр начинает подлагивать и уже пора задуматься о покупке нового
     
  • 1.94, Аноним (-), 20:04, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Таким образом, пакет "everything" после публикации оказался
    > в зависимостях у другого пакета.

    Таким образом тип провел DoS атаку на NPM, удостоверившись что теперь авторы вообще не смогут удалять пакеты. Вот уж что написано пером, не вырубишь топором!

     
  • 1.104, Аноним (108), 21:45, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Примечательно, что удаление самого пакета "everything" также оказалось заблокированным, так как 9 лет назад в репозитории был размещён тестовый пакет "everything-else", в котором была указана строка "everything" в списке зависимостей. Таким образом, пакет "everything" после публикации оказался в зависимостях у другого пакета.

    Т.е. получилась циклическая зависимость?

     
  • 1.106, Аноним (106), 21:48, 05/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Хорошая шутка.
     
  • 1.115, Аноним (115), 00:55, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    NPM на сегодняшний день, это наверное самый эффективный способ засрать себе файловую систему.
     
     
  • 2.131, Аноним (132), 16:55, 06/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Почему? Какие у тебя проблемы?
     

  • 1.134, Псевдонимус (?), 18:57, 06/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Яваскриптерам оказывается не чуждо чувство юмора.
     
  • 1.136, Golangdev (?), 00:27, 07/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Размещение "everything"

    "Размещение" бывает с *дамами лёгкого поведения* в сауне, а здесь - публикация. Публикация, не "размещение".

     
     
  • 2.138, Вы забыли заполнить поле Name (?), 01:00, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > "Размещение" бывает с *дамами лёгкого поведения* в сауне, а здесь - публикация. Публикация, не "размещение".

    Вот за что люблю местных экспертов, так это за их богатый жизненный опыт.

     
     
  • 3.144, Golangdev (?), 06:16, 07/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Всегда рад помочь, обращайтесь!
     
  • 2.147, Аноним (-), 19:15, 07/01/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     

  • 1.141, Вы забыли заполнить поле Name (?), 02:43, 07/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Примечательно, что удаление самого пакета "everything" также оказалось заблокированным, так как 9 лет назад в репозитории был размещён тестовый пакет "everything-else", в котором была указана строка "everything" в списке зависимостей.

    Получается можно публиковать пакет с зависимостями от несуществующих пакетов?

     
  • 1.150, _kp (ok), 00:30, 08/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Наглядный пример гнилой системы зависимостей, не отражающей фактические зависимости вообще.
    А влючение в зависимости не только не существующих пакетов, но и реальных, но не используемых уже маразм.

    Тут или всю систему менять, или раздувать дальше маразм ради маразма.

     
  • 1.163, crypt (ok), 19:31, 09/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    кто все эти люди и что за дичь они творят
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру