Установка Heroku Toolbelt
на Debian 8 Testing
Debian, Debian, Debian
Официально он устанавливается с сайта Heroku. Однако под Debian 8 Testing (Jessie) deb-пакет имеет набор неудовлетворённых зависимостей. Тем не менее, на той же странице установки имеется загадочная версия Standalone. Если запустить предполагаемую для неё команду
wget -qO- https://toolbelt.heroku.com/install.sh | sh
она тоже выдаст несколько ошибок "not found". Если рассмотреть команду, то мы видим, что нам предлагается скачать с помощью wget
некоторый скрипт и выполнить его шеллом. Посмотрим на скачиваемый скрипт:
$ wget -qO- https://toolbelt.heroku.com/install.sh > heroku.sh
Вот его содержание:
#!/bin/sh
{
HEROKU_CLIENT_URL="https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client.tgz"
echo "This script requires superuser access to install software."
echo "You will be prompted for your password by sudo."
# clear any previous sudo permission
sudo -k
# run inside sudo
sudo sh <<SCRIPT
# download and extract the client tarball
rm -rf /usr/local/heroku
mkdir -p /usr/local/heroku
cd /usr/local/heroku
if [[ -z "$(which wget)" ]]; then
curl -s $HEROKU_CLIENT_URL | tar xz
else
wget -qO- $HEROKU_CLIENT_URL | tar xz
fi
mv heroku-client/* .
rmdir heroku-client
SCRIPT
# remind the user to add to $PATH
if [[ ":$PATH:" != *":/usr/local/heroku/bin:"* ]]; then
echo "Add the Heroku CLI to your PATH using:"
echo "$ echo 'PATH=\"/usr/local/heroku/bin:\$PATH\"' >> ~/.profile"
fi
echo "Installation complete"
}
Первое, что мы видим в этом коде, это архив по адресу
https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client.tgz
где хранятся эльф heroku
и сопутствующие файлы. Далее, скрипт запускает блок SCRIPT через sudo
, где, не смотря на то, что сам скрипт скачивается с помощью wget
, он предусмотрительно проверяет, установлен ли в системе wget
, затем скачивает с помощью него указанный архив с одновременной распаковкой tar'ом. Напоследок скрипт предупреждает пользователя о необходимости добавить путь к heroku
в PATH
, но сам этого не делает.
Откуда же возникают ошибки "not found"? Дело в том, что в скрипте используется синтаксис, не поддерживаемый дебиановским sh
, поэтому нужно заменить 12-ую строчку скрипта с
sudo sh <<SCRIPT
на
sudo bash <<SCRIPT
и запускать сам скрипт с помощью bash:
$ bash ./heroku.sh
Чтобы изменения сразу вступили в силу в ново открытом окне терминала, путь к PATH
стоит добавить не в .profile
, как предлагает скрипт, а в .bashrc
.
Мораль: если что-то ругается на Debian в немодифицированном виде, это ещё не повод ставить Ubuntu]
shitpoet@gmail.com