Страницы

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

вторник, 7 апреля 2020 г.

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

#ubuntu #debian #apt_get

                    
По какой-то причине у меня оказались установленными две версии пакета 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 и будет использоваться нужная
мне версия. Но я хочу разобраться в причине дублирования и полностью его устранить.
    


Ответы

Ответ 1



/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) неиспользуемый файл.

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

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