Когда вы запускаете команды непосредственно из ssh, вы не «входите в систему», вы только выполняете команду.
Некоторые сценарии оболочки запускаются при "входе в систему" - ~ / .bashrc, / etc / profile и т. Д.
которые
используют переменные среды, в частности $ PATH
- которые могут быть установлены в одном из этих скриптов. Без $ PATH
, , который
не знает, где искать.
Кроме того, ssh (hidden) -p 2222 echo $ (which brew)
не даст вам того, что вы ожидаете - $ (which brew)
интерпретируется оболочкой, прежде чем он даже попадает в ssh - сравните: ssh (скрытый) -p 2222 echo $ (hostname)
с ssh (hidden) -p 2222 echo '$ (hostname)'
(обратите внимание на одно кавычки вокруг расширения оболочки). Первый получит ЛОКАЛЬНОЕ имя хоста, отправит его на удаленный хост для вывода на экран.Второй будет посылать $ (имя хоста)
(буквально) в удаленную оболочку для расширения там.
ОБНОВЛЕНИЕ: Я немного ошибался.
Когда вы запускаете команду через ssh, ssh работает, если требуется оболочка (например, обработка переменных и т. Д., Если это не нужно, двоичная программа запускается немедленно. В противном случае запускается bash, который может устанавливать переменные среды и т.д.
Вот почему (в вашем комментарии) brew --version терпит неудачу - вы не указываете путь. Когда вы echo ...; brew --version
, точка с запятой ;
- это специальный символ оболочки; ssh сделает это за вас, запустив за вас bash.
Как вы обнаружили, проблема возникает из-за пакета epel-release. Если вы еще этого не сделали:
# yum remove epel-release
Затем установите EPEL Repo со следующим (требуется пакет wget):
# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
# rpm -ivh epel-release-7-9.noarch.rpm
Оттуда вы сможете без проблем выполнить обновление yum.
Я тоже столкнулся с этой проблемой, и основная причина этой проблемы заключалась в том, что репозиторий yum был недоступен для создания образа Docker. Поэтому мне пришлось изменить сетевую политику моего кластера kubernetes (, так как я работал над проектом kubernetes ).
Войдите как root
или используйте sudo
, а затем:
#ONBOOT=no
#dhclient
#yum update
Я надеюсь, что это решит эту проблему.
yum -config -менеджер --сохранить --setopt=spacewalk -client.skip _если _недоступен=true
просто запустите приведенную выше команду и увидите БООООООООО
У меня только что была эта проблема со свежей CentOS 7.6
Решение было простым:
epel-release
(Установить его, если вы его уже удалили)/etc/yum.repos.d/epel.repo
[epel]
):metalink=https://...
baseurl=http://...
Это решило мою проблему.
Возможно, вам нужно добавить свои DNS-серверы в /etc/resolv.conf
, чтобы он мог знать хосты в репо, например, в моем случае (Google DNS достаточно):
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.128 # local DNS
nameserver 8.8.8.8
nameserver 8.8.4.4