「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



昨日はお仕事、今日はお休み。ってことで、1か月ちょっと
ぶりに、ビデオゲームミュージアム・ロボット行ってきた。

まとめる時間がないので、その話はまた明日に。
(あと、桶川のハードオフ+ダイソーの店舗にもよってきた)






最近もっぱら、VirtualBoxのLinux Mint20.1にxampp環境を
作ってるところ。

…なんだけど、まぁxamppのインストールまではできたものの、
オイラはものぐさなので、いちいちxamppコントロールパネル
をシェルからコマンド起動するのいやだ。なのでデスクトップ
にランチャアイコン(Windowsでいうショートカット)を作って
しまいたいところ。ワンクリックで起動したい。


で、ランチャアイコン自体は、デスクトップで右クリックすれば
簡単に作れるし、なんならテキストファイルなので、テキスト
エディタで適当に編集すれば簡単に作れる。
けど、xamppコントロールパネルは、sudo付けて実行しないと
いけないってところが、面倒くさいことになっちゃう。

まぁ、ターミナルから起動するなら、普通にsudo付けて起動
すればいいわけで、一見、何の問題もないようにみえるんだ
けど、実際は上手くいかない…
GUI端末(デスクトップ上)で、ランチャアイコンから単純に
起動しようとするとしたら、sudo付けた実行コマンドイメージ
をらうんちゃに登録すればいいと思うかもしれないんだけど、
それだと、スーパーユーザのパスワード入力に答えられない。
で、以前であればgksuを使ってランチャアイコンに登録して
やればよかったんだけど、gksuは廃止されてしまった。

で、その代替のpkexecを使えばいいんじゃね?っていう話
になるわけなんだけど、ここで紆余曲折が。
(Linux Mint20.1以外ではもしかしたらちゃんと動くのかも
しれないけど、詳しいことはよく解ってないので、以下そういう
情報だと思ってください)

(ちなみに、ランチャアイコンは、デスクトップで右クリック
して、「ランチャの生成」を選ぶと、簡単に作れちゃう。あと、
pkexecを使えば、スーパーユーザ権限が必要なGUIアプリを実行
する際に、pkexec経由で起動することによって、GUI画面で
パスワードを入力して、その権限認証が出来たということで
GUIアプリを動かせるしくみ)


ランチャの生成で指定する実行コマンドとそのパラメタなんだ
けど、pkexec使ってxamppコントロールパネルの実行ファイル
をしていしてやればいいだけなので、単純に考えると

 pkexec /opt/lampp/manager-linux-x64.run

を指定してやれば済むはずだなぁ、と。

で、そういう風に指定してランチャを作って、ダブルクリック
で起動してみると…起動してくれない。なんだろうなぁ?と
思って色々調べ始めたり、実験しまくっていたりしたら、
なにげにド填まりしてた…。


なんで動かないんだろうなぁ?と思って、あれこれ調べ
始める。

ランチャアイコンを自動生成させると、デフォルトでは
どうやらターミナルを非表示にすることになっているらしいん
だけど、これを強制的に表示させたりしてあれこれ眺めて
みると、どうやら、環境変数周りでエラーが表示されている
っぽいなぁ。

 Unknown Error no display name and no $DISPLAY environment variable

この$DISPLAYに加え、$XAUTHORITYの2つの環境変数が見れない
ってあたりが、起動に失敗する原因になっているように見える。


ってことで、ランチャアイコン作成時に指定する起動用の
コマンドラインイメージについて、環境変数周りをいじり
なおす。目下のところはこんな感じ。

 Exec=env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY pkexec /opt/lampp/manager-linux-x64.run

要は、envコマンド使って環境変数を無理やり存在する状態に
してやって、それを踏まえてpkexecでxamppコントロールパネル
を起動しようとしているところ。


…うまくいかない。ターミナルに何かメッセージでも表示して
くれればいいんだけど、スーパーユーザのパスワードを入力した
直後に、なぜかターミナルまで一緒に異常終了してしまう…


それらを元に、あれこれと実験してみたりしたんだけど、
なんんかうまくいかない。っていうより、これなんだ?


$ env DISPLAY=$DISPLAY pkexec /opt/lampp/manager-linux-x64.run
Unknown Error no display name and no $DISPLAY environment variable

$ pkexec echo $DISPLAY
:0

$ env DISPLAY=$DISPLAY pkexec echo $DISPLAY
:0

$ env DISPLAY=abc pkexec echo $DISPLAY
:0

$ env DISPLAY=abc echo $DISPLAY
:0

$ env DISPLAY=abc printenv DISPLAY
abc

 $ printenv DISPLAY
:0

環境変数「DISPLAY」とか「XAUTHORITY」とかが設定されて
いない的なエラーがひょうじされるので、一旦envコマンドを
絡ませてから、あらためてpkexec経由でxamppコントロール
パネルを起動しようと思っているわけなんだけど…だめ。
例によって

 「Unknown Error no display name and no $DISPLAY
  environment variable」
ってのが出てくる。

環境変数に入ってないの?とか、envコマンドでちゃんと設定
されてないの?とか、色々調べなおしてみたんだけど、
そもそもechoコマンドで表示させてみても、$DEISPLAYには
「:0」が設定されているみたい。なぜか、コマンドラインで
指定していたデフォルト値は、envコマンドではうまく設定
できなかった。

echoコマンドでは、なんでenvコマンドでパラメタの中身を
新たに指定しているのに、それが反映されないの?と。
printenvコマンドでは反映されているのに…


しばらくその理由が判らなかったんだけど、ふと気づいた。

printenvでは、プログラム実行時に渡された環境変数を
そのまま使って表示しているんじゃないかなと。
一方でechoでは、プログラムの実行前にシェルでパスの展開
を行っていて、実行時にはあらためて元の環境変数を読み出し
ている感じがする。


ってことは、xamppの実行ファイルって、echoと同じように
改めてパスの展開をわざわざ内部で展開してから起動している
のかなぁ?

一般的なプログラムだと、envコマンドで指定した環境変数を
拾ってて、xamppコントロールパネルはシェルスクリプトと
同じように、一旦独自に展開してからそれを読み込んでいる
のかなぁ?なんとなくそう考えると合点がいくんだけど。


じゃぁもしかして、xamppコントロールパネルってシェル
スクリプトで書かれた実行ファイルなの?と思って、なかみ
を眺めてみたら、普通にバイナリファイルだなぁ…。
中身はよくわからないけど、なんとなくシェルコマンドを
再解釈して環境変数を独自に持ってきているようには見えない
気がするんだけどなぁ…

やっぱりよくわからん…

とりあえず、ホームディレクトリに単純なシェルスクリプト
でも作っておいてお茶を濁しておくのが簡単なのかな…





https://twitter.com/QcKatze/status/1365536194042294272

シアワセだし。(ホンダ党)





https://twitter.com/antique_ghost/status/1365519182666682368

おぉ!!
付藻茄子!松永弾正!!





https://www.youtube.com/watch?v=CfN7r9KMQ84

うーーーん。Photoshopって、やっぱりCGを作るツールだよな。





https://www.youtube.com/watch?v=vA0KK6hWQ9o

「デブ戦闘」

https://www.youtube.com/watch?v=HSzfUSCVYeQ

>ダイソーグライダーをラジコンにして飛ばす

どちらもスゴイ。スバラシイ。

オイラ、こういうラジコンを自由自在に飛ばすのが夢だった
んだよなぁ…






Aliexで注文してた物が立て続けに届いた。

https://ja.aliexpress.com/item/1005001603942809.html

2×2×2のキューブと、

https://ja.aliexpress.com/item/32853142487.html

鼻うがい器。

鼻うがい器は、去年Amazonで注文したら届かなくて、当時
はもういいやって思ってあきらめた(返金手続きになった)
んだけど、今回はちゃんと届いた。
300ccなので、2.7gの塩を混ぜて作ればいいわけだよな。



コメント ( 0 )