Одна из бед Windows – это что в ней нет собственного package manager. Но Виндоус решила переплюнуть Линукс, и теперь есть package manager manager!
Это штука, которая поддерживает множество типов пакетов. Например, в комплекте есть плагин MSI, возвращающий список всех установленных на компьютере MSI-пакетов (добрая половина инсталляторов). Есть плагин chocolatey – тоже, оказывается, развитый репозиторий, который ещё и поддерживает “автоматически обновляемые пакеты” (т.е. сам сервер выпускает новую версию, когда она выходит на стороннем ресурсе). Пишут о 2800 программах (не считая версий)!
Всё это богатство доступно из командной строки:
Install-Package Firefox
Install-Package Thunderbird
Но не работает, поскольку в версии, попавшей в Windows 10, провайдер chocolatey недоступен, и все способы его добавить не дают возможности установить ПО (хотя поискать по спискам можно). Придётся ждать, когда его починят.
У авторов большие планы, хотят добавить поддержку всех крупных систем распространения модулей (например, питоновский pip или ruby gems).
Это штука с одной стороны очень интересная и полезная, с другой – надо подумать, решает ли она все проблемы? Что chocolatey, что oneget по большому счёту не лезут внутрь инсталляторов. chocolatey вообще часто скачивает готовый инсталлятор и формирует пакет “запустить msi с ключом тихой установки”. Они решают задачу пакетной установки программ.
Но другая цель менеджеров пакетов – это борьба с бардаком. Пользователь имеет право знать, какие файлы на его компьютере кто и зачем установил. Бесхозного мусора не должно быть. К сожалению, во всех современных системах программы сыплют всем подряд куда попало. Бросают свои модули в системные папки, пишут логи в папку Windows, создают временные директории в корнях дисков, складывают в папках данных свои исполняемые файлы, засыпают папку пользователя всевозможными “Моими проектами Visual Studio” и “Моими фотографиями со стиральной машины”. Андроид создавался с нуля, но в нём такой же дикий запад.
Настоящая задача менеджера пакетов – это разобрать ураган бумаги на отдельные книжки. Каждая программа должна работать отдельно от всего остального. Система не должна представлять собой клубок вермишели, части которой вплетаются в другие части и во всё окружающее. Этим ни chocolatey, ни one-get даже не пытаются заняться.
Автор OneGet пишет, объясняя такое решение: “Для Windows сделано что-то в духе двух миллионов программ, сложно ждать, что их все начнут перепаковывать”. Согласен, но иначе никак. Это главный смысл менеджера пакетов. Без него менеджер не менеджер, а пусть комфортная, очень удобная, но программа для автоматизации установки, вот и всё.
Скоро я напишу о настоящем менеджере пакетов, который тихой сапой есть в винде уже давно, но стараниями Майкрософт своей роли не выполняет и почти не известен.