elementaryOS5.0で非アクティブ時のサスペンドの設定が効かない問題

既知のバグのようです。lightdmの実行ユーザーでgsettingsを行う必要がありました。

sudo -s
su - -s /bin/bash lightdm
dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type nothing

ちなみに下記のようにすると現在の設定を確認を確認したりできる。

sudo -s
su - -s /bin/bash lightdm
# AC接続時のサスペンド設定確認
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout
# バッテリー使用時のサスペンド設定確認
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout

javaのプログラムでsystemdのサービスを作る

下記のようなファイルを作成する。
・Afterは記述したserviceやunitの起動処理が終わるまで起動しない
・Restartはプロセスが終了した場合に自動で再起動するかを設定
(no:なし、always:常に、on-success:正常終了した場合、on-failure:異常終了した場合)

[Unit]
Description=JAVA test program service
After=NetworkManager.service

[Service]
User=test-user
ExecStart=/usr/bin/java -jar /usr/local/java-test/JavaTest.jar
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

CentOS7のSANEを利用してGT-S630のスキャンをCLIで行う

はじめにドライバーをここからダウンロードしてインストールする。

SANEをインストールする。

# yum install sane-backgrounds

そのままでは権限の問題でroot以外ではデバイスが利用できないので、専用グループに権限を与えるudevルールを作成する。
まずは専用グループを作成して、使用するユーザーを加える。

# groupadd scanner
# usermod test-user -a -G scanner

「lsusb」コマンドでベンダーIDとプロダクトIDを調べる。
下記の結果の場合はベンダーIDが04b8でプロダクトIDが0142になる。

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 04b8:0142 Seiko Epson Corp. GT-F730 [GT-S630/Perfection V33/V330 Photo]
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

調べたベンダーIDとプロダクトIDを使用して下記ファイルを作成する。

ATTRS{idVendor}=="ベンダーID", ATTRS{idProduct}=="プロダクトID", MODE="0664", GROUP="scanner", ENV{libsane_matched}="yes"

あとは下記のようにCLIでスキャンできる。
※ 画質やコントラストの調整をする場合はxsaneをインストールすると便利

$ scanimage --format tiff --mode color --resolution 300 --contrast 35 > /home/test-user/Pictures/test.tiff

dockerでEC-CUBE4の検証環境を雑につくる

まずはこの記事を参考にPHP7.2とApacheのコンテナをつくる。
(今回はSQLiteで良いのでpdoのみ入れてpdo_mysqlは入れなかった)

eccube4という名前のコンテナをつくった。

下記を実行して国際化用拡張モジュールを追加する。

# docker exec -it eccube4 /bin/bash
# apt install zlib1g-dev libicu-dev
# docker-php-ext-install intl

コンテナ内で/var/www/htmlのパーミッションを変更しておく。とりあえず777にしたが、www-dataを所有グループにするのが正解かもしれない。

# chmod 777 /var/www/html

コンテナ内でwgetを使ってEC-CUBEのアーカイブをとってきて解凍する。

# apt install wget
# wget http://downloads.ec-cube.net/src/eccube-4.0.0.tar.gz
# tar -xzf eccube-4.0.0.tar.gz 
# mv eccube-4.0.0/* eccube-4.0.0/.[^\.]* ./

あとはhttp://127.0.0.1/にWEBブラウザでアクセスしてインストールする。

Ubuntu18.04でVPN切断後に名前解決できなくなるバグ対応

問題点

L2TP/IPsecで自宅にVPN接続して切断するとインターネットにつながらなくなる。ググってみるとここで議論されているやつと同じだと思うのだが、18.10では修正済みらしい。要するにVPNを切断した際にsystemd-resolvedを自動で再起動してくれればそれで良い。

解決策

下記の場所/内容のスクリプトを配置する。

#!/bin/sh
status=$2
case $status in
    vpn-down) systemctl restart systemd-resolved ;;
esac

実行可能に設定する。

# chmod +x /etc/NetworkManager/dispatcher.d/02-restart-resolved-when-vpn-disconnect

Ubuntu16.04をupdateできない問題(appstream)

2018/11/01にUbuntu16.04をインストール後、アップデートで失敗した際の備忘録。
*** Error in `appstreamcli’: double free or corruption (fasttop): 0x0000000000000178 ***

appstreamを削除すればとりあえずアップデートできる。

# apt remove appstream