Вчера Github представил службу управления пакетами Package Registry, которая упрощает публикацию общедоступных или частных пакетов рядом с исходным кодом.
Реестр пакетов полностью интегрирован с Github, здесь можно использовать те же инструменты поиска, просмотра и управления для поиска и публикации пакетов, что и для репозиториев. Для совместного управления кодом и пакетами также применимы разрешения для отдельных пользователей и групп. Github гарантирует «быструю и надёжную загрузку», поддерживаемую глобальным CDN Github. И поддерживает привычные инструменты управления пакетами: JavaScript (npm), Java (Maven), Ruby (RubyGems), .NET (NuGet) и образы Docker. В будущем список обещают расширить.
Инструмент easy_install является модулем набора расширений к distutils языка Python — setuptools. Согласно официальной документации «Easy Install — это модуль Python (easy_install), идущий в комплекте библиотеки setuptools, которая позволяет автоматически загружать, собирать, устанавливать и управлять пакетами языка Python». Пакеты носят название «eggs» и имеют расширение .egg. Как правило, эти пакеты распространяются в формате архива ZIP.
Emacs'ом я пользуюсь уже довольно давно и в общем-то для всего подряд. Хотя число elisp-пакетов распространяемых вместе с этим текстовым комбайном растет постоянно, иногда все же приходится устанавливать сторонние пакеты. Со временем их количество тоже постепенно растет, для них приходится отслеживать зависимости, их также необходимо (или желательно) обновлять, в общем, стандартный набор задач для менеджера пакетов. До недавнего времени для установки elisp-пакетов я пользовался системными пакет-менеджерами под linux типа apt, portage. Определенные неудобства конечно были, но настоящие проблемы начались когда Emacs пришлось использовать под Windows и Mac OS. Кроме собственно управления пакетами, появилась необходимость синхронизировать все установленные файлы, а не только настройки в ~/.emacs.
В итоге я созрел для использования полноценного менеджера elisp-пакетов, желательно обладающего следующими качествами:
большая база пакетов
удобство создания и поддержания собственных пакетов
легкость синхронизации установленных пакетов между компьютерами
кросс-платформенность без установки дополнительных приложений
После небольшого исследования существующих возможностей получился этот обзор, в котором я подробно на остановлюсь на elpa и el-get, а также кратко расскажу о других.
У меня дома используется Debian Sid. Большей частью он весьма и весьма хорош, но местами он слишком Bleeding слишком Edge. Например, когда отгружает пакеты, ломающие работоспособность системы. Вчера приехал wpasupplicant, который сломал мне wifi. Я его откатил, но в процессе я подумал, что многие пользователи не умеют этого делать. Рассказ "как откатить плохой apt-get install/upgrade" — в этом посте.
Ситуация
Мы сделали apt-get install что-то, или apt-get upgrade, или даже apt-get dist-upgrade, и после перезагрузки (или даже сразу же) обнаружили, что так нельзя. Сервис не стартует, убрана важная нам фича, кто-то падает и т.д. Мы хотим откатиться. Но вот, незадача — куда именно мы не знаем, потому что какая была версия до обновления мы не знаем.
Почти девять лет назад миру был представлен новый опенсорсный проект под названием NuGet. Спустя два года после своего дебюта NuGet начал поставляться в Microsoft Visual Studio, что актуально и по сей день. NuGet — это один из нескольких пакетных менеджеров (диспетчеров пакетов), таких как Node Package Manager (NPM) для JavaScript и Maven для Java. Пакетные менеджеры упрощают и автоматизируют использование библиотек. Например, если вам нужна библиотека для реализации JavaScript Object Notation (JSON) в вашем .NET-приложении, потребуется всего несколько кликов мышью, и ваше приложение получит мощные возможности, которые вам не нужно реализовывать самим, совершенно бесплатно.