dnf-automaticを修正してみた


sitecustomize.py
自動アップデートされないなぁと思い、dnf-automaticのステータスを見てみたら動いていませんでした。対処方法が分からず、しばらく放置していたのですが意を決して調べてみました。

まずは、dnf-automaticのステータスです。
※ 一部省略してます。

# systemctl status dnf-automatic.service -l
● dnf-automatic.service - dnf automatic
Loaded: loaded (/usr/lib/systemd/system/dnf-automatic.service; static; vendor preset: disabled)
Active: failed (Result: exit-code) since 水 2015-11-26 22:54:52 JST; 20h ago
Process: 16700 ExecStart=/usr/bin/dnf-automatic /etc/dnf/automatic.conf --timer (code=exited, status=1/FAILURE)
Main PID: 16700 (code=exited, status=1/FAILURE)

dnf-automatic[16700]: return list(map(call_what, self))
dnf-automatic[16700]: File “/usr/lib/python2.7/site-packages/dnf/util.py”, line 304, in call_what
dnf-automatic[16700]: return method(*args, **kwargs)
dnf-automatic[16700]: File “/usr/lib/python2.7/site-packages/dnf/automatic/emitter.py”, line 110, in commit
dnf-automatic[16700]: print(msg)
dnf-automatic[16700]: UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 136-140: ordinal not in range(128)
systemd[1]: dnf-automatic.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start dnf automatic.
systemd[1]: Unit dnf-automatic.service entered failed state.
systemd[1]: dnf-automatic.service failed.

UnicodeEncodeErrorに注目して調べたところ分かりました。
Pythonのデフォルトエンコードはasciiなのにutf-8で処理しようとしてエラーが起きていたようです。

[Python] UnicodeEncodeErrorが発生した場合は、sitecustomize.pyでデフォルトのエンコーディングを指定する。

sitecustomize.pyを下記のように作成します。

# vi /usr/lib/python2.7/site-packages/sitecustomize.py
import sys
sys.setdefaultencoding(‘utf-8’)

これでデフォルトエンコードがutf-8になりました。
しばらく放置しているとdnf-automaticが無事に動作しました。


コメントを残す

メールアドレスが公開されることはありません。