Epm: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
 
(не показано 48 промежуточных версий 2 участников)
Строка 11: Строка 11:
* в скриптах и установщиках, сервисных программах
* в скриптах и установщиках, сервисных программах
* в повседневном администрировании различных систем
* в повседневном администрировании различных систем
* для обучения: не нужны длинные статьи, как в той или иной системе работать с пакетами. EPM выводит каждую выполняемую им для реальных операций с пакетами команду
* для обучения: не нужны длинные статьи, как в той или иной системе работать с пакетами. EPM выводит каждую выполняемую им для реальных операций с пакетами
 


=== Установка ===
=== Установка ===
===== Установка пакетной версии из скрипта всё-в-одном =====
curl -sL https://eepm.ru/epm.sh | bash /dev/stdin ei
<!--
==== Установка из git репозитория ====
Epm и serv можно использовать без установки, например так скачав скрипт всё-в-одном:
# wget https://github.com/Etersoft/eepm/raw/master/packed/epm.sh && e=/usr/bin/epm; mv -u epm.sh $e && chmod 755 $e && rm -f epm.sh
# wget https://github.com/Etersoft/eepm/raw/master/packed/serv.sh && mv -u serv.sh /usr/bin/serv && chmod 755 /usr/bin/serv


Epm поставляется в пакете eepm. Для установки EPM в вашу систему скачайте соответствующий пакет с сайта http://download.etersoft.ru/pub/Etersoft/Sisyphus/
# wget https://github.com/Etersoft/eepm/raw/master/packed/epm.sh && e=/usr/bin/epm; mv -f epm.sh $e && chmod 755 $e && rm -f epm.sh #simple systems
и установите его.
  # wget https://github.com/Etersoft/eepm/raw/master/packed/epm.sh && e=/usr/local/bin/epm; mv -f epm.sh $e && chmod 755 $e && rm -f epm.sh #macOS
  Например так:
-->
wget ftp://updates.etersoft.ru/pub/Etersoft/Sisyphus/ALTLinux/Sisyphus/eepm && sudo rpm -Uvh eepm


Получить исходники можно [http://git.etersoft.ru/projects/?p=korinf/eepm.git;a=summary здесь]. EPM может работать без установки в систему. Исходные rpm-пакеты можно взять [http://download.etersoft.ru/pub/Etersoft/Sisyphus/sources здесь].
==== Установка из пакета ====
Если скрипт не смог скачать пакет для вашего дистрибутива, зайдите напрямую на 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 можно использовать без установки, скачав скрипт всё-в-одном.
Получить исходники можно [https://github.com/Etersoft/eepm здесь].
 
[http://wiki.etersoft.ru/Epmtest Состояние реализации под разные дистрибутивы].
 
===Особенности реализации===
# сглаживание различий между разными уровнями управления пакетами: позволяет посмотреть список файлов пакета, как rpm -ql, и установить файлы пакетов с разрешением зависимостей, как yum install.
# максимальное соблюдение зависимостей между пакетами при операциях
 
Также epm позволит убрать учёт различий между пакетными менеджерами из Korinf, который также выполняет действия с пакетами в целевых системах.


<!--Исходные rpm-пакеты можно взять [http://download.etersoft.ru/pub/Korinf/sources здесь].-->


===Список команд, epm --help :===
{| class="wikitable"
{| class="wikitable"
|-
|-
Строка 121: Строка 123:
Важно показать, что разброд и шатание заменяется на единообразность.
Важно показать, что разброд и шатание заменяется на единообразность.


==== Примеры ====
# epms name subtext — выполняет epms name | grep subtest
# epms name ^subtext — выполняет epms name | grep -v subtest
# epms "name1 name2" — выполняет поиск именно такого сочетания
===Особенности реализации===
# сглаживание различий между разными уровнями управления пакетами: позволяет посмотреть список файлов пакета, как rpm -ql, и установить файлы пакетов с разрешением зависимостей, как yum install.
# максимальное соблюдение зависимостей между пакетами при операциях
Также epm позволит убрать учёт различий между пакетными менеджерами из Korinf, который также выполняет действия с пакетами в целевых системах.
=== Список поддерживаемых дистрибутивов и пакетных менеджеров ===
{| class="wikitable"
|Менеджер пакетов
|Дистрибутив
|-
|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
|-
|}
=== Добавление нового дистрибутива ===
{| class="wikitable"
|* Добавляем в bin/distr_info
<pre>
elif distro os-release && which apk 2>/dev/null >/dev/null ; then
      . $ROOTDIR/etc/os-release
        DISTRIB_ID="$ID"
        DISTRIB_RELEASE="$VERSION_ID"
</pre>
|
Детектим дистрибутив по пакетному менеджеру и файлу с релизом <br>
Определяем DISTRIB_ID
|-
|
<pre>
pkgtype()
alpine) echo "apk" ;;
</pre>
| Сопоставляем дистрибутив и пакетный менеджер
|-
|* Добавляем в bin/epm-install
<pre>
epm_install_names()
              apk)
                      sudocmd apk add $@
                      return ;;
epm_ni_install_names()
              apk)
                      sudocmd apk add $@
                      return ;;
</pre>
|
Определяем команды для установки пакетов, высокоуровневую - из репозитория и низкоуровневую - из файла.
Аналогично определяем остальные команды.
|-
|}
=== Планы развития ===
* сделать поддержку перевода интерфейса на другие языки
* сделать man-страницы (английский, русский)
* поддержка NetBSD
* совместимые (универсальные) названия пакетов
* поддержка msi
* нужна помощь в упаковке в разные дистрибутивы (чтобы он был в каждой установленной системе)


=== Подобные проекты ===
== Подобные проекты ==
Работающие для нескольких дистрибутивов менеджеры пакетов:
Работающие для нескольких дистрибутивов менеджеры пакетов:
* smart (python): Arch, Debian, Mandriva, openSUSE, Slackware
* smart (python): Arch, Debian, Mandriva, openSUSE, Slackware
* [http://en.wikipedia.org/wiki/PackageKit PackageKit]: Fedora, Ubuntu, openSUSE, Mandriva (pkgcon in command line)
* [http://en.wikipedia.org/wiki/PackageKit PackageKit]: Fedora, Ubuntu, openSUSE, Mandriva (pkgcon in command line)
* [http://docs.puppetlabs.com/references/latest/type.html#package Puppet]
* [http://docs.puppetlabs.com/references/latest/type.html#package Puppet]
* [[w:Pkgsrc]]


=== Отличия от аналогов ===
=== Отличия от аналогов ===
Строка 134: Строка 222:
* EPM не использует D-BUS, системные сервисы
* EPM не использует D-BUS, системные сервисы


=== Планы развития ===
== Публикации и обсуждения ==
* сделать поддержку перевода интерфейса на другие языки
* сделать man-страницы (английский, русский)
* поддержка NetBSD
* совместимые (универсальные) названия пакетов
* поддержка msi
* нужна помощь в упаковке в разные дистрибутивы (чтобы он был в каждой установленной системе)
 
=== Публикации и обсуждения ===
* http://www.pcweek.ru/foss/blog/foss/3761.php
* http://www.pcweek.ru/foss/blog/foss/3761.php
* https://www.linux.org.ru/news/linux-general/8349517/
* https://www.linux.org.ru/news/linux-general/8349517/
* http://www.nixp.ru/news/Компания-Etersoft-выпустила-EPM-универсальное-средство-управления-пакетами-в-Linux.html
* http://www.nixp.ru/news/Компания-Etersoft-выпустила-EPM-универсальное-средство-управления-пакетами-в-Linux.html
=== Продвижение в дистрибутивы ===
* ALT Linux has the eepm package in ALT Linux p7 distro
* [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699588 Debian build request]
=== Замечания и предложения можно оставить здесь ===
* [http://bugs.etersoft.ru/show_bug.cgi?id=4754 Etersoft bugzilla epm bug]


=== Ссылки ===
=== Ссылки ===
* https://wiki.archlinux.org/index.php/Pacman/Rosetta
* [http://pcvector.ru/t134 Управление пакетами в популярных дистрибутивах]
* [https://wiki.archlinux.org/index.php/Pacman_Rosetta Pacman Rosetta — хорошая таблица для примера исходной ситуации]
* [http://freesource.info/wiki/NachatyeProekty/UstanovkaPaketovVRaznyxDistributivax Известный список команд управления пакетами для различных систем]
* [http://freesource.info/wiki/NachatyeProekty/UstanovkaPaketovVRaznyxDistributivax Известный список команд управления пакетами для различных систем]
* [http://tux-the-penguin.blogspot.com/2009/11/blog-post.html Таблица команд двух популярных пакетных менеджеров]
* [http://tux-the-penguin.blogspot.com/2009/11/blog-post.html Таблица команд двух популярных пакетных менеджеров]
Строка 156: Строка 246:
* http://ru.opensuse.org/SDB:Zypper_использование
* http://ru.opensuse.org/SDB:Zypper_использование
* http://wiki.russianfedora.ru/index.php/Работа_с_Yum
* http://wiki.russianfedora.ru/index.php/Работа_с_Yum
* [http://pcvector.ru/t134/ Управление пакетами в популярных дистрибутивах]
* http://windows-get.sourceforge.net/index.php
* http://windows-get.sourceforge.net/index.php
* http://chocolatey.org/
* http://chocolatey.org/
* [https://github.com/fuzzyray/epm rpm workalike for Gentoo Linux]
* [http://habrahabr.ru/post/250065/ Фундаментальная проблема пакетных менеджеров для языков программирования]
* [https://github.com/jordansissel/fpm Effing package management! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity.]
* [https://pi-hole.net/2016/07/25/curling-and-piping-to-bash cURLing and Piping To Bash]
* [https://jdebp.uk/Softwares/nosh/ nosh —  a suite of system-level utilities for initializing and running a BSD or Linux system]
[[Категория:Инструменты]]

Текущая версия на 12:55, 15 августа 2022

Единая команда управления пакетами (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

Таблицы:

  1. Основные действия с пакетами: команды для разных дистрибутивов
  2. То же самое в разных стилях: 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" — выполняет поиск именно такого сочетания

Особенности реализации

  1. сглаживание различий между разными уровнями управления пакетами: позволяет посмотреть список файлов пакета, как rpm -ql, и установить файлы пакетов с разрешением зависимостей, как yum install.
  2. максимальное соблюдение зависимостей между пакетами при операциях

Также 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"

Детектим дистрибутив по пакетному менеджеру и файлу с релизом
Определяем DISTRIB_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, системные сервисы

Публикации и обсуждения

Продвижение в дистрибутивы

Замечания и предложения можно оставить здесь

Ссылки