
Ubuntu日本語フォーラム
ログインしていません。
linuxBean 14.04 (Trifolium) 14.04.1-140926を使っています。
Beanの公式フォーラムでは現在レスがつきにくい状況なのでこちらで質問させていただきました。
よろしくお願いします。
題名の通り、アップデート通知が自動で来るようにしたいのです。
動いているプログラムをタスクマネージャで見ると、update-notfierというものがあり、
アップデート通知に関係がありそうだと思うのですがよく分かりません。
他にもたくさんプログラムが動いていますが、アップデート通知に関係しているものがまだあるのかそれともないのか、私には判別がつきません。
どうすれば自動でアップデート通知が来るようになるでしょうか。
オフライン
response がつかないようですので、もしかしたら少しは参考になるかもという程度ですが、12.04 でアップデートの個数を表示するアプリケーションを作ったときのメモの内容をポストします。
私は LinuxBean も14.04 も使ったことがありません。お使いの環境でご所望のことを実現するパッケージが既にあるかどうか私には分かりません。パス名・ファイル名は 12.04 から変わっているかもしれませんし、アルゴリズム自体が役に立たないかもしれません。
12.04 でさえ、関連するファイルやソースコードをきっちり調べたわけではないので、unity desktop を使っている時の通知と同じものが得られるとは限りませんので、その点ご承知おきください。(1年近く使っていますが、私の環境ではそれらしくは動いております。)
MSGDIR=/var/lib/update-notifie
MSGFILE=updates-available
UPDTDIR=/var/lib/apt/periodic
UPDTFILE=update-success-stamp
STATEDIR=apt-config の Dir::State の値
LISTDIR=apt-config の Dir::State::lists の値
ETCDIR=apt-config の Dir::Etc の値
SRCLIST=apt-config の Dir::Etc::sourcelist の値
(STATEDIR以下は apt-config dump を実行して取得する。)
初期設定:
アップデートの個数を 0 とする。
MSGDIR/MSGFILE が読めるならアップデートの個数を読む
MSGDIR/MSGFILE の変更時刻を t1 とする。
/STATEDIR/LISTDIR の下の通常ファイルで t1 以降に変更されたものがある
または
/ETCDIR/SRCLIST が t1 以降に変更されている
ならば /usr/lib/update-notifier/apt-check を実行しその結果でアップデートの個数を更新する
メインループ:
MSGDIR/MSGFILE が更新されたなら内容を読んでアップデートの個数を更新する
UPDTDIR/UPDTFILE が更新されたなら /usr/lib/update-notifier/apt-check を実行しその結果でアップデートの個数を更新する
MSGIDR/MSGFILE の内容、/usr/lib/update-notifier/apt-check の出力の書式:
空、改行のみ、m;n改行(ここで m が update の個数、n は security update の個数で m の内数)
私は C++ と Xlib で実装しましたが、ファイルが更新されたかどうかを一定時間間隔で調べるオーバーヘッドを許容できるのならスクリプト言語でも実装できると思います。
C や C++ では inotify を使ってファイル更新の通知を受けるようなプログラムを組むことができます。この場合、たとえば MSGDIR/MSGFILE を inotify_add_watch するのではなく、MSGDIR を inotify_add_watch して通知が来たら MSGFILE が更新されているかを調べるようにします。(apt 関連のプログラムが MSGFILE を更新する方法の影響を受けにくくするためです。)
何かのご参考になれば幸いです。
オフライン
すいません、訂正です。「MSGIDR/MSGFILE の内容、/usr/lib/update-notifier/apt-check の出力の書式」は
誤: 空、改行のみ、m;n改行(ここで m が update の個数、n は security update の個数で m の内数)
正: 空、改行のみ、m;n改行(ここで m が update の個数、n は security update の個数で m の内数)、m;n
でした。行末の改行はある場合も無い場合も正しく結果を読めるようにしないといけません。
オフライン
ご返信ありがとうございます。
ちょっと自分には難しい内容で応用するのは無理でした。
その後のPCの様子ですが、通知が来たこともありました。
しかし来ないことのほうが多い感じです。
ソフトウェアとアップデートで、
アップデートの自動確認:毎日
セキュリティアップデートがあるとき:すぐに表示
その他のアップデートがあるとき:すぐに表示
としているのですが不思議です。
とりあえず気が向いたときに手動で更新して使っています。
通知が安定して来ないなら、いっそupdate-notifierを切ってしまおうかと思ったりもします。(結局切っていませんが)
オフライン