Всем привет, Сегодня мы поговорим о Никс — чисто функциональный менеджер пакетов.
Зачем создавать еще один велосипед, на этот раз с квадратными колесами и чисто функциональный? Существующие решения:
- не может обрабатывать обновление пакетов (обновление может удалить старые пакеты, что означает, что вам придется либо удалить все программы, которые зависят от этих пакетов, либо получить несогласованное состояние системы)
- не принимаются во внимание Все зависимости каждого отдельного пакета (и не могу этого сделать)
- не знаете и не можете знать точную комбинацию версий ядра, библиотек и пакетов, доступных на компьютере
- ориентированы на централизованные репозитории, каждый из которых будет иметь единую политику именования пакетов — в результате пакеты из этих репозиториев часто несовместимы, даже если используется одна и та же базовая технология (RPM, DEB)
- пакет — это результат вычисления чистой функции, аргументами которой являются все зависимости пакета (то есть других пакетов)
- Пакет, установленный в системе, не изменяется (нет побочных эффектов).
"Как же так?! Мой диск всего 2 ГБ!» — наверняка у читателя возникла примерно такая мысль.
:) Дело в том, что некоторые пакеты можно смело удалить, если от них не зависят другие пакеты.
Это очень похоже на «сборку мусора» в современных языках программирования.
Перечислим наиболее заметные преимущества Никс по сравнению с другими менеджерами пакетов:
- вполне возможно одновременно содержать несколько версий одного и того же пакета (например, это может быть полезно, если двум приложениям требуются две версии одной и той же библиотеки)
Сразу отметим, что операции обновления или удаления не могут повредить другие приложения благодаря тому, что эти операции никогда не перезаписывают и не удаляют файлы, которые используются другими пакетами.
- отслеживаются Все зависимости одного пакета — пакет, который работает на машине разработчика, будет работать и на машине пользователя.
- атомарность операции обновления и возможность отката любой обновиться (даже если во время обновления выдернуть вилку из розетки, система от этого не пострадает - но делать этого, конечно, не следует по понятным причинам)
- прозрачная поддержка пакетов, содержащих исходный код или скомпилированные двоичные файлы ( Никс может автоматически пропустить этап компиляции, если пакет уже доступен в скомпилированном виде)
- бинарные патчи (помимо автоматической загрузки доступных двоичных файлов, Nix может загружать разницу между двумя двоичными файлами)
обновление: форматирование обновление: перенесено в коллективный блог Теги: #Функциональное программирование #менеджер пакетов #*nix #открытый исходный код
-
Мобильный Веб-Сайт: Что Вам Нужно Знать
19 Oct, 24 -
Интервью: Ожидания Против Реальности
19 Oct, 24 -
Кто Хочет Участвовать В Стартапе?
19 Oct, 24 -
Опыт Анализа Пользовательского Кода C#.
19 Oct, 24