- 投稿日:2020-02-27T23:09:07+09:00
Flatpak で Fcitx が動かない問題
ディストリビューション非依存のパッケージマネージメントシステムとして、Flatpakというものがあります。
このFlatpak、ユーザー権限でバイナリパッケージを手軽にインストールできたりして、Gentoo使いの自分としては便利に使っているのですが、一つ問題があります。それは、日本語入力ができない、という問題です。
正直そんなに日本語入力する機会なんてないし…と思っていましたが、最近チャットツールとかを導入したせいで、日本語を入力する必要に迫られていました。とりあえずは、ブラウザでWeb版を開いてなんとかしていたんですが、重い腰を上げて解決策を探ってみることにしました。
原因
あちこち調べた結果、日本語入力ができない問題は、FcitxとFlatpakアプリとの間で、D-Bus通信がうまく行っていないことが原因とわかりました。
なぜ通信がうまく行っていないのか。その原因は2つありました。1つ目は権限の問題です。
Flatpakはセキュリティにも配慮していて、アプリケーションをサンドボックスに押し込んで実行するようになっています。当然、各種通信やアクセスも制限しています。そうした制限の一部として、ソケット通信も制限されています。D-Busはリンク層としてはソケット通信を行っているので、当然この制限の影響を受けます。解決策
そのため、この「ファイアウォール」に穴を開ける必要があります。
調べてみるといい感じのIssueがありました。どうやら--talk-name=org.freedesktop.portal.Fcitx
と実行時に指定すれば良いようです。恒久的に設定したければ、override
すればよさそうです。さて、問題はまだ続きます。
D-Bus通信は、その名の通りバス型の通信システムなので、「宛先」(正確にはオブジェクト名)を指定する必要があります。その「宛先」の命名規則には慣例があって、だいたいのアプリケーションはその慣例に従っていたわけですが、Fcitxはその慣例に従っていませんでした。しかし、Fcitxでのこの修正によって、慣例通りに振る舞うようになりました。
その結果、以前の振る舞いを前提としていた一部のFlatpakアプリでFcitxが動かなくなってしまったのでした。この問題はFcitx側でもすでに把握しています。解決策は、アプリケーション側が対応してくれるのを待つか、Fcitxにパッチが当たるのを待つか、です。しかし、Fcitx側での修正は、影響範囲が広く、かつ挙動を正しく修正した結果による挙動なため、修正は難しいように思います。
めんどくさいので諦めた
ここまで書いておいて申し訳ないですが、自分はとりあえずiBusに逃げることにしました
だって日本語そんなに打たないんだもの…以上、Flatpakで日本語入力できなくて困っている方の役に立てれば幸いです。
参考資料
- 投稿日:2020-02-27T22:00:33+09:00
Raspberry Pi4セットアップメモ
Raspberry Pi4を買ったので一旦のセットアップ内容を記録としてメモ。SSHとかVNCとかUFWとか。
環境
物理
- Raspberry Pi 4 Model B/4GB OKdo版
- HDMI -> HDMI Micro変換アダプタ
- HDMIモニタ
- 有線USBキーボード
- WiFiルーター
- USB TypeCケーブルとその電源
- Androidスマホ(Huawei P30 Pro)
論理
- Raspbian GNU/Linux 10 (buster)
- RLogin 2.24.9
- JuiceSSH
やったこと
OS入手
- raspberrypi.orgから
Raspbian Buster with desktop and recommended software
を落としてきて解凍- balena.ioからbalenaEtcherを落としてきてインストール
- 解凍した
.img
をbalenaEtcherでmicroSDに焼く- microSDをラズパイに挿す
ラズパイセットアップ
- ラズパイにモニタ、キーボード、電源の通ったUSB-Cケーブルを接続
- 数分待つとセットアップウィザードが出てくるので適当に進める
- この途中でWiFiルーターに繋がるように設定しておく
- セットアップウィザードが終わったらWinKeyでメニューを出し設定>Raspberry Piの設定でSSHとVNCを有効
- シャットダウンする
- 電源USB以外を全部抜く
RDP設定
- ラズパイにSSH接続し
sudo apt-get update
- 終わったら
sudo apt-get install xrdp
- Windows 10のリモートデスクトップ接続から接続確認
SSHD設定
待受ポートの変更と認証方式の変更
待受ポートの変更と外部接続
sudo nano /etc/ssh/sshd_config
Port 22
を適当なポートに変更認証方式の変更
RLoginの機能で認証キーを生成
sudo nano /etc/ssh/sshd_config
で以下の設定に変更PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 PasswordAuthentication no PermitEmptyPasswords no
~/.ssh/authorized_keys
を作る公開鍵をコピーして
~/.ssh/authorized_keys
の一行目に貼り付ける
sudo /etc/init.d/ssh restart
でSSHDを再起動RLoginから再接続できたらOK
AndroidからSSH接続
- RLoginから秘密鍵を吐く
- JuiceSSHで秘密鍵を読む
- 終わり
Uncomplicated Firewallのインストールと設定
sudo apt install ufw
systemctl start ufw
sudo ufw enable
でFirewallを有効化SSHの穴をあける
sudo ufw allow SSHのポート番号
VNSの穴をあける
- WindowsRDPからラズパイに接続
- 蹴られるので
cat /var/log/ufw.log
でログを見る- 蹴られている
DPT
が3389
だったのでsudo ufw allow 3389
- help.ubuntu.comによると
SPT
がSource Port、DPT
がDestination Portということらしい
sudo ufw status numbered
で設定内容を確認SSHとRDPの接続確認
- 投稿日:2020-02-27T16:45:50+09:00
[android] AVDがpermission deniedで使えない時
- 投稿日:2020-02-27T16:07:27+09:00
[linux] よく忘れるコマンドメモ
ユーザーをグループへ追加
sudo adduser username groupnameユーザ情報
who whoami ${whoami}
-a, --all -b -d --login -p -r -t -T -u と同じ
-b, --boot 最後にシステムが起動した時刻
-d, --dead 終了したプロセスを表示
-H, --heading ヘッダ行を表示
--ips print ips instead of hostnames. with --lookup,
canonicalizes based on stored IP, if available,
rather than stored hostname
-l, --login システムのログインプロセスを表示する
--lookup 正式なホスト名を DNS から取得するように試みる
-m 標準入力に関連づけられたホスト名とユーザのみを表示する
-p, --process init によって起動されたアクティブプロセスを表示する
-q, --count ログイン中のユーザーのログイン名とユーザ数
-r, --runlevel 現在のランレベルを表示
-s, --short 名前, 行および時間のみを表示 (標準)
-t, --time 最後にシステムの時刻が変更された時刻を表示
-T, -w, --mesg ユーザーのメッセージ状態を +, - または ? で追記
-u, --users ログイン中のユーザを一覧
バージョン確認
cat /etc/os-release権限
chmod: (change mode) ファイルやディレクトリのアクセス権を変更する
chown: (change owner) ファイルやディレクトリの所有者を変更する
chgrp: (change group) ファイルやディレクトリのグループを変更する-Rオプションをつけるととディレクトリ配下全てまるごと変更になる
chmod 755 data chmod -R 755 data
r 4 読み込み権限 w 2 書き込み権限 x 1 実行権限 chown username data chown -R username datachgrp usergroup data chgrp -R usergroup dataフォント
fc-cache -Ev fc-cache -fv
-E, --error-on-no-fonts raise an error if no fonts in a directory
-f, --force scan directories with apparently valid caches
-r, --really-force erase all existing caches, then rescan
-s, --system-only scan system-wide directories only
-y, --sysroot=SYSROOT prepend SYSROOT to all paths for scanning
-v, --verbose display status information while busy
-V, --version display font config version and exit
-h, --help display this help and exit
- 投稿日:2020-02-27T01:44:21+09:00
Monitでのサーバー監視等の自動化
Monitとは
統合監視デーモンで、設定の閾値以上でメール通知や自動復旧等や監視を実施することができます。
・httpレスポンス、プロセス、ポートの監視 例)Apache、MySQL、SSL、Postfix、fluentd
・CPU、メモリ、ロードアベレージ、ディスク容量等1.初期設定(新規でサーバーに導入する場合)
①EPEL rpmパッケージをインストールして有効にする
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm②monitをインストール
$ sudo yum -y install monit③関連ファイルがあるか確認
$ rpm -ql monit /etc/logrotate.d/monit /etc/monit.d /etc/monit.d/logging /etc/monitrc /usr/bin/monit /usr/lib/systemd/system/monit.service /usr/share/doc/monit-5.14 /usr/share/doc/monit-5.14/COPYING /usr/share/doc/monit-5.14/README /usr/share/man/man1/monit.1.gz /var/log/monit.log④設定ファイルのバックアップ
$ sudo cp -av /etc/monitrc{,.bk} `/etc/monitrc' -> `/etc/monitrc.bak' // -a 権限を出来る限りそのままにしてコピー // -v コピー前にファイル名を表示する // {,.bk} ブレース展開と言われる手法で.bkというファイル名でコピー⑤設定ファイルの編集
$ vi /etc/monitrc… set daemon 30 // デフォルトチェック間隔は30secなので任意に変更 … include /etc/monit.d/*.conf // .confだけを読み込むよう編集⑤' monitはWWWサーバの機能も持っており、HTTP 経由で設定を参照したり、 サービスの制御を行ったりすることができる
set httpd port 2812 and # Webインターフェースポート(Default:2812) allow localhost # アクセスを許可するIP(localhost) allow XXX.XXX.XXX.XXX/XX # アクセスを許可するIP(任意のIP) allow admin:monit # 管理コンソールのuser='admin' password='monit' #以下SSLを使わないためコメントアウト #with ssl { # enable SSL/TLS and set path to server certificate # pemfile: /etc/ssl/certs/monit.pem #}⑥設定ファイルの作成
$ vi /etc/monit.d/XXXX.conf // 設定ごとに新規作成 $ mv /etc/monit.d/logging /etc/monit.d/logging.conf // ログ設定ファイルの名前変更2.共通設定ファイル
以下がメイン設定ファイルです。
/etc/monitrc バックアップ:/etc/monitrc.bk includeして、以下の個別設定ファイルを読み込んでいます。 /etc/monit.d/*.conf3.個別設定ファイル(例)
/etc/monit.d/test.conf// 監視プロセス設定 check process test matching "test" // 起動設定 start program "/usr/local/test/bin/start_test.sh" // 停止設定 stop program "/usr/local/test/bin/stop_test.sh" // プロセスがない場合、リスタート if does not exist then restart // slackに通知 ※ if does not exist then exec "/usr/local/test/bin/slacknotice.sh" // 5回の監視中に5回リスタートして起きなければやめる if 5 restarts within 5 cycles then unmonitor※実行するシェルに実行権限付与することを忘れないこと
$ chmod +x
※slack通知参考サイト: https://cloudpack.media/10085
monitのベストプラクティスとして以下のcronを仕込むことが推奨されている。
echo "0 */1 * * * /usr/bin/monit monitor all" >> /var/spool/cron/roothttps://hogem.hatenablog.com/entry/20090723/1248358467
4.実行コマンド
起動コマンド
$ systemctl start monit
OS起動時に自動起動
$ systemctl enable monit
停止コマンド
$ systemctl stop monit
ステータス
$ monit status
設定を変更した場合のリロード (重要!!)
$ monit reload
設定を変更した場合のテストコマンド
$ monit -t
監視状況を知る
$ monit summary
monitがさぼってる場合(Not monitoredのとき)
$ monit monitor all
コマンド一覧
$ monit -h
5.管理画面(Monit Service Manager)
IP:monitのサーバーのIP
PORT:⑤'で設定したPORT
http://XXX.XXX.XXX.XXX:2812/
6.有償のM/Monitについて
以下のサイトが詳しく記載されていました。
https://inokara.hateblo.jp/category/monit