インストール
ドキュメント作成中
一部の内容はまだ不完全な場合があります。
ThinkTerm は macOS、Linux、Windows 向けに リリースページ で公開されています。iOS と Android のアプリは開発中で、まだリリースされていません。
どの方法でインストールするか
| 環境 | アーキテクチャ | 方法 |
|---|---|---|
| macOS | Apple シリコン、Intel | インストールスクリプトを実行するか、Homebrew の cask を入れる |
| Linux | x86_64、arm64 | インストールスクリプトを実行するか、リリースページから .deb、.rpm、AppImage を入れる |
| Windows | x64、arm64 | リリースページからインストーラーか zip をダウンロードする。インストールスクリプトはありません |
| SSH で入るサーバー | 上と同じ | インストールスクリプトを --server 付きで実行する。サーバーへのインストールを参照 |
macOS と Linux では次のとおりです。
curl -fsSL https://raw.githubusercontent.com/RoversX/thinkterm/main/install.sh | shスクリプトは、デスクトップアプリを入れるかサーバー用のプログラムだけにするかを尋ね、あとで自分自身を更新することもできます。このページの残りは詳細です。それぞれの方法で何が入るか、スクリプトのオプション、初回起動で何が表示されるか。
システム要件
| システム | 必要なもの |
|---|---|
| macOS | macOS 14 以降、Apple シリコンまたは Intel |
| Linux | x86_64 または arm64。デスクトップ版は glibc 2.35 以降 — Ubuntu 22.04、Debian 12、RHEL 10 以降。サーバー版は glibc 2.31 以降で、これに Ubuntu 20.04、Debian 11、RHEL 9 が加わります |
| Windows | Windows 10 バージョン 1809 以降、x64 または arm64 |
Linux のビルドは glibc にリンクしているため、Alpine のような musl のシステムではまったく動きません。glibc が古い場合はもっと分かりにくい形で失敗します — 読み込み時に、本当の原因ではなくシンボルのバージョンについてのメッセージが出ます — そのためインストールスクリプトは、入れようとしているバリアントに対して先にバージョンを確かめ、それを言葉で伝えます。どちらの場合も、ソースからビルドするのが答えです。デスクトップ版のインストールが glibc 2.31 から 2.34 で断られたときは、--server ならそこで動くとメッセージが補います。glibc が 2.34 より古いホストでは、サーバー版はほかのホストとは別のビルドになり、OpenSSL を組み込んであります(そうしたホストには OpenSSL 1.1 しかないため)。スクリプトが自分で選び、その旨を伝えます。
インストールスクリプト
curl -fsSL https://raw.githubusercontent.com/RoversX/thinkterm/main/install.sh | shスクリプトはこのマシン向けのリリースを選んでダウンロードし、ファイルのアップロード時に GitHub が記録した SHA-256 ダイジェストと照合します。一致しないダウンロードは拒否され、何もインストールされません。GitHub にそのファイルのダイジェストがない場合や、マシンに sha256sum も shasum もない場合は、黙っているのではなく、ダウンロードを検証していないことを伝えます。
スクリプトは GitHub からダウンロードし、GitHub が遅いときだけミラーに切り替えます。まず数秒かけて GitHub を試し、おおよそ 300 KB/s 以上出ればそのまま使います。そうでなければミラーをまとめて試し、GitHub とミラーをそのテスト結果で、速いものから順に並べて使います。テストに応答しなかったものは最後です。止まったり、数秒間この速度を下回り続けたりした取得元は飛ばして次へ移り、次の取得元はそれまでに取得したバイトの続きから始めます。やり直しにはなりません。転送が途切れたときは、取得元が対応していれば途中から再開します。ファイル全体は最後に検証され、引き継いだバイトが誤っていた場合は、新しい取得元が一度ファイル全体をダウンロードし直してから、はじめて見切られます。すべての取得元が失敗したときは、進んでいたものが同じ順序でもう一巡し、止まらない限り遅くても許されます。途中までのダウンロードはスクリプトの終了時に削除されるので、2 回の実行にまたがって再開されることはありません。
ミラーを使うのは、照合できるダイジェストがあるときだけです。GitHub のもの、または後述のリリースの署名つきファイル一覧にあるものです。ミラーから届いたものも、一致した場合にだけインストールします。GITHUB_TOKEN がミラーに送られることはありません。--mirror direct を付けると GitHub からだけダウンロードし、--mirror にミラーのホスト名を渡すと、そのミラーを先に試してから GitHub を使います。
各リリースには、ファイルの署名つき一覧 thinkterm-release.txt も付き、署名は隣に thinkterm-release.txt.sig として置かれます。GitHub のリリース照会が応答せず、リリースを --version で指定したときは、スクリプトは代わりにこの一覧からダイジェストを取ります。そのときはスクリプトに組み込まれた鍵で署名を確かめ、署名の検証に対応した ssh-keygen が必要です。検証できる一覧がなければ、スクリプトはミラーを使わず GitHub のアーカイブを直接試すと伝えます。照合するダイジェストがないため、このダウンロードは検証されません。署名が合わない一覧があれば、インストールは止まります。最新のリリースがどれかを知るには、今も GitHub の照会が必要です。
インストールは現在のユーザーに対して行われ、root もパッケージマネージャーも要りません。
- Linux — プログラムは
~/.local/binに入り、デスクトップ版は~/.local/shareの下にランチャー項目とアイコンを追加します。 - macOS — 署名済みの
ThinkTerm.appを/Applicationsに、あなたが/Applicationsに書き込めない場合は~/Applicationsに置き、コマンドラインツールを~/.local/binにリンクします。リンクはアプリの中を指していてファイルをコピーしないので、アプリの署名の範囲に入ったままです。
bash、zsh、fish の補完も ~/.local/share の下に入ります。その隣にはインストール内容の記録が残り、thinkterm update や 設定 › ソフトウェアアップデート があとでこれらのファイルを置き換えてよいと判断するのは、この記録によってです。
シェルの起動ファイルには手を付けません。~/.local/bin が PATH に入っていなければ、追加すべき行を表示します — Debian と Ubuntu では、次にログインするまで PATH に入らず、しかもそのときにディレクトリが存在している場合に限られます。あわせて、シェル統合を有効にする行(任意)も表示します。シェル統合はプロンプトの印を付け、ThinkTerm がシェルの作業ディレクトリを追えるようにします。
どちらの版も thinkterm の隣に wezterm コマンドを置きます。TERM_PROGRAM が WezTerm を示しているときにこのコマンドを探すツールのためです。WezTerm 本体も入っている場合、どちらの wezterm が動くかは PATH でどのディレクトリが先にあるかで決まります。
デスクトップ版かサーバー版か
| 版 | 中身 |
|---|---|
--desktop | アプリ、コマンドラインツール、TUI、セッションサーバー |
--server | アプリ以外のすべて。Linux ではグラフィックライブラリも要りません |
スクリプトはマシンから推測しません。画面のないマシンでも TUI は欲しいかもしれませんし、デスクトップが誰かの SSH の接続先かもしれないからです。端末でどちらのフラグも付けずに実行すると尋ねます。端末がまったくない環境(プロビジョニングのスクリプトなど)では、フラグが必須です。
2 つは排他的です。片方を入れるともう片方のファイルは削除されるので、サーバー版からデスクトップ版への移行は同じコマンドに --desktop を付けるだけで、アプリが加わり、ほかはそのまま残ります。逆向きならアプリとそのランチャーが削除されます。
オプション
| オプション | 効果 |
|---|---|
--desktop、--server | 版を選ぶ |
--version X | 最新版ではなくリリース X をインストールする |
--prefix DIR | ~/.local ではなく DIR の下にインストールする。プログラムは DIR/bin に入る |
--app-dir DIR | macOS のみ:ThinkTerm.app を DIR に置く |
--from FILE | ダウンロード済みのアーカイブをインストールする。何も取得せず、検証は --sha256 を付けたときだけ行う |
--dry-run | 何をするかを示し、ディスクに触れる前に止まる |
--sha256 HASH | --from と併用:アーカイブをこの SHA-256 と照合し、違えば何もインストールしない |
--mirror M | アーカイブの取得元。auto(既定)は GitHub から始め、GitHub が遅いときにミラーを順位づける。direct は GitHub のみ。ミラーのホスト名を渡すとそのミラーを先に試し、次に GitHub を使う |
オプションは sh -s -- を通してスクリプトに渡します。
curl -fsSL https://raw.githubusercontent.com/RoversX/thinkterm/main/install.sh | sh -s -- --server--from を付けると、リリースの照会は行われず、SHA-256 の検証も、期待するダイジェストを --sha256 で渡さない限り行われません(渡したときは、違えば何もインストールされません)。スクリプトは渡されたファイルをそのままインストールします。記録されるバージョンは --version から、なければアーカイブ自体 — ファイル名か、その中のフォルダ名 — から取られます。どちらからもわからないアーカイブは、警告とともに unknown として記録されます。バージョンを指定するには --version を渡してください。
GITHUB_TOKEN が設定されていれば、スクリプトのリクエストに付けて送られ、GitHub の匿名レート制限が外れます。ミラーに送られることはありません。ThinkTerm 自身のバックグラウンドの更新確認がこれを読むことはありません。アップデート を参照してください。
アップグレードとアンインストール
スクリプトをもう一度実行することがアップグレードです。バージョンは比較しません — 取得したリリースを、そこにあるものの上にインストールします — そのため --version を付ければ古いリリースに戻すこともできます。thinkterm update や設定の アップデートをインストール が代わりに実行するのも、このスクリプトです。詳しくは アップデート を参照してください。
ファイルはその場で入れ替わるので、すでに動いているものは起動時のバージョンのままです。古いバージョンのまま動いているものは、インストールの最後に一覧で出ます。
サーバーは例外です。端末でサーバー版をインストールしていて mux サーバーが動いているとき、スクリプトは新しい thinkterm-mux-server を --daemonize --takeover で起動し、動いているサーバーがセッションを新しいビルドに引き渡します。中で動いているものは何も終わりません。引き渡しに失敗したときは最大 3 回まで再試行します。引き渡せないサーバー(この機能より前のものなど)はそのまま動き続け、スクリプトはその旨と手動で切り替える方法を示します。切り替えるとセッションは終了します。スクリプトがこれを行うのは端末で実行したときだけです。デスクトップから更新するリモートサーバーはクライアント自身が引き渡します(リモートサーバーを更新する を参照)。デスクトップアプリは、次に起動したときに自分のセッションサーバーを引き渡します。アプリを開いたままサーバーを入れ替えると、接続が切れてしまうからです。
スクリプトは進行状況を報告しながら動きます。1 行をその場で描き直せる端末では、最初にワードマークを打ち出し、そのあと各ステップ — マシンの検出、リリースの照会、ダウンロード、検証、展開、インストール — をスピナーつきで表示します。ダウンロードには進行状況バーが付き、各ステップはチェックマークで終わります。出力がパイプやログに向いているとき、または TERM=dumb のときは、普通の行だけを出します。色を使うのは出力が端末で、かつ NO_COLOR が設定されていないときだけで、警告と失敗は標準エラーに出ます。ロケールが UTF-8 でないときは、チェックマークや矢印、バーを ASCII に置き換えます。
インストールが終わると、残っていることを Next の下に、急ぐものから順に出します。! が付いたものは、対処するまで ThinkTerm またはその一部が使えません。~/.local/bin が PATH にない、別の thinkterm が PATH の先にある、Linux ではデスクトップアプリにライブラリが足りない、~/.local のサーバー版が更新されないデスクトップアプリの隣に入っている(サーバーへのインストール を参照)、セッションを引き渡せなかった mux サーバーがまだ古いバージョンのまま動いている、などです。· が付いたものは知っておくとよいことです。インストール前から動いている mux サーバーがまだ古いバージョンであること(再起動するまで、新しいアプリやコマンドラインツールはそのサーバーとの通信を拒むことがあります)、ThinkTerm が開いていて新しいバージョンは次回の起動から使われること、(サーバー版では)セッションサーバーの起動方法、Linux ではログアウト後もたいていは動き続けること、そうならないときの代わりの手段として loginctl enable-linger $USER(システムによっては管理者しか実行できません)、そして任意のシェル統合の 1 行などです。貼り付けるコマンドは、それを求める項目の下に出します。
最後の行は Ready. と実行するコマンド — thinkterm、サーバー版では thinkterm tui — で、ライブラリが足りないときは Installed. と、上に挙げたライブラリがデスクトップアプリに必要だという説明になります。画面のあるマシンの端末で実行していて、ThinkTerm がまだ開いていなければ、スクリプトは Open ThinkTerm now? [Y/n] と尋ねます。SSH 越しでは尋ねません。
アンインストーラーはありません。スクリプトはインストールしたファイルをすべて表示します。ThinkTerm を削除するとは、それらを削除することです。
Linux で足りないライブラリ
アプリに必要なライブラリは、パッケージマネージャーなら一緒に入れてくれますが、tarball にはできません。デスクトップ版では、アプリに足りないライブラリをシステムに問い合わせ、それぞれを提供するパッケージ名を apt、dnf、zypper について示します。止めずに警告するだけです。コマンドラインツールとセッションサーバーはそれらがなくても動き、ライブラリを入れればアプリも起動します。
macOS の Homebrew
brew install --cask roversx/tap/thinktermこの cask は、リリースページ にある macOS 向けリリースをインストールします。
リリースの中身
どのリリースにも thinkterm-release.txt が付きます。リリースの各ファイルの SHA-256 ダイジェストとサイズを並べたもので、ThinkTerm のリリース鍵で署名され、署名は thinkterm-release.txt.sig です。GitHub 自身の照会が失敗したとき、インストールスクリプト と、SSH でサーバーを更新するクライアントがこれにフォールバックします。
macOS
アーキテクチャごとに 1 つの zip、arm64 と x86_64 があり、署名と公証を済ませた ThinkTerm.app が入っています。インストールスクリプトはどちらの版でもこの zip を使います。
自分で展開してアプリを「アプリケーション」に移すこともできます。手で置いたコピーも ThinkTerm は更新できます。アップデートをインストール はそれをその場所で置き換え、コマンドラインツールを ~/.local/bin に追加し、以後はスクリプトでインストールしたものと同じように扱います。
Linux
| ダウンロード | 中身 |
|---|---|
thinkterm-<version>-linux-<arch>.tar.gz | デスクトップ版。インストールスクリプトが入れるもの |
thinkterm-server-<version>-linux-<arch>.tar.gz | サーバー版 |
thinkterm-server-<version>-linux-<arch>.tar.xz | サーバー版で、ダウンロードが小さい。リリースにあり、マシンに xz があるとき、インストールスクリプトはこちらを使う |
thinkterm-server-<version>-linux-<arch>-glibc2.31.tar.gz、および同名の .tar.xz | glibc が 2.34 より古いホスト向けのサーバー版。Ubuntu 20.04 でビルドし、OpenSSL を組み込んである。glibc 2.31 から 2.33 では、インストールスクリプト、thinkterm update、リモートインストールがこれを選ぶ |
.deb | thinkterm と thinkterm-server のパッケージ。Ubuntu 22.04 でビルド |
.rpm | thinkterm と thinkterm-server のパッケージ。Fedora でビルド |
.AppImage | 1 ファイルのデスクトップアプリ。Ubuntu 22.04 でビルド |
いずれも x86_64 と arm64 があります。
.deb と .rpm のパッケージは、どちらも wezterm コマンドを提供するため、WezTerm のパッケージと同時にはインストールできません。デスクトップ版とサーバー版のパッケージも互いに排他です。パッケージはパッケージマネージャーで、AppImage は AppImageUpdate で更新します。ThinkTerm はそれらのファイルを置き換えず、そちらを案内します。
Windows
Windows にインストールスクリプトはありません。リリースには x64 向けのインストーラーと zip があり、arm64 向けにも同じ 2 つがあって、こちらは arm64 でネイティブに動きます。arm64 のファイル名には -arm64 が付き、x64 のファイル名は変わりません。x64 のインストーラーは arm64 の Windows にも入り、その場合 ThinkTerm はエミュレーションで動きます。ネイティブなのは arm64 のインストーラーです。
インストーラー ThinkTerm-<version>-setup.exe(arm64 は ThinkTerm-<version>-arm64-setup.exe)は管理者権限を求め、Program Files にインストールします。ThinkTerm のフォルダーをシステムの PATH に追加し、エクスプローラーのフォルダー、フォルダーの背景、ドライブのメニューに Open ThinkTerm here を加え、デスクトップのショートカットも作成できます。ThinkTerm の中から更新すると、ThinkTerm が動いているアーキテクチャ向けの次のインストーラーをダウンロードし、GitHub が SHA-256 ダイジェストを記録していればそれと照合したうえで(記録がなければ、ダウンロードを検証していないと伝えてそのまま進みます)、Windows の許可ダイアログのあとに実行し、終わるまで待ちます。インストーラーは ThinkTerm を終了しません。古いビルドの各プログラムとライブラリを同じ名前のまま脇へ移し、新しいファイルをその場所に置き、インストールに失敗したら古いものを戻します。ThinkTerm は再起動するまで古いビルドで動き続け、そのときセッションサーバーが端末を新しいビルドに引き渡します。
zip ThinkTerm-windows-<version>.zip(arm64 は ThinkTerm-windows-arm64-<version>.zip)は好きな場所に展開してそこから動かせ、PATH にもエクスプローラーにも何も加えません。実行ファイルの隣にある thinkterm.lua はユーザープロファイルにある設定より優先されるので、コピーごとに設定を持ち歩けます。設定 を参照してください。ただし一緒に移るのは設定だけで、Space、ホスト、その他の ThinkTerm のデータは引き続きユーザープロファイルに保存されます。更新するときは、新しい zip を同じ場所に展開します。
サーバーへのインストール
SSH で接続するマシンに ThinkTerm が必要なのは、ホストでセッションを動かし続ける常駐接続、ThinkTerm Connect を使う場合だけです。サーバー版で足ります。
curl -fsSL https://raw.githubusercontent.com/RoversX/thinkterm/main/install.sh | sh -s -- --servermacOS のサーバー版は、アプリのバンドルを ~/.local/libexec に置き、「アプリケーション」や Launchpad には出しません。欲しいのは中のプログラムであって、Dock のアイコンではないからです。Linux では、apt や dnf で管理したいマシンなら thinkterm-server パッケージが同じ役割を果たします。
ほかの経路で入れたデスクトップアプリがすでにマシンにある場合 — ディストリビューションのパッケージや、別のプレフィックスへのインストール — サーバー版はそれに触れず、アプリは元のバージョンのままです。~/.local/bin は通常 PATH の先頭にあるため、アプリのランチャーが GUI のないサーバー版の thinkterm を見つけてしまい、動かなくなることがあります。スクリプトは、どちらの版にするかを尋ねるときにこのアプリに触れ、最後に ! の項目でそれを知らせます。マシンの glibc がデスクトップ版を動かせるなら、この項目には ~/.local にデスクトップ版を入れ直すコマンドが出て、両者を揃えられます。GUI のない thinkterm にウィンドウを求めると this ThinkTerm has no GUI to start と答え、thinkterm tui を案内します。ThinkTerm が作るパッケージは /usr/bin からアプリを起動するので、~/.local のサーバー版に取って代わられることはありません。
セッションサーバーには root もサービスファイルも要りません。起動のしかた、ログアウト後も動かし続ける方法、接続方法ごとにホストに必要なものは リモート で説明しています。
初めて開いたとき
アプリを初めて開くと、メインウィンドウのタブとして初期設定が表示されます。最初に hello. という手書きの文字の短いアニメーションがあり、およそ 5 秒でページが使えるようになります。それまでは反応せず、アニメーションは飛ばせません。
ThinkTerm へようこそ というページには、言語 と 外観(システムに合わせる、ライト、ダーク)の 2 つを選びます。どちらも選んだ時点で反映されるので、結果を見てから決められます。使ってみる で選択を保ち、スキップ(または Esc キー)でこのページが開いたときの状態に戻します。どちらでも、このページは二度と表示されません。ページには 開いたものはこの端末の外に出ません。 とも書かれています。
このコンピュータに取り込めるものがあると、選択とボタンの間に このコンピュータで見つかったもの というカードが現れ、次のそれぞれに 1 行ずつ割り当てられます。
| 行 | ボタン | 開くもの |
|---|---|---|
| Herdr のセッションと、実行中のものがあればその数 — macOS と Linux のみ | インポート | Herdr を選んだ 設定 › インポート |
| WezTerm の設定ファイル | 設定をインポート | WezTerm を選んだ 設定 › インポート。設定 を参照 |
| コードエディタで開いた、ローカルの Space にまだないフォルダ | プロジェクトを選択 | それらのフォルダを選んだ 設定 › インポート |
行は、その取り込み元がある場合にだけ表示されます。ボタンは 使ってみる と同じく選んだ言語と外観を保ち、設定を終えて、その取り込み元をあらかじめ選んだ状態でページを開きます。見つける処理はこのコンピュータの中で行われます。何を読むかは プライバシーとセキュリティ を参照してください。
どちらもあとで 設定 › 一般 › 言語 と 設定 › 外観 で変更できます。
新規インストールでは、最初からローカル端末をバックグラウンドのセッションサーバーに置くので、ThinkTerm を終了しても端末は終わりません。この設定と、オフにする方法は リモート で説明しています。
関連
- アップデート — インストールしたコピーを最新に保つ方法
- リモート — SSH、Mosh、ThinkTerm Connect のためのホストの準備
- 設定 — 各システムで設定とデータが置かれる場所
- プライバシーとセキュリティ — ThinkTerm が送るもの、保存するもの
