Проблема заключается в единственном определении "установленного" слова. Существует несколько способов интерпретировать его.
Типичный и самый надлежащий способ "установить" программу состоит в том, чтобы использовать инструмент (инструменты) диспетчера пакетов. Они варьируются от распределения до распределения: на хинду, существует emerge
и и набор других полезных программ вокруг перевозки; в находящихся в Debian системах (как Ubuntu), существуют apt-<something>
инструменты и так далее. Эти инструменты - то, что необходимо использовать каждый раз, когда возможный - и для установки и для поиска доступного/установленного программного обеспечения - их основное задание в системе состоит в том, чтобы поддержать всю информацию об официальном программном обеспечении.
Программное обеспечение, которое не доступно в репозиториях, может также быть установлено его собственными определенными сценариями установки. Такое программное обеспечение не будет автоматически замечено инструментами управления системой - который может вызвать различные проблемы. Для нахождения компонентов таких программ Вас оставляют использовать инструменты как locate
, find
, which
или whereis
.
Можно также создать программу, поместить ее "вручную" и скорректировать среду (как PATH
) так, чтобы это стало применимым. И от пользователя и от точка зрения системы это может очень отличаться, может немного отличаться или не может отличаться вообще по сравнению с предыдущим подходом.
В Вашем случае необходимо различать нахождение двоичного файла и определение, если определенный пакет установлен. Для практической части нахождения двоичного файла можно просто использовать which
или whereis
. Обратите внимание что PATH
переменная окружения может отличаться для корневых и некорневых пользователей. Если Вы хотите определить, установлен ли пакет (использование первой интерпретации того слова), используйте программное обеспечение управления пакетом своего распределения.
Хорошо, отвеченный.
Когда я работаю ssh
с -v
опция, это показало мне фактическую ошибку.
Это было вызвано путем ошибочной установки неправильных прав доступа на /dev/tty
, безотносительно то есть, и ssh так или иначе не любил его. sudo chmod 777 /dev/tty
казалось, зафиксировал его.
Таким образом, проблема плаката была разрешена. Но в случае, если другие приходят к этому вопросу путем поиска, и их признаки не прибывают из той же причины:
Удаление ~/.ssh/known_hosts
(или просто незаконная строка в нем), произведет чистку кэшируемого ключа хоста. Однако существует также кэш в масштабе всей системы, который будет сохранен где-нибудь как /etc/ssh/ssh_known_hosts
. Ключи хоста не будут кэшироваться там, если это не будут конкретно требовать. Но если Вы имеете проблемы проверки ключа хоста, взглянули в обоих из этих файлов.
С этой проблемой также можно столкнуться различными способами, особенно при работе с Windows, к которой может быть подключено несколько реализаций SSH.
Я столкнулся с этим при ssh-подключении к машине с Windows 10, на которой был запущен SSH-сервер под управлением Cygwin. Когда вы запускаете ssh
из этого приглашения, он запускает версию ssh для cygwin, которая использует ~/.ssh для хранения файлов ssh ---под cygwin, то есть /home/username.
Однако, если вы запускаете git
из того же приглашения, а Git был установлен через Windows (, что в моем случае было ), он использует файлы ssh из C :\Users\ имя пользователя.ssh.
Обычно вы запускаете ssh hostname
для кэширования ключа хоста для git, но в этом случае это не работает, так как существуют разные известные _файлы hosts.
Когда я скопировал ключ из одного известного файла hosts _в другой, команды git
работали нормально.
666
. Нет никакого смысла дающего разрешение выполнения тому устройству. – Stéphane Chazelas 23.09.2012, 10:56debug1: read_passphrase: can't open /dev/tty: No such device or address
) ноchmod 666 /dev/tty
не помогает. Это работает с моим пользователем, но после того, как я переключился на другого пользователя сsu
это перестало работать. – dma_k 28.03.2013, 22:31su
с-s /bin/bash
– EM0 24.12.2017, 20:54