Это не вопрос heredocs. Если бы вы побежали:
ssh -i ${ssh_key} ${ssh_user}@${host} sh -c '
file=`hostname`.tar.gz
echo "file: " $file
'
Эффект был бы таким же. Дело в том, что переменная оценивается в оболочке, запущенной SSH на удаленном сервере. Он ничего не может сделать, чтобы повлиять на переменную в локальной оболочке.
Итак, вместо этого сделайте:
file=$(ssh -i ${ssh_key} ${ssh_user}@${host} hostname).tar.gz
scp -i ${ssh_key} ${ssh_user}@${host}:${file} ~/incoming
pkgng имеет несколько запасных вариантов:
pkg-static
. /usr/sbin/pkg bootstrap -f
. Вам нужно сказать pkg
использовать репозиторий FreeBSD 10.1. Поскольку в вашем конфигурационном файле указано latest
, он использует репозиторий FreeBSD 10.3, программное обеспечение которого содержит различные неопределенные ссылки на библиотечные функции, которых нет в 10.1 или более ранних версиях, включая openat
и utimensat
. ABI версии 10.1 не имеет прямой совместимости с версией 10.3.
Это можно сделать, изменив соответствующий .conf
файл в /usr/local/etc/pkg/repos/
, указав конкретный выпуск вместо latest
, а затем повторно -загрузив pkg
.
Или вы можете скомпилировать свой собственный в дереве портов. Но вы все равно будете получать другое программное обеспечение 10.3 из latest
, если вы это сделаете.
pkg
. Разное информационное руководство по FreeBSD . 2013 -12 -12. pkg
. Руководство системного администратора FreeBSD . pkg-static
. Руководство системного администратора FreeBSD . pkg.conf
. Руководство по форматам файлов FreeBSD ./usr/local/lib/libpkg.so.3
:Неопределенный символ "openat" после обновления до 1.9.4 _1 (FreeBSD 10.1). FreeBSD pkg
ошибка #1526. 2017 -01 -05. GitHub.