Проверка установки: 'политика способного кэша', по сравнению с 'который'

Я искал каждое изменение этого вопроса в течение многих дней, и я не смог найти четкое объяснение поэтому, я прихожу к коллективному знанию сюда в надеждах на разрешение моих вопросов об установке на дистрибутиве Linux.

Я установил (или по крайней мере попытался к), несколько пакетов от GitHub, и я думаю, что, возможно, установил их правильно потому что, когда я использую which <package> или <package> -h Я вижу путь (все находятся в/usr/bin/), и команды, связанные с корректными программами, однако, когда я использую apt-cache пакеты не могут быть найдены.

Мой вопрос - это: что точно является различием в apt-cache policy, which, и использование -h при проверке установки пакетов? Я установил каждый пакет немного по-другому и ни одного из них, я установил использование центра программного обеспечения для Ubuntu.

Для одного пакета:

git clone "package.git"
make
sudo ln -s ~/path/to/package_clone /usr/local/bin/.

для другого:

git clone https://github.com/package.git
cd pkg.dir/
sudo python setup.py install
pkg.dir -h
0
задан 21 July 2016 в 00:15

2 ответа

apt-cache информационный инструмент диспетчера пакетов apt / dpkg. Это только имеет информацию о пакетах, которые Вы установили через них (обратите внимание, что Центр программного обеспечения является просто фронтендом GUI для них), т.е. регулярные .deb пакеты (включая все из официальных репозиториев и PPAs).

, Если Вы устанавливаете приложения вручную или просто копированием их папок или запущением скриптов установки или make команды, это не регулярные пакеты и поэтому не управляемое диспетчером пакетов. Вот почему apt-cache не может найти информацию о пакетах - они просто не пакеты вообще.

<час>

Эти which команда, с другой стороны, не связана с пакетами, она просто показывает Вам, какой исполняемый файл выполнить при вводе определенной команды путем поиска всех каталогов, указанных в $PATH переменная среды для исполняемых файлов имени соответствия.

0
ответ дан 28 September 2019 в 22:46
  • Путем выполнения apt-cache policy <package. Вы отображаете информацию о приоритетном выборе именованного пакета.

    Рассматриваемый пакет должен быть установлен apt-get заранее. Это не будет знать о пакетах, которые Вы установили вручную (например, с git команда).

  • Путем выполнения which команда Вы спрашиваете свою систему, каков был бы точный тракт программы, если бы Вы пытались выполнить его.

    У каждого пользователя есть a PATH переменная среды, определенная, который содержит список каталогов ОС, будет искать (один за другим) точное совпадение названия программы, которое Вы ввели. Можно отобразить значение PATH со следующей командой:

    echo "$PATH"
    

    Вы могли бы получить результат, подобный: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/snap/bin".

    Если Вы вводите:

    which mail
    

    Система проверит:

    • делает /usr/local/sbin содержать mail? - Нет.
    • делает /usr/local/bin содержать mail? - Нет.
    • делает /usr/local/bin содержать mail? - Нет.
    • делает /usr/bin содержать mail? - Да. Так печать /usr/bin.

    Это означает, пытались ли Вы работать:

    mail
    

    Система будет работать /usr/bin/mail программа.

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

  • Путем запущения программы с -h аргумент Вы на самом деле пытаетесь выполнить его. В зависимости от точной реализации это могло бы отобразить справку, например:

    mail -h
    

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


Нет никакого "официального" способа проверить, установлена ли вручную установленная программа правильно, но две последних команды (which и попытка выполнить программу непосредственно), даст Вам наилучшее приближение.

Вместо справки Вы могли бы попытаться запустить программу с --version (или -v) аргумент, который является обычным способом попросить, чтобы выполненная программа отобразила свою версию.

0
ответ дан 28 September 2019 в 22:46

Другие вопросы по тегам:

Похожие вопросы: