クリーンUbuntu on WSL環境へのtuisky導入

@bills-appworks.blue

WSL環境にてインストール直後のUbuntu(24.04 LTS)環境へtuiskyを導入した際のメモになります。

image

  • 2024/08/21:Ubuntu cargoパッケージと、cargoパッケージが依存するパッケージの導入順を入れ替え
  • 2024/08/20:Ubuntu cargo関連パッケージを導入した場合の状況について追記

まとめ

  • tuisky導入前に必要なこと
    • Cargoが依存するパッケージの導入
      • gcc
      • pkgconf
      • libssl-dev
    • Cargo(Rust言語のビルドシステム/パッケージマネージャ)の導入
  • Cargoを利用してtuisky導入

コマンドだと以下のようになります。

# gcc導入
sudo apt install gcc

# pkgconf導入
sudo apt install pkgconf

# libssl-dev導入
sudo apt install libssl-dev

# Cargo導入
curl https://sh.rustup.rs -sSf | sh
. "$HOME/.cargo/env"

# tuisky導入
cargo install tuisky

以降に記載する検証経緯では、まずCargoを導入してエラーになり、順次依存パッケージを解消していったものになります。そのためこれから利用される方は、上記の順番でスムーズに導入できると思います。

検証経緯

tuisky Webサイト掲載のインストール手順

ReadmeにありますようにArch Linux(パッケージマネージャのコマンドparuでインストール可能)以外では、以下のコマンドでインストールするように記述されています。

cargo install tuisky

クリーンなUbuntuなど、cargoコマンドが存在しない環境ではエラーになります。

Command 'cargo' not found, but can be installed with:
sudo snap install rustup  # version 1.27.1, or
sudo apt  install cargo   # version 1.73.0+dfsg0ubuntu1-0ubuntu1
See 'snap info rustup' for additional versions.

Cargoの導入

cargoコマンドは、Cargoと呼ばれるRust言語のビルドシステムおよびパッケージマネージャに含まれます。そのためまずCargoの導入が必要となります。Ubuntuでは前記のようにコマンド実行時のエラーでsudo snap install rustupsudo apt install cargoのコマンドによる導入が提案されます。それらでも問題ないと思いますが(→だめでした。当記事「補足:Ubuntu cargo関連パッケージを利用した場合」を参照)、ここではCargo Webサイトのインストール手順に記載されているインストーラを利用する方法を紹介しています。

curl https://sh.rustup.rs -sSf | sh

実行すると途中でインストール方法についての問い合わせがあります。特に問題なければデフォルトの1番を選択します。

1) Proceed with standard installation (default - just press enter)
2) Customize installation
3) Cancel installation

インストーラが完了復帰すると、$HOME/.cargo/envというディレクトリを環境変数PATHに追加するよう指示が表示されます。自分の環境では$HOME/.bashrcおよび$HOME/.profileの末尾に環境変数PATHに追加する設定の行が自動的に追記されました。また. "$HOME/.cargo/env"を実行すれば再ログインせずにcargoコマンド等にパスを通して作業ができることが提示されています。前記まとめのコマンドではそのように記載しています。

これでCargoの準備ができましたのでcargo install tuiskyを実行すると、ビルドの途中でccコマンドが存在しないとエラーになります。

image

gccの導入

ccコマンドはC言語のコンパイラ/リンカ等でgcc(GNU Compiler Collection)パッケージに含まれますので、gccパッケージを導入します。

sudo apt install gcc

これでgccの準備ができましたのでcargo install tuiskyを実行すると、ビルドの途中でopenssl-sys関連のビルドのエラーになり、後続の表示でpkg-configコマンドが存在しないとエラーになっていることが確認できます。

image (中略) image

pkgconfの導入

pkg-configコマンドはpkgconfパッケージに含まれますので、pkgconfパッケージを導入します。

sudo apt install pkgconf

これでpkgconfの準備ができましたのでcargo install tuiskyを実行すると、ビルドの途中で同様にopenssl-sys関連のビルドのエラーになりますが、今度はコマンドではなくライブラリ関連に起因しているように思われます。

image (中略) image

libssl-devの導入とtuiskyビルドの完了

openssl-sys関連に必要なものはlibssl-devパッケージに含まれるようです(後述の「参考ページ」の3番に記載したサイトを参照)ので、libssl-devパッケージを導入します。

sudo apt install libssl-dev

これでlibss-devの準備ができましたのでcargo install tuiskyを実行すると、無事ビルドが完了します。

image

以上の経緯から「まとめ」に記載したように、まずCargoが依存するgccpkgconflibss-devパッケージを先にインストールしてからcargoをインストールするとスムーズに導入できると思います。

Let's tuisky

tuiskyコマンドを実行するとidentifier(ハンドル)とパスワード(アプリパスワードを利用するとよいでしょう)の入力が求められるので、入力して認証を通過するとBlueskyクライアントとしての利用ができます。操作方法はtuiskyサイトのUsageを参照してください。

image

補足:Ubuntu cargo関連パッケージを利用した場合

「Cargoの導入」で触れましたが、Ubuntuではcargoコマンドに関連するパッケージが存在しますので、それを導入した場合の状況を以下に記します。2024/8現在の状況ですので、将来的に対応される可能性はあります。

apt cargoパッケージの場合

UbuntuでパッケージされているCargoバージョンは1.7.5ですが、tuisky 0.1.1では必要となるCargoのバージョンが1.8.0以上のためインストールに失敗しました。

$ sudo apt install cargo
(省略)
$ cargo install tuisky
    Updating crates.io index
error: cannot install package `tuisky 0.1.1`, it requires rustc 1.80 or newer, while the currently active rustc version is 1.75.0
`tuisky 0.0.5` supports rustc 1.74

snap rustupパッケージの場合

セキュリティ関連回避インストールが必要となるため、これ以上の確認は断念しています。

$ sudo snap install rustup
(パスワード確認省略)
error: This revision of snap "rustup" was published using classic confinement and thus may perform
       arbitrary system changes outside of the security sandbox that snaps are usually confined to,
       which may put your system at risk.

       If you understand and want to proceed repeat the command including --classic.

参考ページ

  1. crates.io: Rust Package Registry (tuisky Webサイト)
  2. Installation - The Cargo Book
  3. rust で failed to run custom build command for `openssl-sys` が出るときにすること

関連情報

当検証にあたり、WSLでのクリーンなLinux実行環境を容易にハンドリングするため、同一ディストリビューションに対して複数の実行環境を構成する方法を実施しています。御興味があれば以下の記事も参照ください。

WSL同一ディストリビューション複数環境

bills-appworks.blue
びるず

@bills-appworks.blue

https://bills-appworks.net/
シェルスクリプト実装版Bluesky CLIクライアント bsky-sh-cli (Bluesky in the shell)を開発しています: https://github.com/bills-appworks/bsky-sh-cli
bsky-sh-cli広報アカウント: @bsky-sh-cli.bills-appworks.net
Linkat: https://linkat.blue/bills-appworks.blue

Post reaction in Bluesky

*To be shown as a reaction, include article link in the post or add link card

Reactions from everyone (0)