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

