6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rustその2Advent Calendar 2017

Day 22

Rust ArchでPistonを動かそう

Last updated at Posted at 2017-12-26

序文

Rustで書かれたゲームエンジン、Pistonを見つけた。

早速git cloneしてあれこれ書いて、cargo runで走らせる。
どっきどっきわっくわっくしながら待っている。

そして次の結果が出た。
20171227040130.png

は?

ということで、本記事では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を入力する。

20171227040204.png

やったぜ!!

古いバージョンを維持する

ここで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.confIgnorePkg = *パッケージ名* を記述すれば良い

追記

疲れたから後で書く

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?