序文
Rustで書かれたゲームエンジン、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 = *パッケージ名*
を記述すれば良い
追記
疲れたから後で書く