LINUX.ORG.RU
ФорумTalks

Моя надстройка над yay для Archlinux — zypper-like интерфейс для yay на bash

 , , ,


0

1

Здравствуйте! Я вот подумал, что мне в Archlinux не нравится. Не нашел ничего, кроме синтаксиса pacman/yay.

Ну какой человек подумал, что пакеты из репо должны устанавливаться командой Sync (синхронизация), из архивов – Update (обновление), а кеш – это Query (очередь)?

И решил я сделать свою обертку. Она работает, выполняет все функции, которые в нее заложены. Потом, наверное, еще фичами обрастет.

#!/bin/bash
# Archpkg v0.1 -- zypper-подобная обертка над Yay (yet another yaourt)
# Author: Lev Zagatov
# Uses: yay
case $1 in
        "install"      )  yay -S "${@:2}"                                              ;;
        'in'           )  yay -S "${@:2}"                                              ;;
#===========================================================================================
        "install-src"  )  sudo pacman -U "${@:2}"                                      ;;
        'is'           )  sudo pacman -U "${@:2}"                                      ;;
#===========================================================================================
        "remove"       )  yay -R "${@:2}"                                              ;;
        'rm'           )  yay -R "${@:2}"                                              ;;
#===========================================================================================
        "search"       )  yay -Sys "${@:2}"                                            ;;
        'sr'           )  yay -Sys "${@:2}"                                            ;;
#===========================================================================================
        "search-cache" )  yay -Qs "${@:2}"                                             ;;
        'sc'           )  yay -Qs "${@:2}"                                             ;;
#===========================================================================================
        "update"       )  yay -Sy                                                      ;;
        'up'           )  yay -Sy                                                      ;;
#===========================================================================================
        "upgrade"      )  yay -Syu                                                     ;;
        'ug'           )  yay -Syu                                                     ;;
#===========================================================================================
        "upgrade-pkg"  )  yay -Sy "${@:2}"                                             ;;
        'uk'           )  yay -Sy "${@:2}"                                             ;;
#===========================================================================================
        "pacmancmd"    )  sudo pacman "${@:2}"                                         ;;
        "pc"           )  sudo pacman "${@:2}"                                         ;;
#===========================================================================================
        "yaycmd"       )  yay "${@:2}"                                                 ;;
        'yc'           )  yay "${@:2}"                                                 ;;
#===========================================================================================
        "help"         )  echo "Помощь по $0"
                          echo "===================================================="
                          echo "Команда      | Краткая | Описание"    
                          echo "install      | in      | Устанавливает пакет(ы)"
                          echo "install-src  | is      | Устанавливает из tar.zst"
                          echo "remove       | rm      | Удаляет пакет(ы)"    
                          echo "search       | sr      | Ищет пакет(ы) в репозиториях"
                          echo "search-cache | sc      | Ищет в кеше"
                          echo "update       | up      | Обновляет репозитории"
                          echo "upgrade      | ug      | Обновляет систему"
                          echo "upgradepkg   | uk      | Обновляет пакет(ы)"
                          echo "help         | he      | Показывает эту справку"       ;;
#===========================================================================================
        "he"           )  echo "Помощь по $0"
                          echo "===================================================="
                          echo "Команда      | Краткая | Описание"
                          echo "install      | in      | Устанавливает пакет(ы)"
                          echo "install-src  | is      | Устанавливает из tar.zst"        
                          echo "remove       | rm      | Удаляет пакет(ы)"
                          echo "search       | sr      | Ищет пакет(ы) в репозиториях"
                          echo "search-cache | sc      | Ищет в кеше"
                          echo "update       | up      | Обновляет репозитории"
                          echo "upgrade      | ug      | Обновляет систему"
                          echo "upgrade-pkg  | uk      | Обновляет пакет(ы)"
                          echo "help         | he      | Показывает эту справку"       ;;
#===========================================================================================
        ''             )  echo "Ошибка: команды не найдены"
                          echo "Выполните $0 help для получения помощи"                ;;
#===========================================================================================
        *              )  echo "Ошибка: команда $1 непонятна"
                          echo "Выполните $0 help для получения помощи"                ;;

esac

Управление происходит с помощью двух видов команд – полных и кратких. Краткие команды всегда содержат две буквы, но чаще выглядят нелогично. Полные команды больше напоминают обычные английские слова. Также можно запустить команду yay или pacman с помощью ./pkg yaycmd (yc) -Arg или ./pkg pacmancmd (pc) -Arg соответственно, но так как это нужно непонятно кому, в хелпе возможность не прописана. Делал полдня в качестве эксперимента на тему слишком аккуратного кода, а также как удобную мне штуковину.

Поставили бы её Вы?



Последнее исправление: zagatov_lev (всего исправлений: 3)

Ответ на: комментарий от hateyoufeel

Если есть зависимоть от arch и yay - то наеврное и дистрибуцировать лучше как репу c PKGBUILD и с указанием зависимости от yay. Даст больше автоматизации и понятности, чем добавлять проверки в код на bash

GPFault ★★
()

Query (очередь)

Ой.

Поставили бы её Вы?

Слишком много букв. Есть решение короче:

alias y='pikaur'
alias ysu='pikaur -Su'
alias ysy='pikaur -Sy'
alias yss='pikaur -Ss'
...

shahid ★★★★★
()
Ответ на: комментарий от shahid

Не, алиасы я делал у себя на дебиане. А у меня – интерфейс yay, похожий на apt/zypper

zagatov_lev
() автор топика
Ответ на: комментарий от hateyoufeel
#!/usr/bin/env bash
# Archpkg v0.2 -- zypper-подобная обертка над Yay (yet another yaourt)
# Author: Lev Zagatov
# Uses: yay, sudo

###=============check if user have not yay=============###
if [[ ! -f /usr/bin/yay ]]; then
        echo "У Вас нет yay. Проверка на Archlinux..."
                if [[ ! -f /usr/bin/pacman ]]; then
                        echo "Пакетный менеджер pacman не найден у Вас на компьютере; возможно, вы не используете Archlinux?"
                        exit 1
                else
                        echo "Ваша система -- Archlinux либо имеет скрипты для сборки пакетов из Archlinux. В этом случае Вы можете положиться на нас, yay будет установлен."
                        if [[ ! -f /usr/bin/sudo ]]; then
                                echo "sudo не найден на вашем компьютере; настройте и сконфигурируйте sudo для работы с archpkg." 
                                exit 1
                        fi
                fi
        echo "Сейчас начнется установка yay."
        sudo pacman -S git
        git clone https://aur.archlinux.org/yay-bin.git
        cd yay-bin
        makepkg -si
        cd ..
        rm -rf yay-bin/
        echo 'Если Вы видели ошибки при сборке, сообщите в тему: https://www.linux.org.ru/forum/talks/15846145.'
fi
###=============end of check=============###
###=============now archpkg can work!=============###


case $1 in
        "install"      )  yay -S "${@:2}"                                              ;;
        'in'           )  yay -S "${@:2}"                                              ;;
#===========================================================================================
        "install-src"  )  sudo pacman -U "${@:2}"                                      ;;
        'is'           )  sudo pacman -U "${@:2}"                                      ;;
#===========================================================================================
        "remove"       )  yay -R "${@:2}"                                              ;;
        'rm'           )  yay -R "${@:2}"                                              ;;
#===========================================================================================
        "search"       )  yay -Sys "${@:2}"                                            ;;
        'sr'           )  yay -Sys "${@:2}"                                            ;;
#===========================================================================================
        "search-cache" )  yay -Qs "${@:2}"                                             ;;
        'sc'           )  yay -Qs "${@:2}"                                             ;;
#===========================================================================================
        "update"       )  yay -Sy                                                      ;;
        'up'           )  yay -Sy                                                      ;;
#===========================================================================================
        "upgrade"      )  yay -Syu                                                     ;;
        'ug'           )  yay -Syu                                                     ;;
#===========================================================================================
        "upgrade-pkg"  )  yay -Sy "${@:2}"                                             ;;
        'uk'           )  yay -Sy "${@:2}"                                             ;;
#===========================================================================================
        "pacmancmd"    )  sudo pacman "${@:2}"                                         ;;
        "pc"           )  sudo pacman "${@:2}"                                         ;;
#===========================================================================================
        "yaycmd"       )  yay "${@:2}"                                                 ;;
        'yc'           )  yay "${@:2}"                                                 ;;
#===========================================================================================
        "help"         )  echo "Помощь по $0"
                          echo "===================================================="
                          echo "Команда      | Краткая | Описание"
                          echo "----------------------------------------------------"    
                          echo "install      | in      | Устанавливает пакет(ы)"
                          echo "install-src  | is      | Устанавливает из tar.zst"
                          echo "remove       | rm      | Удаляет пакет(ы)"    
                          echo "search       | sr      | Ищет пакет(ы) в репозиториях"
                          echo "search-cache | sc      | Ищет в кеше"
                          echo "update       | up      | Обновляет репозитории"
                          echo "upgrade      | ug      | Обновляет систему"
                          echo "upgradepkg   | uk      | Обновляет пакет(ы)"
                          echo "help         | he      | Показывает эту справку"       ;;
#===========================================================================================
        "he"           )  echo "Помощь по $0"
                          echo "===================================================="
                          echo "Команда      | Краткая | Описание"
                          echo "----------------------------------------------------"
                          echo "install      | in      | Устанавливает пакет(ы)"
                          echo "install-src  | is      | Устанавливает из tar.zst"        
                          echo "remove       | rm      | Удаляет пакет(ы)"
                          echo "search       | sr      | Ищет пакет(ы) в репозиториях"
                          echo "search-cache | sc      | Ищет в кеше"
                          echo "update       | up      | Обновляет репозитории"
                          echo "upgrade      | ug      | Обновляет систему"
                          echo "upgrade-pkg  | uk      | Обновляет пакет(ы)"
                          echo "help         | he      | Показывает эту справку"       ;;
#===========================================================================================
        ''             )  echo "Ошибка: команды не найдены"
                          echo "Выполните $0 help для получения помощи"                ;;
#===========================================================================================
        *              )  echo "Ошибка: команда $1 непонятна"
                          echo "Выполните $0 help для получения помощи"                ;;

esac

Проверьте, пожалуйста, у Вас на никсосе что сейчас выдает?

P.S. Обращение ко всем неарчеводам – протестируйте, пожалуйста, я просто не могу загрузиться в Ubuntu Mate.

zagatov_lev
() автор топика
Последнее исправление: zagatov_lev (всего исправлений: 2)
Ответ на: комментарий от athost

Не знаю. По идее, у yay полностью совместимый с pacman интерфейс, вы не знаете, может в пакмане есть?

В оболочке этого нет, так как я об этом вообще не знал, и у меня не было цели охватить все, что есть. Однако, если в пакмане есть, скажите, пожалуйста, протестирую.

zagatov_lev
() автор топика
Ответ на: комментарий от Gonzo

Тем, кто юзает не арч. Интересно, как он после фикса реагирует на отсутствие pacman и yay. Протестировать не могу, арч единственный.

zagatov_lev
() автор топика
Ответ на: комментарий от zagatov_lev

Проверил. Создал fakepkg, в котором кое-что поменял. Его запустил. Вот, проверил, реагирует адекватно, по крайней мере так.

zagatov_lev
() автор топика
Ответ на: комментарий от GPFault

Но это, понимаете, я пока что не собираюсь заниматься опакечиванием. Может, кто-то найдет и изменит специфичные для арча команды на команды от генты, например :) emerge поставит вместо pacman

zagatov_lev
() автор топика
Последнее исправление: zagatov_lev (всего исправлений: 1)

Вообще говоря, есть операционные системы, которые не являются Арчем, но при этом pacman там имеется. Например, MSYS2 на ядре Windows.

stevejobs ★★★★☆
()
Ответ на: комментарий от curufinwe

Ну раз makepkg работает, yay по идее тоже должен работать. Вечером, наверное, установлю, посмотрю, как скрипт работает.

zagatov_lev
() автор топика
Ответ на: комментарий от shahid

Слишком много букв

Извините за возможно бестактный вопрос, но Вы иксами пользуетесь?

zagatov_lev
() автор топика

Поставили бы её Вы?

Нет. Есть zsh с автодополнением.

Две минуты с линуксами, уже бесполезных костылей нагородил.

mad_austronaut ★★★★
()
Ответ на: комментарий от mad_austronaut

Нет. Есть zsh с автодополнением.

Это – zypper-like или apt-like интерфейс для yay. Zsh и автодополнение – это другое, почему люди не видят разницы между автодополнением и zypper-like интерфейсом…

Две минуты с линуксами, уже бесполезных костылей нагородил.

Во-первых, не две минуты. Два года линукс использую. Во-вторых… в чем костыльность?

zagatov_lev
() автор топика

Поставили бы её Вы?

Нет, конечно. Нет никакого смысла переделывать краткую и гибкую систему команд в неуниверсальную, многословную и кастрированную.

Siborgium ★★★★★
()
Ответ на: комментарий от Gonzo

Yay – это помощник aur для arch с pacman-подобным интерфейсом. Я добавил строки, анализирующие наличие yay и pacman. Запустите, пожалуйста, часть новой версии скриптика, у Вас на дебиане что выдает?

#!/usr/bin/env bash
# Archpkg v0.2 -- zypper-подобная обертка над Yay (yet another yaourt)
# ...

if [[ ! -f /usr/bin/yay ]]; then
        echo "У Вас нет yay. Проверка на Archlinux..."
                if [[ ! -f /usr/bin/pacman ]]; then
                        echo "Пакетный менеджер pacman не найден у Вас на компьютере; возможно, вы не используете Archlinux?"
                        exit 1
                else
                        echo "Ваша система -- Archlinux либо имеет скрипты для сборки пакетов из Archlinux. В этом случае Вы можете положиться на нас, yay будет установлен."
                        if [[ ! -f /usr/bin/sudo ]]; then
                                echo "sudo не найден на вашем компьютере; настройте и сконфигурируйте sudo для работы с archpkg." 
                                exit 1
                        fi
                fi
        echo "Сейчас начнется установка yay."
        sudo pacman -S git
        git clone https://aur.archlinux.org/yay-bin.git
        cd yay-bin
        makepkg -si
        cd ..
        rm -rf yay-bin/
        echo 'Если Вы видели ошибки при сборке, сообщите в тему: https://www.linux.org.ru/forum/talks/15846145.'
fi
# ...
zagatov_lev
() автор топика
Ответ на: комментарий от Gonzo

Я добавил строки, анализирующие наличие yay и pacman. Запустите, пожалуйста, часть новой версии скриптика, у Вас на дебиане что выдает?

zagatov_lev
() автор топика

v0.3

Так как обертка в первую очередь – эксперимент над кодом, то новая версия построена вокруг разграниченности и четкости кода. Добавлены рамочки, обновлен хелп. Также синтаксис

    full  ) command ;;
    short ) command ;;

заменен на недавно узнанный мной

   full|short ) command ;;

Сделан эффект вложенности в слишком длинных echo, например, в хелпе или длинных раздробленных сообщениях. Выглядит он так:

echo "This is a long long long"
  echo "long long long long"
  echo "string of text"

И, собственно, код.

#!/usr/bin/env bash
# Archpkg v0.3 -- script which makes zypper-like or apt-like interface for Yay
# Author: Lev Zagatov
# Contains: check -- checking for Yay, Pacman, Sudo; main -- main code: installing, removing, etc. 

##========================================beginning of 'check'======================================##
if [[ ! -f /usr/bin/yay ]]; then                                                                    ##
        echo "У Вас нет yay. Проверка на Archlinux..."                                              ##
                if [[ ! -f /usr/bin/pacman ]]; then                                                 ##
                        echo "Пакетный менеджер pacman не найден у Вас на компьютере;"              ##
                          echo "возможно, вы не используете Archlinux?"                             ##
                        exit 1                                                                      ##
                else                                                                                ##
                        echo "Ваша система -- Archlinux либо имеет"                                 ##
                          echo "скрипты для сборки пакетов из Archlinux."                           ##
                          echo "В этом случае Вы можете положиться на нас,"                         ##
                          echo "yay будет установлен."                                              ##
                        if [[ ! -f /usr/bin/sudo ]]; then                                           ##
                                echo "sudo не найден на вашем компьютере;"                          ##
                                  echo "настройте и сконфигурируйте sudo для работы с archpkg."     ##
                                exit 1                                                              ##
                        fi                                                                          ## 
                fi                                                                                  ##
                echo "Сейчас начнется установка yay."                                               ##
                sudo pacman -S git                                                                  ##
                git clone https://aur.archlinux.org/yay-bin.git                                     ##
                cd yay-bin                                                                          ##
                makepkg -si                                                                         ##
                cd ..                                                                               ##
                rm -rf yay-bin/                                                                     ##
                echo "Если Вы видели ошибки при сборке, сообщите в тему:"                           ##
                 echo "https://www.linux.org.ru/forum/talks/15846145"                               ##
fi                                                                                                  ##
##===========================================end of 'check'=========================================##

##=========================================beginning of 'main'======================================##
case $1 in                                                                                          ##
        "install"|"in"      )  yay -S "${@:2}"                                                      ;;
        "install-src"|"is"  )  sudo pacman -U "${@:2}"                                              ;;
        "remove"|"rm"       )  yay -R "${@:2}"                                                      ;;
        "clean"|"cl"        )  yay -Rsn $(yay -Qqdt)                                                ;;
        "search"|"sr"       )  yay -Sys "${@:2}"                                                    ;;
        "search-cache"|"sc" )  yay -Qs "${@:2}"                                                     ;;
        "update"|"up"       )  yay -Sy                                                              ;;
        "upgrade"|"ug"      )  yay -Syu                                                             ;;
        "upgrade-pkg"|"uk"  )  yay -Sy "${@:2}"                                                     ;;
        "pacmancmd"|"pc"    )  sudo pacman "${@:2}"                                                 ;;
        "yaycmd"|"yc"       )  yay "${@:2}"                                                         ;;
        "version"|"vr"      )  echo "Archpkg v0.3"                                                  ;;
        "help"|"he"         )  echo "Помощь по Archpkg v0.3"                                        ##
                                 echo "===================================================="        ##
                                 echo "Команда      | Краткая | Описание"                           ##
                                 echo "install      | in      | Устанавливает пакет(ы)"             ##
                                 echo "install-src  | is      | Устанавливает из tar.zst"           ##
                                 echo "remove       | rm      | Удаляет пакет(ы)"                   ##
                                 echo "search       | sr      | Ищет пакет(ы) в репозиториях"       ##
                                 echo "search-cache | sc      | Ищет в кеше"                        ##
                                 echo "update       | up      | Обновляет репозитории"              ##
                                 echo "upgrade      | ug      | Обновляет систему"                  ##
                                 echo "upgrade-pkg  | uk      | Обновляет пакет(ы)"                 ##
                                 echo "version      | vr      | Выводит на экран версию archpkg"    ##
                                 echo "help         | he      | Показывает эту справку"             ;;
        ''                  )  echo "Ошибка: команды не найдены"                                    ##
                                 echo "Выполните $0 help для получения помощи по Archpkg v0.3"      ;;
        *                   )  echo "Ошибка: команда $1 непонятна"                                  ##
                                 echo "Выполните $0 help для получения помощи по Archpkg v0.3"      ;;
                                                                                                    ##
esac                                                                                                ##
##===========================================end of 'main'==========================================##

И вроде как работает.
upd. Если у вас маленький монитор и символы переносятся на другую строку, перед копированием, пожалуйста, уменьшите размер страницы, чтобы сохранить форматирование, рамочки и красивый код.

Что еще можно добавить? А что исправить? Если есть идеи, помогите, пожалуйста, всегда готов обучаться скриптингу.

zagatov_lev
() автор топика
Последнее исправление: zagatov_lev (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.