Fedora 30 から 31 にアップグレードしたら、デスクトップのログイン画面がものすごく古くさいというか、ダサい感じになってしまった。
調べてみるとどうやらこれは、LightDM というもので、今まで使われていたモダンなログイン画面は GDM というものらしかった。
これらのソフトウェアのことを、ディスプレイマネージャと呼ぶらしい。
名前さえ解ってしまえば解決策はすぐに検索できた。
$ sudo systemctl enable gdm.service
Fedora 30 から 31 にアップグレードしたら、デスクトップのログイン画面がものすごく古くさいというか、ダサい感じになってしまった。
調べてみるとどうやらこれは、LightDM というもので、今まで使われていたモダンなログイン画面は GDM というものらしかった。
これらのソフトウェアのことを、ディスプレイマネージャと呼ぶらしい。
名前さえ解ってしまえば解決策はすぐに検索できた。
composer モジュールのバージョンは composer.lock に記録されていますが、これを取り出すコマンドを考えてみました。
まずは composer コマンドを使う方法。
composer の --ansi は出力結果を常に色付きにするためのオプションで、less の -R は色情報を解釈してカラー表示にしてくれるオプションです。
これだと色んな情報が一度に出力されてしまうので、バージョン番号だけほしいときはちょっと不便。
なので jq を使って JSON ファイルを直接漁る方法も考えてみました。
jq の -r は出力する文字列のダブルクォーテーションを外すためのオプションです。
Let's Encrypt で SSL 証明書を取得するための certbot が CentOS 7 でうまく動かなかったので、そのときにやったことをメモしておきます。
yum でインストールした certbot コマンドを実行すると、次のようなエラーが発生してしまいました。
pyOpenSSL というモジュールを v0.14 以上にアップデートしてねと書いてあります。
pyOpenSSL は certbot と一緒に yum でインストールしたものが入っていて、バージョンは v0.13.1 でした。
これをアップデートすればよさそうです。
Python モジュールのアップデートには pip コマンドを使います。
このとき --force-reinstall を付けないとアップデート後も同じエラーが出てしまいました。
以上で certbot コマンドが使えるようになりました。
ConoHa VPS 上の CentOS 6.7 で動かしていた Hubot が、昨日から Slack に繋がらなくなってしまいました。
原因は openssl をアップデートしたことだったのですが、原因を突き止めるまでの経緯を書いておきます。
tmux で <Ctrl+矢印> を使いたい場合は、.tmux.confに以下のように設定しろという記事をよく見かけます。
しかし、PuTTY から SSH アクセスしている時に、この設定をしていても、<Ctrl+矢印> が tmux の中で実行しているプログラムにうまく伝わってくれなくて、そのために Ctrl + 左右キーで vim のタブ切り替えをする という設定が使えず、もう何年も tmux を使うのを諦めていました。
ところが、ようやくxterm-keysの意味と、PuTTY を使った環境でなぜこの設定が効かなかったのかが解ってきたので、改めてここに記しておきます。
zsh でコマンド履歴を表示するのに peco を使っているのですが、root ユーザにsuした状況で peco を起動し、選択項目を変更するために上下カーソルキーを押すと、表示が崩れる問題に悩んでいました。12
カーソルキーを使わず、Ctrl + N / Ctrl + P を使えば、表示が崩れないので、しばらくそうしていたのですが、やっと原因となる要素が特定できました。
LANG=en_US.UTF-8 だと崩れるみたいです。
英語に設定されているとどうして崩れるのか、というところまではまだ調べられていないのですが、とりあえず原因が分かったので、対策を講じられそうです。
zsh のコマンド履歴を peco で表示するために、.zshrc に以下のような設定を書いているのですが、
function peco-select-history() {
local tac
if which tac &> /dev/null; then
tac="tac"
elif which gtac &> /dev/null; then
tac="gtac"
else
tac="tail -r"
fi
BUFFER=$(\history -n 1 | eval $tac | peco --query "$LBUFFER")
CURSOR=$#BUFFER
zle clear-screen
}
if which peco &> /dev/null; then
zle -N peco-select-history
bindkey '^r' peco-select-history
fi
赤字で示した peco を呼び出している部分に、環境変数LANG=ja_JP.UTF-8を指定するようにしました。
BUFFER=$(\history -n 1 | eval $tac | LANG=ja_JP.UTF-8 peco --query "$LBUFFER")
これで、peco を表示している間だけLANG=ja_JP.UTF-8となり、表示が崩れなくなりました。
昔からの慣例というか癖で、開発マシンの httpd の DocumentRoot を、/mine/www/というところに設定しているのですが、Fedora に SELinux という仕組みが搭載されてから、怒られるようになってしまいました。
調べてみると、新しく設定したドキュメントルートに、httpd がアクセスするための SELinux のラベルが設定されていないのが原因のようで、こちらの記事に対処方法が書いてありました。
基本的にはこの通り実行しただけなのですが、自分の環境だとラベルがちょっと違ったので、それも含めてメモしておきます。
なお、自分の環境は、Fedora 21 で、ドキュメントルートは/mine/www/です。
参考にさせてもらっている記事のやり方にならって、まずは、もともとドキュメントルートに設定されていた/var/www/の設定を見てみます。
$ ls --context /var/ | grep www drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 www/ $ ls --context /var/www/ drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin/ drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html/
参考元の記事と違って、最後にs0というラベルが付いていますね。
これも含めて、新しいドキュメントルートに対し、ラベルを設定します。
今回は Web の開発マシンということで、どこでも CGI が動くようにしたいので、cgi-binに設定されているラベルを適用したいと思います。
$ sudo chcon system_u:object_r:httpd_sys_script_exec_t:s0 /mine/www/ -R $ ls --context /mine/ | grep www drwxrwxr-x. root developers system_u:object_r:httpd_sys_script_exec_t:s0 www/
ちなみにs0無しでやってみたら、設定が適用されませんでした。
設定ができたら、httpd を再起動してみます。
$ sudo systemctl restart httpd.service
特に怒られなければ成功です。
以前 CentOS 6.5 に Lua を有効にした vim をインストールする手順を書きましたが、今回は CentOS 7.0 にインストールする手順を書きます。
今回は Perl とか Ruby とか Python とか入れないでみました。
普段作業マシンで GNU Screen を使っていて、もちろん .screenrc は秘伝のタレ状態で、その状態で他人の用意したサーバーに SSH でアクセスしたときの話。
文字入力がなんか変で、バックスペースが効かなかったり、カーソルキーを押すと直前の文字が繰り返し入力されたりということがたまにあります。
なんでだろうと思っていたら、SSH セッションを閉じたときに、次のように表示されました。
どうもサーバーさんにscreen-256color-bceという定義が見付からないらしいです。
screen-256color-bceというのは、screen を起動したときにTERMという環境変数に設定される値で、おそらく .screenrc の以下の設定項目から作られています。
なんでこんな設定をしたかというと、vim で 256 色表示を使いたかったからなのですが、一時的に作業する他人のマシンでまでこの設定を維持する必要は無いので、ログインしたらすぐに
と入力すればTERMの値が変更されて、文字入力も希望している通りに認識されるようになります。
サーバーによってはxterm-256colorだったら受け入れてくれたりするので、
も試してみる価値あるかも。
一度しかアクセスしないサーバーならこれでもいいけど、何度もこれやるのは面倒だなあと思ったら、SSH コマンドを打つときにTERMを指定する方法もあります。
相手のサーバーでTERMの値がscreen-256color-bceになってる理由は、まず screen が screen を実行したマシンのシェルの環境変数TERMを設定していて、これが SSH によってサーバーに渡されて、サーバー側のシェルの環境変数に設定されているので、SSH で繋ぐ直前にTERMの値を変えてしまおうというわけです。
コマンドを実行するときに代入した変数の値は、そのコマンドが終了すると破棄されるので、クライアント側のマシンには影響ありません。
この方法だったら、シェルの履歴からアクセスしたり、シェルスクリプト書いたり、エイリアス書いたりすれば入力が省略できますね。
他にも .screenrc をちゃんとする方法とか、~/.ssh/config を使った設定方法とかもありそうだけど、今回はここまで。