1

Я пытаюсь установить Asterisk на свой сервер Debian wheezy. Для этого я сначала сделал простой

sudo apt-get install asterisk

Это сработало без нареканий. Впоследствии звездочка работала, и я мог войти в нее с помощью:

asterisk -rvvv

После некоторого возни я сбросил звездочку и снова установил:

sudo apt-get remove --purge asterisk
sudo apt-get install asterisk

Он был успешно переустановлен, и sudo service asterisk status показывает [ ok ] Asterisk PBX is running. , но я больше не могу войти в CLI (asterisk -rvvv говорит -bash -bash: asterisk: command not found).

Поэтому я попытался установить его из исходного кода, используя это простое руководство. Все шаги идут хорошо, и я могу снова запустить и запустить звездочку. Но опять же CLI отказывается запускаться с другой -bash: asterisk: command not found).

Кто-нибудь знает, что я здесь делаю не так? Или кто-нибудь может указать мне правильное направление? Все советы приветствуются!

1 ответ1

2

Как оболочка находит ваши программы

Когда вы вводите foo в командной строке вашей оболочки, она ищет foo в наборе путей, определенных переменной среды PATH вашей оболочки (которую вы можете проверить, запустив echo $PATH).

Так что я думаю, что это просто: в пакете asterisk, который вы имели до переустановки, бинарный файл asterisk находился в месте, указанном в $PATH вашего пользователя, а пакет, установленный впоследствии, был установлен в другом месте.

Вы можете легко проверить это, сопоставив echo $PATH в вашей оболочке с выводом

$ dpkg -L asterisk | grep bin/asterisk

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

Кэширование спасательных путей в оболочках

Другая возможность, хотя и менее вероятная, - это кэширование разрешения пути. Интерактивные оболочки, включая bash , только один раз просматривают голое имя программы в списке в $PATH , а затем запоминают то полное местоположение, которое они нашли. Если вы затем удалите программу из этого места, оболочка больше не сможет ее запускать, даже если файл программы теперь доступен в каком-то другом месте, указанном в $PATH .

Вы можете помочь оболочке, запустив в нее hash -r (см. help hash в приглашении bash ).

Разное

Обратите внимание, что в общем случае, когда вы делаете

apt-get remove --purge asterisk
apt-get install asterisk

то есть, выполнив цикл удаления и установки, будет установлена версия пакета, известная системе APT на основе предоставленных ей архивов . То есть, если вы установили вашу версию, собранную вручную, через dpkg -i ... , APT не будет пытаться найти и установить эту же версию, когда вы позже удалите и установите пакет с тем же именем.

Если вы хотите, чтобы ваш собранный вручную пакет asterisk был доступен для общей установки, вам нужно поддерживать надлежащий локальный репозиторий Debian (по reprepro представьте, что это самый простой инструмент для использования, см. Также apt-ftparchive), сделайте его известным вашему локальная система APT, а также, возможно, сделать пакеты из этого хранилища предпочтительными, используя предпочтения APT.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .