Страницы

Поиск по вопросам

пятница, 21 июня 2019 г.

Почему появляются дубли одного пакета в разных путях и как исправить ситуацию?

По какой-то причине у меня оказались установленными две версии пакета ansible. Я удалил один из них с помощью apt-get purge, но второй остался установлен.
ppa:ansible/ansible это официальный репозиторий ansible (кто бы мог подумать) ubuntu.local — это наше локальное зеркало.
$ cat /etc/apt/sources.list.d/ppa_ansible_ansible_trusty.list http://ppa.launchpad.net/ansible/ansible/ubuntu
$ sudo apt-cache policy ansible ansible: Installed: (none) Candidate: 2.0.0.2-1ppa~trusty Version table: 2.0.0.2-1ppa~trusty 0 500 http://ppa.launchpad.net/ansible/ansible/ubuntu/ trusty/main amd64 Packages 1.7.2+dfsg-1~ubuntu14.04.1 0 100 http://ubuntu.local/ubuntu/ trusty-backports/universe amd64 Packages 1.5.4+dfsg-1 0 500 http://ubuntu.local/ubuntu/ trusty/universe amd64 Packages
$ dpkg -l | grep ansible (возвращает пустую строку)
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ ansible --version ansible 1.9.4 configured module search path = None
$ which ansible /usr/local/bin/ansible
Похоже, apt-get устанавливает его в другое место
$ sudo apt-get install ansible $ ls /usr/bin/ansible -l -rwxr-xr-x 1 root root 3944 Jan 15 04:33 /usr/bin/ansible
Понятно, что я могу просто поменять переменную $PATH и будет использоваться нужная мне версия. Но я хочу разобраться в причине дублирования и полностью его устранить.


Ответ

/usr/local/bin/ansible — этот файл явно появился здесь в обход пакетного менеджера.
проверить это можно, сделав запрос к базе данных dpkg:
$ dpkg -S /usr/local/bin/ansible
и получив в ответ, что no path found matching pattern

Но я хочу разобраться в причине дублирования и полностью его устранить.
вероятно, вы запустили какой-нибудь «инсталлятор» (install.sh, pip install что-нибудь и т.д. и т.п.)
Понятно, что я могу просто поменять переменную $PATH
вот этого делать, по-моему, не стоит. если у использованного «инсталлятора» нет функции «убрать весь мусор, который он разложил по разным уголкам файловой системы», то, в конце концов, можно удалить/переименовать (например, в /usr/local/bin/ansible-1.9.4) неиспользуемый файл.

Комментариев нет:

Отправить комментарий