Удалённый пакет, но команда осталась доступной для пользователя (команда не найдена с sudo)

Вопрос или проблема

Я недавно установил silversearcher-ag с помощью sudo и удалил его, так как для выполнения команды каждый раз требовался sudo.

Команды, которые я использовал для установки и удаления этого пакета соответственно:

# установка
sudo apt install silversearcher-ag
# удаление
sudo apt remove silversearcher-ag
sudo apt autoremove

Как упоминалось в комментарии, вот вывод для type -a ag:

ag is aliased to `apt-get update;apt-get dist-upgrade'

После удаления я обнаружил, что если я выполню sudo ag, команда корректно завершится с ошибкой “команда не найдена”; однако, если я просто выполню ag как пользователь, я все равно смогу выполнить команду (хотя команда фактически не удалась из-за отсутствия прав, т.е. её нужно выполнять с sudo каждый раз).

Я проверил такие места, как /usr/bin/, /usr/local/bin, /usr/sbin/, /usr/local/sbin, sbin/, bin/, команда ag не находилась ни в одном из них.

whereis, locate не выдали совпадающих результатов.

Я также попробовал

sudo apt purge silversearcher-ag
sudo apt purge silversearcher-ag*

Первая команда фактически удалила некоторые дополнительные привязки, вторая просто ничего не удалила. После выполнения этих двух команд ag все еще оставался.

Что мне нужно сделать, чтобы полностью удалить этот пакет?

Я использую MX Linux 23-ahs, основанный на Debian 12 bookworm.

Лучший способ узнать, что вы на самом деле выполняете, когда запускаете команду, это type -a. Например:

$ type -a ls
ls is aliased to `ls --color=tty'
ls is /sbin/ls
ls is /usr/sbin/ls
ls is /usr/bin/ls
ls is /usr/bin/ls
ls is /bin/ls
ls is /sbin/ls
ls is /bin/ls

Как видно выше, это находит различные исполняемые файлы ls, которые у меня есть (я использую Arch, это все символические ссылки на /usr/bin/ls), а также алиас. Вероятно, у вас есть какая-то несвязанная команда или алиас с таким именем, и именно это вы видите при выполнении.

В вашем случае ag было привязано к apt-get update;apt-get dist-upgrade, двум командам, которые требуют права root, отсюда ошибка о необходимости выполнения от имени root.

Ответ или решение

Проблема с устаревшей командой ag после удаления пакета silversearcher-ag

Введение

При работе в среде Linux, особенно на дистрибутивах, основанных на Debian, таких как MX Linux, могут возникать ситуации, когда команды остаются доступными даже после их удаления. В вашем случае, после удаления пакета silversearcher-ag, команда ag все еще функционировала в режиме пользователя, но вызывала ошибку при попытке выполнить её с помощью sudo. Давайте разберёмся с возникшей проблемой и найдём правильное решение.

Анализ проблемы

  1. Установка и удаление пакета: Вы установили silversearcher-ag с помощью команды:

    sudo apt install silversearcher-ag

    и удалили его:

    sudo apt remove silversearcher-ag
    sudo apt autoremove

    Ни одна из этих команд не должна оставить следы в виде исполняемых файлов ag, если пакет был установлен корректно.

  2. Проверка типа команды:
    Выполнив команду type -a ag, вы получили следующий результат:

    ag is aliased to `apt-get update;apt-get dist-upgrade'

    Это означает, что команда ag была переопределена как алиас, а не как исполняемый файл. Алиасы могут быть заданы в конфигурационных файлах оболочки (например, .bashrc, .bash_aliases или .profile).

  3. Поиск исполняемых файлов:
    Вы проверили различные каталоги, такие как /usr/bin и другие, но не нашли никаких следов команды ag. Это подтверждает, что перестановленный алиас — это основная причина проблемы, а не наличие недоступного пакета.

Решение проблемы

Чтобы полностью удалить алиас и восстановить нормальное поведение команды ag, выполните следующие шаги:

  1. Удалите или измените алиас:
    Для начала, вам нужно найти в каких файлах задается алиас ag и удалить его. Выполните следующую команду, чтобы быстро найти место:

    grep -R 'alias ag' ~/

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

  2. Обновите настройки оболочки:
    После удаления алиаса, выполните:

    source ~/.bashrc

    или перезапустите терминал, чтобы изменения вступили в силу.

  3. Проверьте снова:
    После выполнения вышеуказанных шагов, попробуйте снова выполнить команду:

    type -a ag

    Убедитесь, что алиас больше не отображается в выводе.

  4. Проверка:
    Попробуйте запустить ag без каких-либо параметров. Если алиас был удалён, команда должна либо завершиться с ошибкой (если ag больше не установлен), либо сообщить о неправильном использовании (если она переопределена).

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...