KB3097877 でWindows7のDockアプリが起動しなくなる

Windows7/64bit にて、2015/11/11 のWindows Updateを適用したら、RocketDock が起動しなくなった。


他のDockアプリはどうかと、試しに Winstep Nexus Dock をインストールして実行してみても、起動はするものの設定変更中に強制終了した。


「Winstep Nexus」のフォーラムを見たら、「KB3097877」が原因という内容を見つけた.
Winstep Forums • View topic - Access Violation Error after today's Windows updates?


「KB3097877」で検索したところ、

などの問題もあるようだった。


「KB3097877」をアンインストールしてOSを再起動すると、RocketDock も Winstep Nexus Dock も正常に動作するようになった。


とりあえず、「KB3097877」を適用しないようにして様子見。


【追記】
この記事を書いた後にWindows Updateを確認したら、修正版がリリースされていた。

これを適用してOSを再起動したところ、上記の RocketDock が起動しなくなる不具合も解消された。

参考
https://support.microsoft.com/en-us/kb/3097877

Windows 10 Home にアップグレード、、、がいっぱい

巷で話題になっていたように、自分も「Windows 10 Home にアップグレード」にデフォルトでチェックが入っていた。

チェックを外して、更新の一覧に出てこないように非表示にして、

非表示にしている一覧を確認してみたら、、、

f:id:savakan:20151016201722p:plain


何個か溜まって(?)、「Windows 10 Home にアップグレード」が複数に。

微妙にサイズも違う。

最新のやつだけ残して、古いのは一覧から消えてくれないのか・・・

rsyslog でログを転送するとsyslogtag の一部が無くなる

【環境】
CentOS 6.7
rsyslog-5.8.10

rsyslog のログをリモートのrsyslog へ転送し、転送先でPostgreSQLへ保存したところ、syslogtag の一部が消えて保存された。

転送元のログ(テキストファイル)には、欠落せず正しく記録されている。

SQLで保存されたログを確認すると、以下のような感じ。
syslogtag の列で、数字の一部や閉じ部分( ] )が無い。

Syslog=# SELECT id,syslogtag,message FROM systemevents WHERE syslogtag LIKE '%run-parts%';
   id   |              syslogtag              |             message
--------+-------------------------------------+----------------------------------
     88 | run-parts(/etc/cron.hourly)[1975    |  starting 0anacron
     89 | run-parts(/etc/cron.hourly)[1976    |  finished 0anacron

以下によると、syslog のタグはRFCで32文字を上限としているらしく、rsyslog のテンプレートでそのような制限がかけられているとの事。

Linuxねた帳: rsyslog ログを転送するとTAGがかけてしまう

Sending messages with tags larger than 32 characters


この問題を回避するには、テンプレートを新たに定義して、転送するログに対して適用する。

まず、テンプレートを定義。/etc/rsyslog.conf へ以下を追加する。全て1行で記載。

$template LongTagForwardFormat,"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:64%%msg:::sp-if-no-1st-sp%%msg%"

転送設定の部分を、定義したテンプレートを使うように修正する。
テンプレートの定義より後に記載。

*.*    @@remote.rsyslog;LongTagForwardFormat

設定後はデーモンを再起動して反映。

# /etc/init.d/rsyslog restart


動作確認のため、テンプレートの設定前後に以下を実行。logger コマンドの引数 -t で長いタグを指定。

設定前に実行)
# echo "test before lontag" | logger -p local0.info -t 'longtag-longtag-longtag-longtag-longtag-longtag'
設定後に実行)
# echo "test after lontag"  | logger -p local0.info -t 'longtag-longtag-longtag-longtag-longtag-longtag'

データベースに登録された内容を確認。

Syslog=# SELECT id,syslogtag,message FROM systemevents WHERE syslogtag LIKE '%longtag%' ORDER BY id;
  id  |                    syslogtag                     |                            message
------+--------------------------------------------------+----------------------------------------------------------------
 1111 | longtag-longtag-longtag-longtag-                 |  test before lontag
 1112 | longtag-longtag-longtag-longtag-longtag-longtag: |  test after lontag

syslogtag が途中で切れずに登録されるようになった。
なお、rsyslog-pgsql のデータベースの定義では、syslogtag は varchar(60)になっているので、タグの文字数が60文字を超える場合は、DBの定義を変更する必要がある。

例)
Syslog=# ALTER TABLE systemevents ALTER COLUMN syslogtag TYPE varchar(100);

rsyslogのリモート転送に関するrkhunterの警告

/etc/rsyslog.conf へ、syslogをリモートサーバへ転送しようと設定を追加したところ、rkhunterで警告が検知された。

転送設定は以下のもの。

# remote test
*.*    @@remote.rsyslog.local


警告は以下のもの。

Error: Invalid display - keyword cannot be found: Display line: display --to
LOG
--type
WARNING
SYSTEM_CONFIGS_SYSLOG_REMOTE_FOUND
rsyslog
*.*    @@remote.rsyslog.local


/var/log/rkhunter.log の関係ありそうな部分は、以下の通り。

[00:00:04]   Checking for a running system logging daemon    [ Found ]
[00:00:04] Info: Found rsyslog /etc/rsyslog.conf configuration file:
[00:00:04] Info: The '*.*    @@remote.rsyslog.local' configuration file allows remote logging:
[00:00:05]   Checking for a system logging configuration file [ Found ]
[00:00:05]   Checking if syslog remote logging is allowed    [ Warning ]


/etc/rkhunter.conf の設定を以下のように変更すると、警告が出なくなる。

#
# This option permits the use of syslog remote logging.
#
ALLOW_SYSLOG_REMOTE_LOGGING=0
 ↓
ALLOW_SYSLOG_REMOTE_LOGGING=1


設定後は、以下を実行。実行しないと「/etc/rkhunter.conf」のハッシュ値が変わった旨の警告が出る。

# rkhunter --propupd

VCSA6.0から6.0update1への更新手順

vSphere 6.0 update1 がリリースされたので、vCenter のアップデートを試してみました。

リリースノート
http://pubs.vmware.com/Release_Notes/jp/vsphere/60/vsphere-vcenter-server-60u1-release-notes.html

VC-6.0.0U1-Appliance の概要
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2119924


手順は、VCSAへのパッチ適用と同じです。shobon.hatenablog.com


製品パッチのダウンロードページから、VMware-vCenter-Server-Appliance-6.0.0.10000-3018521-patch-FP.iso を入手。

パッチ適用前のパッケージリストの確認。

Command> software-packages list --history
 [2015-09-19T05:41:10.258] :
'Name'                                  'Install Date'
VC-6.0.0b-Appliance-FP                  2015-07-11 08:44:37


vCenterではなく、VCSAがあるESXiホストへ接続し、vSphwere Clientから、VCSAにISOイメージをマウント。
ISOイメージに含まれるパッチをステージング。

Command> software-packages stage --iso
 [2015-09-19T05:42:34.258] : Staging software update packages from ISO
 [2015-09-19T05:42:34.258] : ISO mounted successfully
 [2015-09-19 05:42:34,275] : Running pre-stage script.....
 [2015-09-19T05:42:35.258] : Verifying staging area
 [2015-09-19T05:42:35.258] : Validating software update payload
 [2015-09-19T05:42:35.258] : Validation successful
・・・省略
United States of America, Attention: Legal Department.Do you accept the terms and conditions?  [yes/no] yes
 [2015-09-19 05:43:12,387] : Processing software packages in update payload 143/143
 [2015-09-19T05:44:29.258] : ISO unmounted successfully
 [2015-09-19T05:44:29.258] : (135) packages staged successfully
 [2015-09-19T05:44:29.258] : Staging process completed successfully


ステージングされたパッチの確認。

Command> software-packages list --staged
 [2015-09-19T05:44:56.258] :
        category: bugfix
        kb: http://kb.vmware.com/2119924
        vendor: VMware, Inc.
        name: VC-6.0.0U1-Appliance-FP
        tags: [u'']
        productname: VMware vCenter Server Appliance
        releasedate: September 10, 2015
        version: 6.0.0.10000
        buildnumber: 3018521
        rebootrequired: True
        summary: Update for VMware vCenter Server Appliance 6.0
        severity: critical

上記URLは、Not Found になります。
正しくは、http://kb.vmware.com/kb/2119924 と思われる。


ステージングされたパッチの適用。

Command> software-packages install
 [2015-09-19 05:46:19,546] : Running test transaction ....
 [2015-09-19 05:46:26,562] : Running pre-install script.....
 [2015-09-19T05:48:07.258] : Services stopped.
 [2015-09-19 05:48:07,803] : Upgrading software packages ....
 [2015-09-19 05:54:42,514] : Running post-install script.....
 [2015-09-19T05:54:44.258] : Packages upgraded successfully, Reboot is required to complete the installation.


VCSAを再起動する。引数に再起動の理由を入れる。

Command> shutdown reboot -r '6.0update1'

Broadcast message from root (pts/0) (Tue Sep 15 05:55:08 2015):

6.0update1
The system is going down for reboot NOW!


パッチ適用後のパッケージリストの確認。

Command> software-packages list --history
 [2015-09-19T06:02:35.258] :
'Name'                                  'Install Date'
VC-6.0.0b-Appliance-FP                  2015-07-11 08:44:37
VC-6.0.0U1-Appliance-FP                 2015-09-19 05:54:42


更新直後、vSphere Web Client へアクセスするとWebサービスの初期化が終わっていない旨のメッセージが表示されました。
少し時間を空けてから再度アクセスする必要があります。

また、vSphere Web Client へアクセスすると、ログイン認証後のvmwareのロゴで止まってしまい、管理画面に遷移しませんでした。

f:id:savakan:20150923145914p:plain

ブラウザは Firefox 40 でしたが、他のブラウザ(IE/Chrome)ではアクセスできた事から、ブラウザの問題と思われます。
ブラウザの再起動やCookieを削除してもダメだったので、ブラウザのキャッシュを削除して再度ログインすると正常に管理画面が表示されました。

ユーザのcrontabを編集する時の誤ったコマンド実行を防ぐ

crontab -e を実行しようとしたら、誤って隣の r を押してしまい、
crontab -r を実行してしまった時の話。

コマンドのエイリアスを作っておくと、誤って削除する悲劇を防ぐ事ができる。


.bashrc などに、以下を記載する。

alias crontab='crontab -i'

source コマンドや再ログインなどで反映させる。

$ source .bashrc


削除しようとした時に y/n を聞いてくる。

$ crontab -r
crontab: really delete hoge's crontab? n

CentOS5/6のmailコマンドでFromを指定する時の違い

CentOS 6で作ったシェルスクリプトCentOS 5へコピーして実行したら、mail コマンドでエラーになった話。


CentOS 5でエラーになったのは、mailコマンドのFromを指定する部分。

$ mail -r FROM_ADDR TO_ADDR
mail: invalid option -- r


mailコマンドが含まれるパッケージのバージョンの違いで、オプションが異なる事が原因。


CentOS 6

$ rpm -qf /bin/mail
mailx-12.4-8.el6_6.x86_64

$ mail -r FROM_ADDR TO_ADDR


CentOS 5

$ rpm -qf /bin/mail
mailx-8.1.1-44.2.2

$ mail TO_ADDR -- -f FROM_ADDR

「--」に続けてsendmail-options を入力。