Я использую Arch Linux. У меня установлен packer для пакетов AUR, но я хочу использовать команду pacman для обоих. Я думаю, что для этого мне понадобится функция - я имею в виду, что всякий раз, когда я использую pacman, он будет пытаться использовать упаковщик, а в случае неудачи (неверная опция) будет использовать pacman-color. Он также может решить, какую программу использовать, основываясь на аргументах. Я не могу просто использовать упаковщик (alias pacman = 'sudo packer'), потому что упаковщик не имеет некоторых параметров, таких как -R для удаления пакетов. Однако я хочу всегда использовать его для установки и обновления пакетов, поскольку он может быть установлен из репозиториев по умолчанию, а также из AUR.

Кто-то знает, как это сделать, или может указать мне правильное направление? Я новичок в сценарии Bash.

Благодарю.

РЕДАКТИРОВАТЬ: я пробовал pacman () { sudo packer $@ || sudo pacman-color $@ } , единственная проблема состоит в том, что, если упаковщик терпит неудачу, он печатает ошибку (например, pacman -V печатает упаковщик: Option '-V' is not valid.).

1 ответ1

1

Я понял это сам. Это работает хорошо (в .bashrc или .zshrc или что-то еще):

pacman() {
    if [[ $1 = -h* || $1 = "--help" ]]; then
        echo "pacman help:\n"
        /usr/bin/pacman -h
        echo "\n\npacker help:\n"
        packer -h
    elif [[ $1 = -V* || $1 = -Q* ]]; then
        pacman-colour "$@"
    elif [[ $1 = -Si*  || $1 = -Ss* ]]; then
        packer "$@"
    elif [[ ( $1 != -Sy $1 != -Sc* && $1 = -S* ) || $1 = -G* ]]; then
        sudo packer "$@"
    else
        sudo pacman-color "$@"
    fi
}

РЕДАКТИРОВАТЬ: На самом деле разработчик сделал то, что называется pacwrap, который делает работу лучше.

Он не использует sudo без необходимости и выбирает pacman или packer в зависимости от используемых операций.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .