Установка 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

 



 

free hit counters