Epm
Единая команда управления пакетами (epm)
EPM — имеющая одинаковый интерфейс на всех системах команда управления пакетами. При интерфейсе, похожем на rpm, apt и urpm, выполняет необходимые операции на любой платформе.
Включает в себя следующую функциональность:
- управление пакетами (установка — удаление — поиск)
- управление репозиториями (добавление — удаление — обновление — список)
- управление системными сервисами (включение — выключение — список)
Назначение
- в скриптах и установщиках, сервисных программах
- в повседневном администрировании различных систем
- для обучения: не нужны длинные статьи, как в той или иной системе работать с пакетами. EPM выводит каждую выполняемую им для реальных операций с пакетами
Установка
Установка пакетной версии из скрипта всё-в-одном
curl -sL https://eepm.ru/epm.sh | bash /dev/stdin ei
Установка из пакета
Если скрипт не смог скачать пакет для вашего дистрибутива, зайдите напрямую на http://download.etersoft.ru/pub/Korinf/, скачайте пакет под похожую версию дистрибутива и установите его с помощью epm.sh, предварительно скачав его:
# curl -O https://raw.githubusercontent.com/Etersoft/eepm/master/packed/epm.sh # sh ./epm.sh install <скачанный пакет>
Получить исходники можно здесь.
Список команд, epm --help :
Описание операции | Команда epm | Альтернативная команда epm | Команда Debian | Команда ALT Linux |
---|---|---|---|---|
Установка пакета по названию в систему | epm -i (package) | epm install (package) или epmi (package) | apt-get install (package) | apt-get install (package) |
Установка файла пакета в систему | epm -i (package file) | epm install (package file) или epmi (package file) | dpkg -i (package file); apt-get -f install (package file) | apt-get install (package file) |
Удаление пакета из системы | epm -e (package) | epm remove (package) или epme (package) | apt-get remove (package) ; dpkg -P (package) | apt-get remove (package) |
Поиск пакета в репозитории | epm -s (text) | epm search (text) или epms (text) | apt-cache search (text) | apt-cache search (text) |
Проверка наличия пакета в системе | epm -q (package) | epm installed (package) или epmq (package) | dpkg -l (package) (pipe) grep 'ii (package) | rpm -qa (pipe) grep (package) |
Список установленных пакетов | epm -qa | epm packages или epm list или epmqa | dpkg -l | rpm -qa |
Поиск по названиям установленных пакетов | epm -qp <word> | epmqp | grep <word> | grep <word> |
Принадлежность файла к (установленному) пакету | epm -qf (file) | epmqf (file) | dpkg -S (file) | rpm -qf (file) или rpmqf из etersoft-build-utils |
Поиск, в каком пакете есть указанный файл | epm -sf <file> | epm filesearch | ||
Список файлов в (установленном) пакете | epm -ql (package) | epm filelist <package> | dpkg -L (package) | rpm -ql (package) |
Вывести информацию о пакете | epm -qi (package) | epm info (package) | apt-cache show (package) | apt-cache show (package) |
Обновить дистрибутив | epm upgrade | epm dist-upgrade | apt-get dist-upgrade | apt-get dist-upgrade |
Таблицы:
- Основные действия с пакетами: команды для разных дистрибутивов
- То же самое в разных стилях: Fedora / Mandriva / Debian (epm -i, epmi, epm install)
Важно показать, что разброд и шатание заменяется на единообразность.
Примеры
# epms name subtext — выполняет epms name | grep subtest # epms name ^subtext — выполняет epms name | grep -v subtest # epms "name1 name2" — выполняет поиск именно такого сочетания
Особенности реализации
- сглаживание различий между разными уровнями управления пакетами: позволяет посмотреть список файлов пакета, как rpm -ql, и установить файлы пакетов с разрешением зависимостей, как yum install.
- максимальное соблюдение зависимостей между пакетами при операциях
Также epm позволит убрать учёт различий между пакетными менеджерами из Korinf, который также выполняет действия с пакетами в целевых системах.
Список поддерживаемых дистрибутивов и пакетных менеджеров
Менеджер пакетов | Дистрибутив |
rpm | alt asplinux suse mandriva rosa mandrake pclinux sled sles fedora redhat scientific centos rhel |
deb | debian ubuntu mint runtu mcst |
tgz | slackware mopslinux |
tbz | freebsd |
tbz2 | gentoo |
apk | alpine |
pkg.gz | sunos |
Добавление нового дистрибутива
* Добавляем в bin/distr_info
elif distro os-release && which apk 2>/dev/null >/dev/null ; then . $ROOTDIR/etc/os-release DISTRIB_ID="$ID" DISTRIB_RELEASE="$VERSION_ID" |
Детектим дистрибутив по пакетному менеджеру и файлу с релизом |
pkgtype() alpine) echo "apk" ;; |
Сопоставляем дистрибутив и пакетный менеджер |
* Добавляем в bin/epm-install
epm_install_names() apk) sudocmd apk add $@ return ;; epm_ni_install_names() apk) sudocmd apk add $@ return ;; |
Определяем команды для установки пакетов, высокоуровневую - из репозитория и низкоуровневую - из файла. Аналогично определяем остальные команды. |
Планы развития
- сделать поддержку перевода интерфейса на другие языки
- сделать man-страницы (английский, русский)
- поддержка NetBSD
- совместимые (универсальные) названия пакетов
- поддержка msi
- нужна помощь в упаковке в разные дистрибутивы (чтобы он был в каждой установленной системе)
Подобные проекты
Работающие для нескольких дистрибутивов менеджеры пакетов:
- smart (python): Arch, Debian, Mandriva, openSUSE, Slackware
- PackageKit: Fedora, Ubuntu, openSUSE, Mandriva (pkgcon in command line)
- Puppet
- w:Pkgsrc
Отличия от аналогов
- EPM написан на shell, поэтому не имеет зависимостей в системе, и не может сломаться при обновлении python.
- EPM поддерживает все дистрибутивы, а не некоторые системы
- EPM не является заменой штатного пакетного менеджера
- EPM не использует D-BUS, системные сервисы
Публикации и обсуждения
- http://www.pcweek.ru/foss/blog/foss/3761.php
- https://www.linux.org.ru/news/linux-general/8349517/
- http://www.nixp.ru/news/Компания-Etersoft-выпустила-EPM-универсальное-средство-управления-пакетами-в-Linux.html
Продвижение в дистрибутивы
- ALT Linux has the eepm package in ALT Linux p7 distro
- Debian build request
Замечания и предложения можно оставить здесь
Ссылки
- https://wiki.archlinux.org/index.php/Pacman/Rosetta
- Управление пакетами в популярных дистрибутивах
- Pacman Rosetta — хорошая таблица для примера исходной ситуации
- Известный список команд управления пакетами для различных систем
- Таблица команд двух популярных пакетных менеджеров
- Сравнение пакетных менеджеров
- http://wiki.openvz.org/Package_managers
- http://www.mebsd.com/make-build-your-freebsd-word/pkgng-first-look-at-freebsds-new-package-manager.html
- Описание zypper
- http://ru.opensuse.org/SDB:Zypper_использование
- http://wiki.russianfedora.ru/index.php/Работа_с_Yum
- http://windows-get.sourceforge.net/index.php
- http://chocolatey.org/
- rpm workalike for Gentoo Linux
- Фундаментальная проблема пакетных менеджеров для языков программирования
- Effing package management! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity.
- cURLing and Piping To Bash
- nosh — a suite of system-level utilities for initializing and running a BSD or Linux system