Rust ArchでPistonを動かそう
序文
早速git clone
してあれこれ書いて、cargo run
で走らせる。
どっきどっきわっくわっくしながら待っている。
そして次の結果が出た。
は?
ということで、本記事ではManjaro Linux(Arch Linux)でPistonにご挨拶する方法を書き記す。
タイトル詐欺だと?ManjaroもArchも似たようなもんじゃ((暴言
解決法を探す
ということで吐かれたエラーをコピペしてググってみる。
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "Couldn\'t find any pixel format that matches the criterias."', /checkout/src/libcore/result.rs:906:4 note: Run with `RUST_BACKTRACE=1` for a backtrace.
やはり同じような悩みを抱える人間は存在するものである。
このページにたどり着く。
圧倒的英語文献と天才的な英語力を持つ私との激しい戦闘の末、以下の文章を見つけた。
Now that Ubuntu 17.10 artful has been released with Mesa version 17.2.2 this issue will affect more people. Including me!
The bug is indeed a regression of Mesa from the 17.1 branch to the 17.2 branch.
...よくわからないが((おい どうもmesa
のヴァージョンが17.2
だと動かないとか何とか。
ということでmesa
のヴァージョンを下げてみよう!!
ちなみに2017年12月27日現在で最新版は17.3.0-2
である。
え?問題は17.3
ではなく17.2
と?同じエラー吐かれたのだから同じだろ。
解決法 downgraderを使う
さっきのページを読み進めると解決法は示してあるが、Archにやさしい手段ではない。
mesa
はpacmanのパッケージにあるのだから、「pacman 古いバージョン」でググったら何か出るのではないだろうか。
とググったらあった。パッケージのダウングレード
色々方法はあるが、私はdowngraderを使った。
AURのインストールがわからなかったら後述の追記を見てね。
インストールが済んだらターミナル上でdowngrader mesa
と入力する。
すると以下の文が出る。
Downgrade package: mesa 1: mesa-9.2.5-1 (from ALA) 2: mesa-9.2.4-1 (from ALA) 3: mesa-9.2.3-2 (from ALA) 4: mesa-9.2.3-1 (from ALA) 5: mesa-9.2.2-1 (from ALA) 6: mesa-9.2.1-1 (from ALA) 7: mesa-9.2.0-2 (from ALA) 8: mesa-9.2.0-1 (from ALA) 9: mesa-17.3.1-2 (from ALA) 10: mesa-17.3.1-1 (from ALA) 11: mesa-17.3.0-2 (from ALA) 12: mesa-17.3.0-1 (from ALA) 13: mesa-17.2.6-1 (from ALA) 14: mesa-17.2.5-1 (from ALA) 15: mesa-17.2.4-1 (from ALA) 16: mesa-17.2.3-2 (from ALA) 17: mesa-17.2.3-1 (from ALA) 18: mesa-17.2.2-1 (from ALA) 19: mesa-17.2.1-3 (from ALA) 20: mesa-17.2.1-1 (from ALA) 21: mesa-17.2.0-3 (from ALA) 22: mesa-17.2.0-2 (from ALA) 23: mesa-17.1.8-2 (from ALA) 24: mesa-17.1.8-1 (from ALA) 25: mesa-17.1.7-2 (from ALA) 26: mesa-17.1.7-1 (from ALA) 27: mesa-17.1.6-1 (from ALA) 28: mesa-17.1.5-1 (from ALA) 29: mesa-17.1.4-1 (from ALA) 30: mesa-17.1.3-1 (from ALA) >> Please enter package number, [q] to quit
ここで17.1
にしたいのだから23
を入力してみよう。
するとえっちらおっちらダウングレードしてくれる。
※最新版に依存しているパッケージがあると最悪動かなかったりする(多分)のでダウングレードする際は注意してね。まあ動かなくなるのはそのパッケージだけだからそんな気にしなくていい。
ここで再びPistonのディレクトリでcargo run
を入力する。
やったぜ!!
古いバージョンを維持する
ここでpacman -Suy
でパッケージを更新すると、mesa
もアップグレードしてしまう。
苦労してダウングレードしたのに再びアップグレードされては困る。
特定のパッケージをアップグレードして欲しく無いときは、/etc/pacman.conf
ファイルの#IgnorePkg =
をIgnorePkg = mesa
と書き換えればいい。
#
はちゃんと消してね。
なお編集する際は管理者権限でエディタを開く必要がある。例えば、nano
を使う場合はsudo nano /etc/pacman.conf
, vim
を使う場合はsudo vim /etc/pacman.conf
と入力すれば良い。
これでpacman -Suy
でパッケージを更新しても、mesa
のバージョンは更新されない。
やったぜ!!
参考文献(2017/12/27)
結論
- Pistonを使うには
mesa
のヴァージョンを17.1
にする必要がある pacman
のパッケージのヴァージョンを下げるには幾つか方法があるが、私はdowngrader
を使ったpacman -Suy
によるパッケージの更新でパッケージをアップグレードさせないためには、/etc/pacman.conf
にIgnorePkg = *パッケージ名*
を記述すれば良い
追記
疲れたから後で書く