Debian/Ubuntu ベースのイメージを用いて CircleCI で Yarn をインストールするときにはいきなり sudo apt-get install yarn してはだめ

結論(どうするか)

Yarnのパッケージを明示的に指定して、sudo apt-get install -y yarn をしましょう。-run の部分だけを書くと次のとおりです。

      - run:
          name: Install Yarn
          command: |
            curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
            echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
            sudo apt-get update
            sudo apt-get install -y yarn

だめな場合

sudo apt-get install -y yarn をして、which yarn をして、yarn -v を実行すると、以下のようにエラーになります。

====>> which yarn
  #!/bin/bash -eo pipefail
which yarn

/usr/bin/yarn
====>> yarn -v
  #!/bin/bash -eo pipefail
yarn -v

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/cliapp/app.py", line 193, in _run
    self.process_args(args)
  File "/usr/bin/yarn", line 152, in process_args
    self.ts = ttystatus.TerminalStatus(period=0.001)
  File "/usr/lib/python2.7/dist-packages/ttystatus/status.py", line 37, in __init__
    period=period, _terminal=_terminal)
  File "/usr/lib/python2.7/dist-packages/ttystatus/messager.py", line 45, in __init__
    self._terminal.open_tty()
  File "/usr/lib/python2.7/dist-packages/ttystatus/tty.py", line 36, in open_tty
    curses.setupterm(None, self._terminal.fileno())
error: setupterm: could not find terminfo database

補足

CircleCI が、というわけではなく、クリーンな Docker イメージ を用いる場合の様々なケースにてこうなるでしょう。CircleCI でハマる絶対数が多そうなので、検索しやすいように標題には CircleCI と入れました。

Powered by はてなブログ