karubabuの日記

タイトルに解決と書いているものがあるけれど、別に付いていない物は解決していないというわけではないです。つまるところ記事を書いた後に解決してちょっと嬉しかったので付けました。

proton経由でゲームを起動するとやたら捗る

wineでunity製のゲームを起動すると、wineのウインドウが非アクティブになった時点でwineが操作不能になったりするのが修正されていたりするよ
他にもunity製のゲームはwineで起動するとキーボード操作が聞かないものがあったりするけれど、そこも修正されているよ
単純にwineに手を加えたという感じでかゆいところに手が届くのでえらい

何も考えなくともsteam外ゲームをsteamに登録するとこれが使われるはずなので、私の言うことは今更感はあるかもしれないけれども
以下は私が困ったところ

まず起動しない

STEAM_COMPAT_DATA_PATH環境変数が定義されていない
$HOME/.wine的な感じで、~/.proton/起動したいあぷりねーむとかディレクトリを作って、起動時に
STEAM_COMPAT_DATA_PATH=~/.proton/game_name python3 /home/user/.local/share/Steam/steamapps/common/Proton\ 4.11/proton waitforexitandrun /home/user/Games/game_name.exe
とか指定してあげるとよい

pfx.lockが見つからない

protonをsteamからダウンロードして、直接cliから起動しようとして、 FileNotFoundError: [Errno 2] No such file or directory: '/home/user/path/to/STEAM_CAMPAT_DATA_PATH/pfx.lock'
とか言われた時は大体STEAM_COMPAT_DATA_PATHへのディレクトリが作成されていない
自動でディレクトリを作ってくれたりはしないので、よしなに作ってね

go製のプロジェクトのebulidを書く

emakeやれば終わるものとは別ゲーすぎません???
次も大変な思いをしない様に困ったところは書いておくね
今回ebulidを書いたやつ
GitHub - m13253/dns-over-https: High performance DNS over HTTPS client & server
今回のebuild
gentoo-overlay/dns-over-https-2.2.1.ebuild at master · karubabu/gentoo-overlay · GitHub

モジュールはEGO_VENDORに列挙する必要がある

今になって考えてみると当たり前なのだけれども、モジュールをgo.modにある通りに適当にgo getしてくると、
portage側でその真正性が確認出来無い問題が出るので、ebuild内ではgo get自体が出来無くなっている
そのため、必要なモジュールをSRC_URIと同じ様にハッシュか何かをmanifestに保存しつつ同タイミングでダウンロードすることになる
というわけで以下の部分がそれ
gentoo-overlay/dns-over-https-2.2.1.ebuild at master · karubabu/gentoo-overlay · GitHub
EGO_PNはビルドするプロジェクトの名前、EGO_VENDORはモジュールの名前とハッシュかバージョンそしてgolang-vcs-snapshotを継承する
golang-vcs-snapshotを継承するタイミングはEGO_VENDORを列挙した後でないと、この変数は読み取り専用ですよ!と文句が出るので気を付けよう(1敗)
詳しくはgolang-vcs-snapshotのソースコードにある解説を読むと全部わかるのでえらい
golang-vcs-snapshot.eclass\eclass - repo/gentoo.git - Official Gentoo ebuild repository

ビルド時に-mod=vendor引数を入れる

☝️に付随する事柄だけれど、☝️の方法で入ったモジュールはGOPATH以下ではなくプロジェクトのrootディレクトリ/vendorに置かれるので、それを認識させる必要がある
以下の部分がそれ
gentoo-overlay/dns-over-https-2.2.1.ebuild at master · karubabu/gentoo-overlay · GitHub

あとは手慣りでsrc_installすれば良いと思う

おわりに

やたら大変だったのでゆるしていないよ
そもそもgoでプログラムを書いたことが無いので何が何処にあるのかさっぱり分からなくてはちゃめちゃに辛かった
まあ別に他の言語のプロジェクトも全然わからんしmakeを叩けばよしなにやってくれるやつ以外は全部辛いのだけれども
あとgoはgo help moduleとかやるとlessもなしに英語ドバー!!!してくるのが精神を抉ってくるのでやめなさーい!!
二つ目の問題もgo help moduleをしっかり読めば一瞬で分かることなのだけれど、しっかり読みたくなくてこれに気が付くまで時間がかかりました…

後はgo系のebuild classがやたら一杯あるのが謎だったね
結局golang-vcs-snapshotのみを使ったけれど、これでよかったのか、もっと相性の良いものがあったのか、全然わからん!

変更し難いebuildに自家製patchを加える方法

こんなん学校で教えて貰わなかったんですけど!
この機能を知っている人はどうやってこれを知ったものなの

ことの発端

sys-kernel/gentoo-sources-5.5.0をインストールする
そのmoduleとして、x11-drivers/nvidia-drivers-440.44-r1をビルドしようとする
この時この様なエラーが出る、具体的にはこれ
706774 – x11-drivers/nvidia-drivers-440.44-r1 with kernel 5.5 - .../work/kernel/nvidia-drm/nvidia-drm-fb.h:30:10: fatal error: drm/drmP.h: No such file or directory

解決とタイトル回収

このbugzillaのコメントに、これに対応するパッチとその適用方法が書いてある、具体的にはこれ
/etc/portage/patches - Gentoo Wiki
自分が管理していないebuildが触っているsource codeに対してパッチを煩雑な方法無しで適用出来る様になる
適当にダイレクトリを作ってパッチを置いてemergeするだけ!簡単 みんな作ってる 作ってないのはお前だけ

おわりに

この機能を知ってめちゃ嬉しかったので書いたよ
こういうのめっちゃ欲しかったけれど、やり方が分からなくて放置するみたいなことをやりまくってきたのでめちゃ有り難いね
この機能が知れたのも嬉しいのだけれど、そもそもこの様な機能が存在すること自体を知る方法が知りたいんだよなあ(◞‸◟)

やる夫スレがラノベ化!今すぐ読もう!

この記事はdon.8mitsu.net Advent Calendar 2019 - Adventar 1日目の記事です

皆さんはやる夫スレを見ていますか?
私は最近とんと見ていません
私が見て居ない間にはちゃめちゃ良いニュースがあったことを知ったのでここでおすすめさせてね

やる夫はカードを引くようですのラノベ

アキトはカードを引くようです
ざっくり言うと、女神とかいう謎のやつらに征服された人間達は戦争と娯楽の代わりに女神の力を借りて正々堂々デジモンカードバトルするという話だよ
もうこのサイトを見れば良いのでこの記事は早くも終了ですね

ほんと読んで貰いたいので私なりに説明したいと思ったけれど、どのあたりから説明を始めれば良いのかわからん
色々言っても普段文字を全く書かない私では結局既にある記事より良い物は出来無いだろうし、このあたりの記事を読むのもあり
小説と原作を比べることで浮かび上がる“やる夫スレ”の批評性(飯田一史) - 個人 - Yahoo!ニュース

それでも何か言うことがあるとするとこの4つだと思う

大事なことは?

まず原作を読んでからでも判断出来る

なんにせよ、この✋のweb作品はまずwebの原作を読んで価値に納得したら改めて本を買えば全く損はしないのでまずはぐぐって原作を読んでほしい
寧ろ原作を読んでから本を買えば原作と違うストーリーがあったり新しい描写で新しい発見や世界観の表現があったりして損どころか得しすぎて貯蓄が貯まるまである
原作を読めばAAにはAAの、小説には小説の描写があるので戦闘表現や表情表現で新しい事に気が付けたりするしね

版権キャラ依存は問題無し

上記の記事では、版権キャラを創作キャラに変える事によってキャラに対するネタの相互認識が欠落してしまうことを懸念してけれど、
そのあたりも上手く表現されているのでどちらかというと最高だよ
似た様な指向性を持つキャラがもう一度作られたりするから実質1粒で2度美味しいといっても良いよ(物は言いよう)
原作を読んで気に入ったキャラが居るのなら実質あたり作品決定みたいな不死ある

メタゲームへの対応有り

他にも、この作品は2014年発の、"なろう系web小説"のと言われる存在が普通の人に周知されて来て、それらを叩こうとする一般人という流れが確立しつつある時期なので、
それを若干メタった側面が感じられるのでその✋の話が苦手な人にはおすすめだよ
ゴブリンスレイヤーも2014年あたりの作品なので同じ系列で、あのあたりの和マンチ表現が好きだったりする人にもおすすめだよ

まだ連載中

カドカワのやる夫スレのラノベ化企画の4つある内この作品にだけ言及するのは、この作品があの中で一番好きというのもあるけれど、
先程言った版権キャラ依存度が最も高いのにも関らず本当に出来が良いからなところがあるよ
あとこれはまだ原作すら連載中なので人気が出れば連載が滞ることもなくなって私もハッピーだよ

おわり

なんかぺらっぺらだし画像もないせいか味気がなさすぎる
こんなんでおすすめできとるんか
とりあえず試し読みか原作を読んで 美少女が頼んどるんやぞ

ここに2日目の記事へのリンクを貼る =>

GNU linuxなパンヨヨを起動してから音が出るようになるまでなんだかやたらかかる

やつを直したのでここにメモしておくね
前にも起きたはずなのだけれど私はメモしていなかったので私が苦労しました
ちゃんとメモしとけや!

なにがおきた

パンヨヨを起動してから音声の設定が行われるまで3分くらいかかるようになる
設定が完了するまでは無音なのだけれど、alsamixerを見る限りだと音量が100%になっているし、やたら大きな音で"サーッ(砂嵐(迫真))"と鳴っているしでこわい

journalctl -xeしてログ(ここのログって何と言うものなんだろう)を見てみると、

systemd-udevd[322]: Spawned process '/usr/sbin/alsactl restore 0' [411] is taking longer than 59s to complete
---------blahblahblah --------
systemd-udevd[322]: Spawned process '/usr/sbin/alsactl restore 0' [411] timed out after 2min 59s, killing
systemd-udevd[288]: controlC0: Worker [322] processing SEQNUM=3054 killed
systemd-udevd[288]: Worker [322] terminated by signal 9 (KILL)
systemd-udevd[288]: controlC0: Worker [322] failed

と書いてある。なんだかsystemd-udevdが何かしているっぽい?
他にもalsa-{restore, state}.serviceという物が存在して、それもalsactlを起動するものっぽい

なにをした

udevdとalsa-state系のどちらも、alsactlを起動して音量の設定やらなんやらを起動・終了時に復元・保存するようなやつだと思うので、片方だけ頑張って貰うようにする。
具体的には、/lib/udev/rules.d/90-alsa-restore.rulesを削除して再起動した
問題なく起動直後から音声の設定が効く様になった₍₍⁽⁽(ી( ‘ω’ )ʃ)₎₎⁾⁾

おわりに

もうメモしたので無敵です
でもどうして2度も同じようなことが起きるようになったんだろう
多分直前のemergeが関係していそうだけれどまあ直し方は分かったしいっかー☺️

linux版のciv5が7より高いgccでsys-libs/glibcとx11-libs/libxcbをビルドすると起動しないのをなんとかする

なんとかすると言っている様に、修正したわけではなくなんか起動出来る様になるというやつです
というよりこれについてググっても全然ひっかからないし、ただのおま環なのでは?ボブは訝しんだ

なにがあった

linux版 Civ5はsys-libs/glibcとx11-libs/libxcbをsys-devel/gcc-8.2.0-r2でビルドすると動作しなかった - karubabuの日記
これをみて
gcc9でも同じっぽい場所で落ちるのを確認しています

どうした

とりあえずgdbで起動してバックトレースを見る

f:id:karubabu:20190610204259p:plain
gdb civ5

なんかなんやかんや書かれているけれど、どうやら開幕に流れる動画を再生するところで落ちているみたい
つまり動画を再生しなければなんとかなるのでは?
Civ5App::PlayOpeningMovie()あたりをNOPで書き潰せば動画を再生せずに次の動作に向ってくれそう
objdump -CDMintel Civ5XP | grep PlayOpeningでPlayOpeningMovie()の場所を探すとそれっぽいものが出てくる

086e0f3a <Civ5App::PlayOpeningMovie()@@Base>:
 86e0f41:   e8 00 00 00 00          call   86e0f46 <Civ5App::PlayOpeningMovie()@@Base+0xc>
 86e0f58:   0f 85 2a 01 00 00       jne    86e1088 <Civ5App::PlayOpeningMovie()@@Base+0x14e>
 86e0f65:   0f 85 1d 01 00 00       jne    86e1088 <Civ5App::PlayOpeningMovie()@@Base+0x14e>
 86e0f72:   0f 85 10 01 00 00       jne    86e1088 <Civ5App::PlayOpeningMovie()@@Base+0x14e>
 86e0f87:   0f 85 fb 00 00 00       jne    86e1088 <Civ5App::PlayOpeningMovie()@@Base+0x14e>
 86e0fda:   0f 85 90 00 00 00       jne    86e1070 <Civ5App::PlayOpeningMovie()@@Base+0x136>
 86e106e:   74 8b                   je     86e0ffb <Civ5App::PlayOpeningMovie()@@Base+0xc1>
 86e1c41:   e8 f4 f2 ff ff          call   86e0f3a <Civ5App::PlayOpeningMovie()@@Base>

後はhexcurseあたりでe8 f4 f2 ff ffの部分を90 90 90 90 90に変更する
動く₍₍⁽⁽(ી( ‘ω’ )ʃ)₎₎⁾⁾

おわり

適当にプレイしてみたけれどなんやかんや落ちていないので問題なさそう
ゲームクリア時に動画が再生された気がするので、そのあたりでまた落ちそうな気がしないでもないけれどまあクリアした後なら良いでしょう
gdbの画面はなんだかよしなに色が付いていたので画像にしたけれど、これテキストでもよかったのかもしれない よくわかんないね
grepしてしまうと元のテキストが持っていた色が消えてしまうのがかなしい あれってなんとかならないのかしら
誰か教えてくれー!

f:id:karubabu:20190610205347p:plain
久し振りにやったciv5 周りに幸福資源がなさすぎるので多分途中で終わる

squidの/var/{run, cache, log}/squidのuser, groupが勝手にsquid:squidからproxy:proxyに変更される

タイトルの通りです
よくわからないけれど直ったしぐぐっても同じ様な症状の人が見付けられなかったので書いておくね

なにがあった

  • gentooのprofileを17.0から17.1にする
  • ライブラリ周りでsquidが起動できなくなったのでリビルドする
  • 再起動の度に/var/{run, cache, log}/squidsquid:squidからproxy:proxyに変更されるようになる

よくわからんポイントとしては、

  • _ find / -user proxyで検索してもproxyユーザになっているディレクトリは/var/{run, cache, log}/squidしかない
  • ebuild自体は問題ないぽいし、/var/{run, cache, log}/squid以下のファイルは問題なくsquid:squidになっている
  • proxyユーザって使われているんか?

後はapparmorのsquidプロファイルを無効にしてみたりしたけれど特に変化はなかった
zunda 🍡 nはおまけ :green_dango:: "@babukaru@mstdn.maud.io find /etc -type f | xargs…" - zundon
☝️(´・ω・`)ずんださんにアドバイスを貰ったのでこれもやってみたけれど、汎用的な単語すぎてめちゃんこ出てきたわりには何か分かりそうなものはありませんでした…

どうした

/var/{run, cache, log}/squidsquid:squidにして、
# userdel proxyして謎のユーザを消し飛して再起動
問題なく/var/{run, cache, log}/squidらがsquid:squidで維持されるようになった

わからんけれど直ったしいっかー☺️

2019-07-12追記: /usr/lib/tmpfiles.d/squid.confというファイルがあって、このファイル内で定義されて起動時に変更されていたっぽい
ここを変える前はjournalctl -xesystemd-tmpfiles[3223]: [/usr/lib/tmpfiles.d/squid.conf:2] Unknown user 'proxy'.というログが残っていたけれど、
よしなに変更するとログが残らなくなったし問題も起きなくなった
よかったー☺️