Страница 1 из 1

zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 10:20
sokoloff
Когда я перешел на Росу меня удивили urpm утилиты. После aptitude они создавали ощущение набора костыликов. Основные претензии у меня к urpmq, с одной стороны она выдает лишнюю информацию, старые версии пакетов, пакеты под чужие архитектуры. С другой стороны информации мало, из вывода urpmq нельзя узнать установлен ли пакет и требует ли он обновления.

В результате я решил это исправить и написал свою консольную программу для управления пакетами - zrpm.

Преимущества
  • Безопасно. Для опасных операции вроде установки, удаления пакетов, обновления репозиториев и.т.д. используются штатные urpm утилиты. Поэтому, если вы доверяете urpm, то можете быть спокойны, zrpm не сломает Вашу систему.
  • Быстро. Поиск работает намного быстрее, например у меня `urpmq --fuzzy qt` думает 4 с лишним минуты, а `zrpm search qt` выдает результат за 3 секунды.
  • Удобно. Хоть утилита и не покрывает все возможности urpm, но все ежедневные действия делаются с помощью одной утилиты и единообразными опциями командной строки. Поиск выдает информацию в цвете и сообщает статус пакета - установлен, не установлен, требует обновления.
Установка
Программа написана на Go и не требует для работы никаких зависимостей. Просто скачайте бинарник для Вашей архитектуры из репозитория, положите его в /usr/bin, /usr/local/bin или ~/bin и можете запускать. Никакой настройки программа не требует. Если будет интерес к программе я подготовлю нормальный пакет.

Использование
Как я уже говорил программа не имеет всех возможностей urpm утилит, но все "ежедневные" потребности она покрывает и даже чуть больше. Сейчас программа может делать следующее:
  • Поиск пакетов
    Для поиска пакетов используется команда `zrpm search строка_поиска` Пример:

    Код: Выделить всё

    zrpm search qtcurve
    zrpm1.png
    Сразу видно какие пакеты установлены, какие нет, а какие устарели.
    Можно использовать щаблоны "*" и "?", только не забывайте брать их в кавычки. Например zrpm search "qt?-designer" найдет и qt4-designer и qt5-designer
    zrpm2.png
    Программа показывает только последние версии и только пакеты подходящие для вашей архитектуры, но при желании можете использовать ключи `--showduplicates` и `--arch`

    Если нужно узнать имя пакета в который содержит нужную программу, можно использовать `zrpm files имя_нужного_файла` Пример:

    Код: Выделить всё

    zrpm files bin/boomaga
  • Просмотр подробной информации о пакетах
    Поиск выдает только минимум информации, если надо больше, то используйте команду `zrpm show строка_поиска` Пример:

    Код: Выделить всё

    zrpm show "qt?-designer"
    zrpm3.png
    Программа показывает только последние версии и только пакеты подходящие для вашей архитектуры, но при желании можете использовать ключи `--showduplicates` и `--arch`
  • Установка, обновление и удаление пакетов
    Для установки или обновления пакетов используйте `zrpm install пакет`, можно указать несколько пакетов. Программа спросит пароль и установит или обновит пакеты.
    Для удаления используйте `zrpm remove пакет`.
  • Обновление списка пакетов из репозитория, и обновление системы
    Для обновление списка пакетов используйте `zrpm update`.
    Для обновления всех программ в системе используйте `zrpm upgrade`
    Возможно я добавлю автоматическое обновление реп, если они устарели. Вопрос нужно это, и какое время считать устаревшим 30 минут, 1 час, пол дня.
  • Список репозиториев
    Команда `zrpm repo` выводит список репозиториев и дату последнего обновления. Если нужна еще какая информация, пишите в комментах.
  • Прочее
    Используя команды `zrpm download имя_пакета` и `zrpm source имя_пакета` можно скачать RPM или SRC.RPM файл соответственно.
О багах и пожеланиях можно писать в баг-треккер или обсуждать в этой ветке.
Мне очень интересно, такая программа нужна еще кому кроме меня, пишите Ваши отзывы.

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 12:26
Delles
Умеет ли она автоматически переключаться на работающий репозиторий, если первый, к которому она обратилась, не работает? Такая опция была бы очень кстати: официальный репозиторий не отозвался, тут же запрашивается репозиторий на Яндексе.

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 14:15
sokoloff
Основные фишки связаны с поиском и отображением информации.
При обновлениях программа работает как враппер, т.е. просто запускает urpm утилиты. Я не нашел полноценной информации об устройстве репозитория, поэтому не стал рисковать, пусть urpm разбирается с ними.

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 14:33
Delles
Но ведь при недоступности основного репозитория будет выведена ошибка, почему бы при выводе ошибки (сообщения о недоступности) не прописать перезапуск urpm снова с адресацией ее уже на Яндекс-репозиторий?

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 15:52
sokoloff
Delles писал(а):Но ведь при недоступности основного репозитория будет выведена ошибка, почему бы при выводе ошибки (сообщения о недоступности) не прописать перезапуск urpm снова с адресацией ее уже на Яндекс-репозиторий?
Мы говорим про обновление списка пакетов (urpmi.update) или про установку программ (urpmi program)?
В принципе я не против. Но как делать "переадресацию на Яндекс-репозиторий", есть такая опция? Или надо подменять /etc/urpmi/urpmi.cfg.
И еще. Насколько яндексовское зеркало актуально обноывляется? Может проще совсем переключиться на него?

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 16:26
Delles
sokoloff писал(а):Мы говорим про обновление списка пакетов (urpmi.update) или про установку программ (urpmi program)?
Я больше имел в виду установку. Кому-то понадобилась некая программа, а основной репозиторий не работает. Человек часто даже не понимает, почему она у него не устанавливается.
sokoloff писал(а):Но как делать "переадресацию на Яндекс-репозиторий", есть такая опция? Или надо подменять /etc/urpmi/urpmi.cfg.
Это уж Вам виднее, как лучше. http://mirror.yandex.ru/rosa/
sokoloff писал(а):Насколько яндексовское зеркало актуально обноывляется? Может проще совсем переключиться на него?
У меня такое впечатление, что там всё свежее появляется очень быстро. М.б. там дежурят демоны, которые сразу забирают всё новое с основных репозиториев?.. Федора 23 там появилась практически сразу же. Оцените сами http://mirror.yandex.ru/

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 19:16
Галахов Роман
sokoloff писал(а):И еще. Насколько яндексовское зеркало актуально обноывляется? Может проще совсем переключиться на него?
По статусу оно, так же как и rosalab.ru 2-е после ABF (с которого зеркалируется). Если хотите самое свежее - только ABF но там канал достаточно слабый, не потянет большое количество клиентов.

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 20:27
sokoloff
Галахов Роман писал(а):
sokoloff писал(а):И еще. Насколько яндексовское зеркало актуально обноывляется? Может проще совсем переключиться на него?
По статусу оно, так же как и rosalab.ru 2-е после ABF (с которого зеркалируется). Если хотите самое свежее - только ABF но там канал достаточно слабый, не потянет большое количество клиентов.
Роман может Вы проясните есть в Росе понятие зеркала, т.е. можно ли настроить 2 репозитория для одних пакетов?

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 21:19
Галахов Роман
sokoloff писал(а):Роман может Вы проясните есть в Росе понятие зеркала, т.е. можно ли настроить 2 репозитория для одних пакетов?
Я, конечно не разработчик, но вижу ситуацию так:
Есть 2 главных зеркала:
39.png
Есть "Настройка источников" - куда можно добавить хоть все...
40.png
И включить все.
До этого все для всех понятно.
Но возникает вопрос - "Как сделать настройку приоритета репозитория (когда работают сразу все - откуда качать/устанавливать, чтобы не было сбоя из-за задвоения)?" Как это отрабатывается по порядку в списке или еще как? Тут увы я подсказать не могу, хотя самому интересно, так как есть свой локальный репозиторий (зеркало rosalab.ru на NAS) и как их использовать совместно пока не знаю и перешел с локального на интернет-репозиторий.

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 21:49
Barmalei
По моему Яндекс завязан с Росой и приоритет устанавливается.

Re: zrpm - консольный менеджер пакетов

Добавлено: 07 ноя 2015, 22:21
sokoloff
Barmalei писал(а):По моему Яндекс завязан с Росой и приоритет устанавливается.
У меня похожая ошибка выскочила, но репы добавились. После этого через кнопку "Редактировать" я поменял для всех яндесовых реп ftp на http, после этого заработало.

Re: zrpm - консольный менеджер пакетов

Добавлено: 08 ноя 2015, 12:32
sokoloff
Галахов Роман писал(а):есть свой локальный репозиторий (зеркало rosalab.ru на NAS) и как их использовать совместно пока не знаю и перешел с локального на интернет-репозиторий.
Мне кажется что это подойдет https://wiki.mageia.org/en/Urpmi-proxy

Re: zrpm - консольный менеджер пакетов

Добавлено: 08 ноя 2015, 12:43
sokoloff
Так, первые косяки вылезли. После добавления яноксовых зеркал выяснилось что в их директорях (/var/lib/urpmi/XXX) есть только synthesis.hdlist.cz и нет info.xml.lzma. А моя программа берет описания из info.xml.lzma. В synthesis храниться только некоторая информация urpmihowto говорит "a synthesis.hdlist.cz file, much smaller than the hdlist and that contains only the information necessary to urpmi to resolve dependencies", это понятно, не понятно откуда брать остальную информацию для этих репозиториев.
Или это только у меня нет файлов info.xml.lzma, из-за косяков с яндексовым ftp. Ребят, у кого нормально зеркала настроены посмотрите есть у вас файлы info.xml.lzma во всех директориях в /var/lib/urpmi?

Re: zrpm - консольный менеджер пакетов

Добавлено: 08 ноя 2015, 13:54
Галахов Роман
sokoloff писал(а):Так, первые косяки вылезли. После добавления яноксовых зеркал выяснилось что в их директорях (/var/lib/urpmi/XXX) есть только synthesis.hdlist.cz и нет info.xml.lzma. А моя программа берет описания из info.xml.lzma. В synthesis храниться только некоторая информация urpmihowto говорит "a synthesis.hdlist.cz file, much smaller than the hdlist and that contains only the information necessary to urpmi to resolve dependencies", это понятно, не понятно откуда брать остальную информацию для этих репозиториев.
Или это только у меня нет файлов info.xml.lzma, из-за косяков с яндексовым ftp. Ребят, у кого нормально зеркала настроены посмотрите есть у вас файлы info.xml.lzma во всех директориях в /var/lib/urpmi?
Я не знаю к какому зеркалу подключен - прописано $MIRRORLIST
Этот файл есть
41.png
Но откуда он я не понимаю
Тут его нет ftp://mirror.rosalab.ru/rosa/rosa2014.1 ... edia_info/
И тут ftp://mirror.yandex.ru/rosa/rosa2014.1/ ... edia_info/

Re: zrpm - консольный менеджер пакетов

Добавлено: 17 янв 2016, 10:48
semivanya
А есть возможность удалять пакеты по шаблону названия? например kernel-nrj-desktop-4.1.* ?
так что при вводе части названия пакета и нажатии tab ничего не предлагает?

Re: zrpm - консольный менеджер пакетов

Добавлено: 17 янв 2016, 16:46
sokoloff
semivanya писал(а):А есть возможность удалять пакеты по шаблону названия? например kernel-nrj-desktop-4.1.* ?
Если urpme это умеет, то и zrpm может. Установка/удаление/обновление сделано как тонкая надстройка над urpm утилитами.
semivanya писал(а):так что при вводе части названия пакета и нажатии tab ничего не предлагает?
Клике на таб обрабатывает шелл, в bash это пакет bash bash-completion