カテゴリー
everyday life

ウイルスバスターの話。

 ウイルス対策ソフトとして,ウイルスバスタークラウドを使ってきた。使い始めがいつだったかは忘れたが,マカフィーなどを使ったごく初めは除いて,ネットではずっとそれで来たので,10年以上の利用だったと思う。7月31日に契約期限が来たのだが,使用自体は5月初めにやめた。今回は契約を更新する気がなかったし,4月ごろから,更新通知が増えてうざかったからだ。

 更新を止めようと思った理由はいろいろあるが,サーバにおけるファイアーウォールとして使いにくかったのも一つだ。これは,主として私の使い方が,トレンドマイクロの仕様を逸脱しているせいで,ウイルスバスターの責任ではない。いろいろと悪評もあるにはあるウイルスバスターだが,ほとんど何も設定しなくても使えるし,それなりにいいソフトではないかと思う。

 9月になるとすぐに右図のような「更新のご案内」を受け取った。まぁ,商売熱心だ。企業なんだから,商売熱心なのは結構なことだが,私が,5月に出した「メールでのお問合せ」の返事はついに来ずじまいだった。「今回のライセンス期限後,契約を更新しないので,こちらの登録を取り消させていただきたいのですが,退会の方法の記載がないようです。どのようにすれば,よろしいでしょうか。」という,簡単明瞭なものだったのだが,「契約更新しない奴なんか知らないよ」ということだろうか。日本の企業もそういう時代なんだね。

 母体は米企業だから,体質は本体と同じなのかもしれないが,日本生まれ日本育ちの人間としては,「どうして,取引をおやめになるのでしょうか。何か,落ち度がありましたでしょうか。」などという返信が来て,こちらが「そちらの落ち度ではありません」とか答えると,「これまでありがとうございました。また,機会がありましたらよろしくお願いいたします。」なんていうやりとりがあるのが普通だと思っていたのだが,自分が時代において行かれているなと感じた一幕であった。

カテゴリー
WordPress

本家のお世話-#49。(WordPress3.4.2へアップデート)

 いつもに比べてアナウンスが遅いなあと思っていたWordPress 3.4.2の日本語版が,本日リリースされた。メンテナンスとセキュリティの関係ということ早速アップデート。

 本家はマルチサイトなので,アップデートすると上部に,
 「更新していただきありがとうございます ! ネットワークの更新ページへ移動して、すべてのサイトをアップグレードしてください。」
が表示される。リンクをクリックして,
  Update Network
に行き,
 「You can update all the sites on your network through this page. It works by calling the update script of each site automatically. Hit the link below to update.」
の左下にあるボタンをポチッと。

 ついでに,XREAと@pagesも3.4.2にした。XREAは自動でできたが,@pagesは無理。これはやはりアップロードファイルのサイズ制限のせいだと思う。

 更新後の動作については,3つとも,特に問題無し。

カテゴリー
Vulnerability

Javaにも困ったもんだ。

投稿アップデート情報  追記(8/31)  追記2(9/5)  追記3(2013/6/2)

 えっと,ご存知の方はご存じだと思うが,いつも読ませていただいている「セキュリティホール memo」さんとこで,「Zero-Day Season is Not Over Yet」というのが紹介されたのが,26日。「またかよ」とか思っていたら,結構大変になってきているようで,昨日追記が載っていて,一般ユーザもちょっと対処しておいたほうがよさそうなお話。

 「猛威を振る Java ゼロデイ攻撃コード」(つまんないことだが,「振う」ではないのと突っ込んだりして ― 爆)とか,「Oracle Java 7の脆弱性を狙った攻撃について」を読んでいただけば,内容はわかると思うが,「Blackhole:パッチのスピードよりも高速」というのを読むと,こういう商売というのも盛んなんだなあと,素人は変に感心したりするのであった。

 で,我々一般ユーザとしてはどうしたらよいかということですが,「【ゼロデイ攻撃】JREの未修整の脆弱性を悪用した攻撃発生」を参考にお手当ください。蛇足として書いておくと,JavaとJavaScriptは全く別物です。

追記(8/31):
 JREの1.7.0_07が出ました。Update Release Notesによれば,上記のゼロデイ(CVE-2012-4681)に対応したようです。早速,アップデートしました。
 プラグインは無効のままです。自分がよく訪ねるサイトで,今のところ特に有効にする必要も感じないので。

追記2(9/5):
 追記に書いたように,Java 7 Update 7が出たんだが,「先週公開の「Java 7」パッチは不完全、脆弱性が残る--研究者が指摘」なんだってさ。
 いたちごっこもいいところだ。Javaに関して頻度が高いのは認めるが,一ユーザとしては,セキュリティアップデートとリアルタイムプロテクトに努めるしかないのだろうか。ネットなしの生活なんて考えられないしなあ。しかし,「Microsoft Updateと最悪のシナリオ」なんていうのが,一般ユーザについて現実化したらいったいどうなるんだろ。

追記3(2013/6/2):
 「computerworld.jp終了です」ということらしくて,「先週公開の「Java 7」パッチは不完全、脆弱性が残る--研究者が指摘」のリンク先がなくなってしまったので,参考のために保存してあった PDF に差し替えた。

カテゴリー
everyday life

Excelのマクロ。

投稿アップデート情報  追記(9/2)

 ここ2・3日,頼まれてExcelのファイルを弄っている。リタイアしてから,Excel自体にご無沙汰していた。よって,マクロなんて以ての外なんだが,どうしてもワークシート上のボタンや機能だけでは埒が明かないことが出来して,VBAに取り組む羽目になった。が,ドロ沼である。

 高級プログラム言語なんて,基本的な考え方はどれも同じだが ― ハハハ,大きく出たな(苦笑)。でも実際,高級言語をひとつ覚えると,他のものも取りつきやすくなるのは,ここからきている。 ― 細かい文法や命令語は種々雑多なので,問題が確実にモデル化できている場合,実プログラミングでは,ここが熟練者と初心者の分かれ目になる。そして,実務としては,この違いのせいでみんな苦労しているのだ。

 もともと,VBAについて熟練者とは言えない上に,今度とりかかってみたら,忘れ方がはなはだしい。絶対に大丈夫だからと引き受けたが,大丈夫じゃなさそうだ。どうしよう。まぁ,その辺は商売ではない気楽さだが,私のプライドという問題もある(汗)。しかし,スタック状態が激しくて,考えたくなくなってきた(泣)。

 というわけで,気分転換に,ここで泣き言を書いてるんだよねー(爆)。

追記(9/2):
 やっと埒があいた。しかし,ExcelのVBAって,バージョンでどのくらい違うのだろう。あまり,特殊な命令は使っていないが,手元には,Office 2007しかないので,少し不安。一応,2000でも動くように作ったつもりだが……

カテゴリー
Linux

CentOS6の練習-#10(Apacheのrpmを作る)。

 httpd-2.4.3.tar.bz2をダウンロードして,展開して中を見てみたら,httpd.specがあった。しかも,Using Apache With RPM Based Systems (Redhat / CentOS / Fedora)というページもある。となれば,やはりrpmを作ってみるのが,CentOSを使い,ディストリのパッケージを使わないものの態度としては,正しい行ないだろう。ということで,Apache2.4.3のrpm作りに挑戦!! (爆)

 長いです。いざ,覚悟!!!

 それに取り掛かる前に,「鍵を信用する作業」や「鍵の信用を取り消す作業」の練習も含めて,この間やったシグネチャの確認をApacheでやってみる。

  1. ソースをダウンロードする。
       $ wget http://ftp.tsukuba.wide.ad.jp/software/apache/httpd/httpd-2.4.3.tar.bz2
    シグネチャをダウンロードする。
       $ wget http://www.apache.org/dist/httpd/httpd-2.4.3.tar.bz2.asc
  2. 以下のコマンドで,シグネチャの確認。正しい署名と確認された。
       $ gpg –verify httpd-2.4.3.tar.bz2.asc
  3. 現在よからぬ話は聞いていないので,一応,www.apache.orgの鍵を信用する作業をやってみる。
       $ gpg –edit-key RSA鍵ID
         ————————————————————————————————————————
         コマンド> trust  <<— trustを入力
         あなたの決定は? 5  <<— 一応5にしておく
         本当にこの鍵を絶対的に信用しますか? (y/N) y  <<— 一応yにしておく
         コマンド> q  <<— qを打って,gpg –edit-keyを抜ける。
         ————————————————————————————————————————
  4. もう一度,シグネチャの確認をしてみる。先ほどのメッセージの最後の3行は表示されなくなった。
       $ gpg –verify httpd-2.4.3.tar.bz2.asc
  5. 公開鍵の信用を取り消してみる。
       $ gpg –delete-key RSA鍵ID
    更にも一度,シグネチャの確認をしてみると,メッセージは元に戻っている。

    まっ,こんなとこだね。これで,備忘録の役目は果たせるから,今後,この件は書かない。

 さて,rpmを作るにはrpm-buildがいるので,何はともあれ,これをインストールする。
   $ sudo yum install rpm-build

 では,Apacheのrpmのビルドに入る。

  1.    $ rpmbuild -tb httpd-2.4.3.tar.bz2
    をやったら,早速以下のメッセージが出た。「-devel」パッケージについては,ビルドのときだけしかいらないから,あとはアンインストールしていいと,上記のApache.orgのページに書いてあるのだが,結構な数に上るなあ。サーバ機と開発機は分けておくべきなんだろうか。今のところは,練習なので問題ないがその辺,セキュリティ面ではどうなのだろう。

    エラー: ビルド依存性の失敗:
         autoconf は httpd-2.4.3-1.i386 に必要とされています
         zlib-devel は httpd-2.4.3-1.i386 に必要とされています
         libselinux-devel は httpd-2.4.3-1.i386 に必要とされています
         apr-devel >= 1.4.0 は httpd-2.4.3-1.i386 に必要とされています
         apr-util-devel >= 1.4.0 は httpd-2.4.3-1.i386 に必要とされています
         pcre-devel >= 5.0 は httpd-2.4.3-1.i386 に必要とされています
         openldap-devel は httpd-2.4.3-1.i386 に必要とされています
         lua-devel は httpd-2.4.3-1.i386 に必要とされています
         libxml2-devel は httpd-2.4.3-1.i386 に必要とされています
         distcache-devel は httpd-2.4.3-1.i386 に必要とされています
         openssl-devel は httpd-2.4.3-1.i386 に必要とされています

    地道に,インストール。
       $ sudo yum install autoconf
       $ sudo yum install zlib-devel
       $ sudo yum install libselinux-devel
    ここで,問題発生。
       $ sudo yum install apr-devel
    ディストリのパッケージが1.3.9-5になっている。BuildRequiresでは,上記の通り1.4.0以上だからまずい。

  2. Apacheから,tarballを落としてくる。シグネチャもちゃんと確認すること。
       $ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/apr/apr-1.4.6.tar.gz
  3. 落としてきたのはgz方式だが,rpmbuildではアーカイブとして扱ってくれないようなので,一度展開し,
       $ tar zxvf apr-1.4.6.tar.gz
    bzip2形式に圧縮し直す。
       $ tar cf – apr-1.4.6/ | bzip2 -c > apr-1.4.6.tar.bz2
  4.    $ rpmbuild -tb apr-1.4.6.tar.bz2

    エラー: ビルド依存性の失敗:
         libtool は apr-1.4.6-1.i386 に必要とされています
         doxygen は apr-1.4.6-1.i386 に必要とされています

    なんだってさ。「どこまで続く泥濘ぞ」ダネ。
       $ sudo yum install libtool
       $ sudo yum install doxygen

  5. 改めて,
       $ rpmbuild -tb apr-1.4.6.tar.bz2
    今度は通った。表示されたメッセージにより調べてみると,/home/centos/rpmbuild/RPMS/i386/に
         apr-1.4.6-1.i386.rpm apr-devel-1.4.6-1.i386.rpm
    ができている。cd コマンドでrpmのできたところに移動。
       $ cd /home/centos/rpmbuild/RPMS/i386/
    これをインストールする。
       $ sudo rpm -Uvh apr-1.4.6-1.i386.rpm apr-devel-1.4.6-1.i386.rpm
    終了後, cd でホームディレクトリに戻っておく。

    apr-develのインストにaprが必要だから,両方ともインストールしないとだめ。それにしても,Minimalインストールで,何も入っていないせいだろうけど,開発環境を整えるのが大変だ。devel用のコレクションか何かを入れたほうが早いかもしれないが,いらないものは入れないスタンスだから,ちょっと我慢してやらないとね。

  6. 同様に,
       $ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.4.1.tar.gz
       $ tar zxvf apr-util-1.4.1.tar.gz
       $ tar cf – apr-util-1.4.1/ | bzip2 -c > apr-util-1.4.1.tar.bz2
  7.    $ rpmbuild -tb apr-util-1.4.1.tar.bz2

    エラー: ビルド依存性の失敗:
         expat-devel は apr-util-1.4.1-1.i386 に必要とされています
         libuuid-devel は apr-util-1.4.1-1.i386 に必要とされています
         db4-devel は apr-util-1.4.1-1.i386 に必要とされています
         postgresql-devel は apr-util-1.4.1-1.i386 に必要とされています
         mysql-devel は apr-util-1.4.1-1.i386 に必要とされています
         sqlite-devel >= 3.0.0 は apr-util-1.4.1-1.i386 に必要とされています
         freetds-devel は apr-util-1.4.1-1.i386 に必要とされています
         unixODBC-devel は apr-util-1.4.1-1.i386 に必要とされています
         openldap-devel は apr-util-1.4.1-1.i386 に必要とされています
         openssl-devel は apr-util-1.4.1-1.i386 に必要とされています
         nss-devel は apr-util-1.4.1-1.i386 に必要とされています

    これまたすごい数だ。真面目な話,postgresql-develやsqlite-develなんかは,全然使わないと思うんだが,この辺も分かってきたら,SPECを弄れるようになりたいな。

  8. また,地道にインストール。
       $ sudo yum install expat-devel
       $ sudo yum install libuuid-devel
       $ sudo yum install db4-devel
       $ sudo yum install postgresql-devel
       $ sudo yum install mysql-devel  依存関係で,openssl-develもここで,インストールされる。
       $ sudo yum install sqlite-devel
       $ sudo yum install freetds-devel
       $ sudo yum install unixODBC-devel
       $ sudo yum install openldap-devel
       $ sudo yum install nss-devel
  9. 改めて,
       $ rpmbuild -tb apr-util-1.4.1.tar.bz2
  10. cd コマンドで,
    /home/centos/rpmbuild/RPMS/i386/ に移動して,
       $ sudo rpm -Uvh apr-util*
    終了後, cd でホームディレクトリに戻っておく。
  11. Apacheの依存パッケージの続きのインストール。
       $ sudo yum install pcre-devel
       $ sudo yum install lua-devel
       $ sudo yum install libxml2-devel
    openssl-develはさっき入れたから,あとはdistcacheだけ。

  12. ところが,これがCentOS6.3のパッケージになかった。tarballを見に行ったが,展開してみても,SPECが入っていなくて手におえない。結局,Fedora17のsrc.rpmを拾ってきた。URLの枝番は18になってるね。なんでだろう。
       $ wget ftp://ftp.riken.jp/Linux/fedora/development/18/source/SRPMS/d/distcache-1.4.5-23.src.rpm
    これをリビルド。
       $ rpmbuild –rebuild distcache-1.4.5-23.src.rpm
       $ cd /home/centos/rpmbuild/RPMS/i386/
       $ sudo rpm -Uvh distcache*
    ホーム・ディレクトリに戻る。
  13.    $ rpmbuild -tb httpd-2.4.3.tar.bz2
    やっと,Apache2.4.3のrpmができたのでインストール。
       $ cd /home/centos/rpmbuild/RPMS/i386/
       $ sudo rpm -U httpd-2.4.3-1.i386.rpm

    やれやれと思ったら,
         /etc/mime.types は httpd-2.4.3-1.i386 に必要とされています
    が出たので,
       $ sudo yum provides /etc/mime.types
    と調べてみると,どうやらmailcapというパッケージを入れればいいらしい。
       $ sudo yum install mailcap
    改めて,
       $ sudo rpm -U httpd-2.4.3-1.i386.rpm

 httpd-2.4.3-1のインストール完了。一応,「It works!」表示までいかないと終わられません(爆)。

  1. Apacheのテストのために,80番ポートを開ける。
       $ sudo /sbin/iptables -I INPUT 5 -p tcp –dport http -j ACCEPT #HTTP
       $ sudo /sbin/iptables -L –line-number   変更の確認
       $ sudo /sbin/service iptables save
  2. BINDを入れていないので,名前解決のために,/etc/hostsにローカルのサーバ名と,IPアドレスを追加。
  3.    $ sudo vi /etc/httpd/conf/httpd.conf
    のServerNameをローカルなものに書き換え。
       $ sudo service httpd restart
    実は,ここで少しはまった。restartをrootでやらないとSocketエラーが出る。
  4. 自鯖Lan内のWin端末のブラウザから,ローカルのサーバ名で,アクセス。
    「It works!」が無事表示された。

 本日は,ここまで。

カテゴリー
Windows

本家のお世話-#48。(Apache 2.4.3,PHP5.4.6へアップデート)

投稿アップデート情報  追記(8/28)  追記2(8/28)  追記3(2013/2/14)

 Lounge版のApache 2.4.3とWin用のPHP5.4.6が出たので,アップデート。ついでに,MySQLも5.5.27にした。conf,iniの設定は,「本家のお世話-#28。」と同じ。MySQLの導入については,「本家のお世話-#16。」を参照。

 Lounge版のApache 2.4.3は,いつも通りVC9版を落とす。httpd-2.4.3-win32-VC9.zip(19 Aug),php handlerも5.4.6用が出ているので,新たにphp5apache2_4.dll-php-5.4-win32.zipを落として,中の5.4.6用をPHPのフォルダ内にコピーする。httpd.confについては,以下の2点が変わっていた。
————————————————————————————————————————————————
 ひとつは,
     #Scriptsock logs/cgisock  —>>  #Scriptsock cgisock
うちの場合は,もともとコメントアウトのままのところだから,関係なし。

 もうひとつは,最後尾に以下の8行が追加されたこと。
     # Deal with user agents that deliberately violate open standards
     #
     <IfModule setenvif_module>
     BrowserMatch “MSIE 10.0;” bad_DNT
     </IfModule>
     <IfModule headers_module>
     RequestHeader unset DNT env=bad_DNT
     </IfModule>
 これは,MSIE 10.0のようにDNT(Do Not Track)がデフォルトでセットされている場合,それをアンセットするということなのか?「オープンスタンダードに故意に違反するユーザエージェントに対処するため]と書いてあるんだが。うーん,よくわからん。よくわからんというのが,その「どっちがオープンスタンダードなのよ」という意味なんだが。その辺は,筆者の立場によって違うとかか?
 出たばかりのせいか,あまり情報もない。その辺に関して何か見たら,追記でも書くことにしよう。
————————————————————————————————————————————————

 PHPのおニューもいつも通り,VC9のTS版を落としてくる。PHP5.4.6(Aug-15 22:48:37UTC)

 php.ini-productionで変わっていたのは,
     ;mail.log =
のところに以下の2行が追加されたこと。うちの場合,これも使っていないところなので,無関係。
     ; Log mail to syslog (Event Log on NT, not valid in Windows 95).
     ;mail.log = syslog

追記(8/28):
 DNT(Do Not Track)がらみの追記。ということで,MSのIE10以外の立場が,オープンスタンダードという扱いらしいが,天下のMSでも束になった広告業界にはかなわなかったんダネと言っていいのかナ。
 ところで,ユーザが明示的にDNTをOnにしたIE10の扱いはどうなるのだろう。そのあたりがまだいまひとつつかめていない。

追記2(8/28):
 「Roy T. Fielding DNT:1」で検索してみると,「Re: action-231, issue-153 requirements on other software that sets DNT headers」がトップに出てきた。ということは,ユーザが明示的にDNTをOn(=DNT:1)の場合は別問題で対処されるということか。HTTPの含んでいる情報についてよく理解していないから,理解の外だな。orz

追記3(2013/2/14):
 php5apache2_4.dll でググって来られる方がおられるようなので,追記。 PHP5.4.10 から php5apache2_4.dll も PHP のオフィシャルバイナリに同梱されるようになりました。

カテゴリー
Linux

CentOS6の練習-#9(ビルド環境を整える)。

 明日は,旧7月1日らしい。朝夕はすっかり秋めいてきたが,昼は相変わらず暑い。それでも,盆休みが終わって,昨日1週間ぶりで道々の田んぼを見たら,稲穂が出そろっていた。今日はツクツクボウシの鳴くのも聞いた。そして今は,これから夕立が来るのか,PCに触っているのが気持ち悪いほど,雷鳴がしている。

 夕べはギータの劇的なサヨナラホームランで勝った。球宴後,さあダッシュと思ったら,がっくりくる試合が続いて落ち込んでいたのだが,8月に入ってから,まあまあだ。何とか,5割復帰したし。上も抜け出せないでいるから,ここが踏ん張りどころだよー。鷹のみなさま,頑張ってちょうだい。

 ところで本題の方だが,いつも,buildとmakeはどう違うんだろうと思っていた。今回ちょっと気を入れてあちこち読み漁ってみたら,用語の発生した時期が違うだけで意味はあまり違わないらしいネ。少し,違う意味で使っているページもあるようだが,作業的にはだいたい同じことをやっているようだ。

 CentOS6の練習-#6で書いたように,すべてパッケージで済ませるかどうか悩んでいるが,それにしてもこの際buildの勉強は身を入れてやっておくべきだろう。今まで,実践でビルドにかかわったことはあっても,何やっているかなんて,あまりまじめに考えたことがない。コンパイルはやってるんだろうとか思ってたけど,リンクなんかの作業も入るんだねー。知らなかった。

 まっ,ありがちな「Hello, World!」の表示プログラムのbuildでもやってみるかな。今回の参照ページは,仕事で使える魔法のLAMPだけ。

  1. まずは,GCC(GNU Compiler Collection)のインストール。こういうところはパッケージを利用する(爆)。
       $ sudo yum install gcc gcc-c++
  2.    $ vi hello.c
    で,/home/centosに,以下の内容で,hello.cを作成する。
         #include <stdio.h>
         main()
         {
          printf(“Hello, World!n”);
         }
  3.    $ gcc hello.c -o hello
    で,コンパイルしてみる。-oオプションで実行ファイル名をhelloに指定。一瞬で終わるよ。
  4.    $ ./hello
    と実行してみると,
         Hello, World!
    と,表示された。

 ふーん,シェアードライブラリ(=.so⇒シェアードオブジェクト)っていうのは,Winのダイナミックリンクライブラリ(.dll)と同じなんだ。以下のコマンドで,いつもお世話になっているbashがリンクしている.soを調べてみた。
   $ ldd /bin/bash
     linux-gate.so.1 => (0x003da000)
     libtinfo.so.5 => /lib/libtinfo.so.5 (0x00e49000)  <<—  helloと違う.so
     libdl.so.2 => /lib/libdl.so.2 (0x004dc000)  <<—  helloと違う.so
     libc.so.6 => /lib/libc.so.6 (0x00110000)
     /lib/ld-linux.so.2 (0x00b31000)

 ついでに, $ ldd hello をやって比べてみた。
     linux-gate.so.1 => (0x00d44000)
     libc.so.6 => /lib/libc.so.6 (0x00110000)
     /lib/ld-linux.so.2 (0x00634000)
となるので,この3つは簡単なプログラムでも,C言語で書かれたプログラムが動くためには,絶対にいるようだネ。

 次に,hello.cを2つの分けて,一つずつコンパイルした後,リンカを使って一つのファイルに仕上げる作業をやってみる。

  1. $ vi main.c  で,以下の内容のmain.cを作成する。
         main()
         {
          hello();
         }
  2. $ vi hello.c で,以下の内容のhello.cを作成する。この際,ひらがなの表示を試してみることにした。
         #include <stdio.h>
         hello()
         {
          printf(“こんにちは,みなさん!n”);
         }
  3. まず,main.cだけコンパイル。  $ gcc -c main.c
    lsで調べると分かるけど,この段階で  main.o  ができている。
  4. 次に,hello.cをコンパイル。  $ gcc -c hello.c
    これも調べると  hello.o  ができている。
    -cオプションのときは,「name」.c ⇒ 「name」.oというように.oのファイル名を決めるようだ。
  5. リンク作業。素のリンカldは使わずに,gccから呼び出す形で使う方が普通だそうだ。
       $ gcc main.o hello.o -o hello
    調べてみると,実行ファイルhelloができているので,
       $ ./hello
    と実行してみると,
         こんにちは,みなさん!
    と,表示された。ちゃんと,ひらがなも表示される。日本語フォントを特別に手動で入れる必要はないようだ。

 この時点で,/home/centosには
   hello hello.c hello.o main.c main.o
があるが,あとの都合上生成された hello,hello.o,main.o を削除する。
   $ rm hello main.o hello.o

 さて,makeをインストールしますか。
   $ sudo yum install make

 Makefile作成。  $ vi Makefile  で,内容は次の1行。
     hello: main.o hello.o
     ターゲット: 依存ファイル1 依存ファイル2 ……
となるらしいが,今回は,main.o と hello.o から hello を作るだけなので,この1行でO.K.
 makeを走らせてみる。
   $ make
   cc -c -o hello.o hello.c
   cc -c -o main.o main.c
   cc hello.o main.o -o hello
とメッセージが出て,終了すると,/home/centosに hello,hello.o,main.o ができている。

   $ touch hello.c
をやったのち,makeをやると,
   cc -c -o hello.o hello.c
   cc hello.o main.o -o hello
さっきよりメッセージが1行少ない。touchでタイムスタンプの変わったhello.cだけがコンパイルし直されて,新しいhelloが作られることが分かる。

 本日の最後の練習は,GNU Helloを使った実行ファイルの作成。

  1. まず,ダウンロードのために wget をインストール。もっとも,自鯖の場合,この間のClamAVがらみでwgetは導入済み(汗)。
       $ sudo yum install wget
  2. 最新のGNU Helloをゲット。
       $ wget http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz
  3. 同じバージョンのシグネチャファイルもダウンロード。
       $ wget http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz.sig
  4. GnuPG(調べてみたら,gnupg2-2.0.14-4.el6.i686が,すでにインストール済みだった。)を使って,ファイルの正当性を確認する。
       $ gpg –list-keys    <<—  初回起動で,/home/centos/.gnupg が作成される。
       $ vi ~/.gnupg/gpg.conf
    で,中ごろにある keyserver-options auto-key-retrieve 行をアンコメントする。
  5. 以下のコマンドで,シグネチャの確認。
       $ gpg –verify hello-2.8.tar.gz.sig
     これ,何もしないでやったら日本語のメッセージが戻ってきたが,変な日本語。もちっとどうにかならんの。
         ————————————————————————————————————————
         gpg: 2012年04月21日 02時55分39秒 JSTにDSA鍵ID 80EE4A00で施された署名
         gpg: 鍵80EE4A00をhkpからサーバーkeys.gnupg.netに要求
         gpg: 鍵80EE4A00: 公開鍵“Reuben Thomas <rrt@sc3d.org>”を読み込みました
         gpg: 絶対的に信用する鍵が見つかりません
         gpg: 処理数の合計: 1
         gpg: 読込み: 1
         gpg: “Reuben Thomas <rrt@sc3d.org>”からの正しい署名  <<— こういう行があれば,O.K.というか,うーむ。
         gpg: 警告: この鍵は信用できる署名で証明されていません!
         gpg: この署名が所有者のものかどうかの検証手段がありません。
         主鍵の指紋: 9297 8852 A62F A5E2 85B2 A174 6808 9F73 80EE 4A00
         ————————————————————————————————————————
  6. パッケージを展開し,展開されてできたディレクトリに移動する。その後,ls -pで直下のファイルとディレクトリを確認する。
       $ tar zxvf hello-2.8.tar.gz
       $ cd hello-2.8
       $ ls -p
         ————————————————————————————————————————
         ABOUT-NLS GNUmakefile README build-aux/ doc/ po/
         AUTHORS INSTALL README-release config.in lib/ src/
         COPYING Makefile.am THANKS configure m4/ tests/
         ChangeLog Makefile.in TODO configure.ac maint.mk
         ChangeLog.O NEWS aclocal.m4 contrib/ man/
         ————————————————————————————————————————
    /の付いてるやつはディレクトリね。READMEとかTODOとかINSTALLあたりは読むけど,あとはドキュメント関係でもあんまり読んだことがない(汗)。あっ,たまにChangeLogも読む。
  7.    $ less INSTALL
     「Briefly, the shell commands `./configure; make; make install’ should configure, build, and install this package.」ということなので,素直に,
       $ ./configure –prefix=/opt/hello-2.8    <<—  インストール先を/opt/hello-2.8にしてやってみた。
     無事通ったので,もう1回, $ ls -p をやってみると,いろいろ変化があるが,大きなところで Makefile ができたのが分かる。とすると,ちゃんとmakeできるはずなので,
       $ make

       $ ./configure | grep ‘checking’ | wc -l
    で何をチェックしているのか項目数を調べてみた。参照ページでは,202と書いてあるが,うちのでは250あった。どんどん増えていくんだろうなあ。

     makeが終わったので,インストールしてみた。
       $ sudo make install

       $ ls -p /opt/hello-2.8  で確認してみると,確かに bin/ share/ ができている。
       $ ls -p /opt/hello-2.8/bin で見ると,中に実行ファイル hello があった。
       $ /opt/hello-2.8/bin/hello  と実行してみた。
         世界よ、こんにちは!
    と表示された。完了!!!

 本日は,ここまで。

カテゴリー
everyday life

o6asanの掲示板。

投稿アップデート情報  追記(8/25)  追記2(8/26)  追記3(11/29)  追記4(2014/2/24)

 この間,「&の&amp;への変換。」のときに作った「o6asanの掲示板」を整理した。結局,UTF-8版だけを残して,これを自鯖ダウン時の連絡用という位置づけにしようと思う。あとのShift-JIS版とEUC-JP版は削除してしまったが,捨ててしまうのも惜しいので,3本ともzipにしてダウンロードできるようにした(爆)。もし,3つを比べてみようという奇特な方がおられたら,ここからどうぞ。UTF-8版。SHIFT-JIS版。EUC-JP版。

 改造版を公開した形になるので,お礼かたがたKENTさんにも,お問い合わせフォームから連絡をしておいた。

 で,新装開店した「o6asanの掲示板」には,こないだうちから,juneさんところでりりさんが話題にしていた,SSIによる最終更新日取得機能も入れてみた。もっとも,.shtmlファイルを単独で動かす必要から,あまり好きではないフレーム仕様になってしまった。久しぶりにフレームのタグ書いたなあ。なんと,いまだに手書き(手書きって意味わかるよね。テキストエディタで書くってことダヨ。流石に,紙に鉛筆というわけではないよ(大笑い)。)なのよ。UTF-8でエンコードする必要から,Winのメモ帳は使わんかったけど。BOMがくっついていると,ブラウザによっては1行余計な空白ができるんだよー。

 TODOSに書き込みしたら,すぐにりりさんが「新・o6asanの掲示板」にレスつけてくれたんだが,早速,エラー。なんでかっていうと,私のつけたタイトルが「自鯖ダウン時連絡用」でね,これに,レス付けると自動で「Re: 自鯖ダウン時連絡用」になるんだよね。もともとのJoyfulには,タイトルは全角で15文字までっていう制限があったのだ。これに引っかかっちゃった。えっ,15文字ないって,そうなんだよね。初め,なんでよって思ったんだが,考えたら,UTF-8だと,全角日本文字は3バイト使うんだよ。完全に忘れてた。

 実際,Joyfulのタイトル文字数制限のところを見たら,30バイトまでというカウントになっていた。で,使用モジュールにEncodeを追加してやって,lengthのカウントのとこにdecodeも追加してやって解決。使っているうちには,まだいろいろ出てくるだろうなあ。

追記(8/25):
 SSIの利用部分を結局<iframe>で書き直した。キャッシュによるリロード手間への対策というかなんというか。

図2=個別画面図1=一覧画面追記2(8/26):
 りりさんが,「o6asanの掲示板」の方に知らせてくださったが,うかつに書き込んだ,<iframe>の<と>をエンティティするのを忘れていたので,追記の文章から下が見えなくなっていた(図1=一覧画面,図2=個別画面 参照)。ウッ,ひどいもんだ。今,直しました。

追記3(11/29): KENTさんのところに合わせて,Joyful Note v3.71の改造版をアップした。

追記4(2014.2.24):
 ドメインを移管したので, XREA においてあったものは,なくなった。

カテゴリー
Linux

CentOS6の練習-#8(ClamAVの話,続き)。

投稿アップデート情報  追記(9/8)  追記2(10/1)

 前項で

そういえば,指定のリポジトリを書き直した方がいいということをよくネット上で見るが,Minimalインストールでも,CentOS6.3には初めからyum-plugin-fastestmirrorとyum-prestoが入ってる。これがあれば,ミラーリストをざっとなめてからやってくれてるみたいだが,それでも指定のリポジトリを書き直したがいいんだろうか。

と書いたのだが,ClamAVをwgetでインストールしたときに分かったことがある。
 常識なんだろうが,yumでインストールすると,依存関係をyumの方でちゃんとやってくれる。なので,
   $ sudo yum install clamd
とやると,clamav,clamd,clamav-dbが,すべてインストールされるが,wgetでダウンロードして,rpmでインストールするとそうはいかないから,順番とかライブラリに気を付けなければいけないことになる。どのサイトにも「yumは依存関係の処理もやってくれる」と書いているし,clamav直前のlm_sensorsのインストールでは,自分でも依存関係でいろいろ入ることに驚いているのに,これらのことをしっかり認識していなかったりするのだ(汗)。ただし,rpmを手動でインストールしても,yumは関知してるようで,
   $ sudo yum list installed|grep clam*
   clamav.i686 0.97.5-2.el6.rf installed
   clamav-db.i686 0.97.5-2.el6.rf installed
   clamd.i686 0.97.5-2.el6.rf installed
とちゃんとリストに表示される。

 ということになると,やはりclamavを含むリポジトリの導入をやっておいた方がいいわけで,ここ(魚拓です)を参考にそれをちょっとやってみた。大概のところは,clamavの導入時にリポジトリを追加し,あとでこれを外すみたいに書いてあって,「めんどくさいな。それならwgetでその都度やっても,同じジャン」とか思っていたのだが,参考ページではyum-prioritiesプラグインをインストールすることになっている。これ,いいな。
   $ sudo yum install yum-plugin-priorities
 CentOs6のCentOS-Base.repoを弄る。[priority=1]を追加してやって,リポジトリに優先順位をつけるわけだ。
   $ sudo vi /etc/yum.repos.d/CentOS-Base.repo

   [base]
   name=CentOS-$releasever – Base
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
   #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加

   #released updates
   [updates]
   name=CentOS-$releasever – Updates
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
   #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加

   #additional packages that may be useful
   [extras]
   name=CentOS-$releasever – Extras
   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
   #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
   gpgcheck=1
   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
   priority=1 <<— 追加
上書き保存して,終了。

 さて,rpmforgeリポジトリをインストールし,ついでにアップデートしておく。どうして,rpmforgeリポジトリにしたかっていうと,ClamAVオフィシャルのLinux(魚拓です)「RedHat and Fedora」のところに,「Dag Wieersによって大変よくメンテされてるリポジトリがあるのでそれを使うといい」と書いてある。これが http://packages.sw.be/clamav/ で,前項ではここからwgetで入れたわけ。今回は,も一度FAQを読みに行って,How do I use Yum ?のところを読み,rpmforge-release packageを見に行って,「RHEL6 and CentOS-6 x86 32bit」の下記を選択した。でもこれ,結局のところ理研のミラーから落ちてくるようだ。
   $ sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
   $ sudo yum update rpmforge-release

 「11 packages excluded due to repository priority protections」と出た。yum-prioritiesを入れた効用だ。お利口さん。さて改めて,
   sudo yum install clam*    で,うっかりインストールしてしまったので,改めて   sudo yum install clamd
でやり直した。clamav,clamd,clamav-dbについては,最新版がインストールされていると出たが,依存関係がうまく解決されていなかったようだ。サービスを止めて,インストールし直してみた。

 その後,
   $ sudo vi /etc/clamd.conf
で,189行目を下記のようにコメントアウトする。
   #User clamav
clamdを再スタート。
   $ sudo /etc/rc.d/init.d/clamd restart
 –9/8(土),消し線追加。どうしてもうまくclamdscanを走らせられないので,clamscanで行くことにした。この場合,Userはclamavのままで,不都合はなかった。clamdscanの不具合は,SELinuxをpermissiveにし,Userをrootにしても直らなかった。今のところ,何が足を引っ張っているのか,不明。当面は,clamscanでいいことにしよう。–

   $ chkconfig –list
をチェックしてみると,この段階で,

clamd  0:off  1:off  2:on  3:on  4:on  5:on  6:off

となっており,clamav-milterとclamdが自動起動O.K.になっているようだ。sudo yum install clamdだと,有効になっているサービスは,clamdだけだった。

   $ sudo freshclam
 $ sudo /etc/rc.d/init.d/clamd restartも,freshclamやるまえから一度でうまくいった。やっぱ,前回は何かまずかったのかな。
 sudo yum install clamd でやると,やはり,freshclamを先にやらないと,clamd restartがうまくいかない。

追記2(10/1):
 上に,
> clamdscanの不具合は,SELinuxをpermissiveにし,Userをrootにしても直らなかった。
と書いたのだが,これについては,CentOS6.3 Minimalを改めて新規インストールして試したら,permissive+rootでは走らせることができた。いろいろ弄っていたのでどこかがまずくなっていたのかもしれない。

カテゴリー
Linux

CentOS6の練習-#7(lm_sensorsとClamAVの話)。

投稿アップデート情報  追記(8/12)

 今日は,夕立あり。3時過ぎには,降り出した。まぁ,一時の雨足は強かったが,本当に夕立で,すぐにやんだ。昨日は立秋。暑い暑いと言っていても,季節は進んでいるな。

 Tera Termを起動して,サーバに接続する。
   $ sudo yum update
をやってみた。できたけど,アップデートが何もなかった(爆)。そういえば,指定のリポジトリを書き直した方がいいということをよくネット上で見るが,Minimalインストールでも,CentOS6.3には初めからyum-plugin-fastestmirrorとyum-prestoが入ってる。これがあれば,ミラーリストをざっとなめてからやってくれてるみたいだが,それでも指定のリポジトリを書き直したがいいんだろうか。

 Tera Termそのものは,CUIのターミナルエミュレータだが,マウスでコピー&ペーストもできるし,サーバの処理をやりながらおんなじPC上でこの記事も書けるし,うんと楽チン。CentOS6.3のMinimalインストールでは,マウスさえ使える状態になっていなくて,久しぶりにキーボード頼りだった。日頃も結構ショートカットキーを使ってはいるが,全部となると,また問題が別。今日の夜中にSSHが使えるようになって,前記事の冒頭でぼやいたことが嘘みたい。サーバ上はこのまま,CUIだけでいいや。現金なやつ —>> 自分

 本家のお世話-#40。で書いたように,春から初夏にかけて,温度のことで大騒ぎしたxw4200なので,lm_sensorsを入れて温度を測ってみた。しかし,lm_sensorsを入れるだけでも,依存関係で結構いろいろ入るものである。
   $ sudo yum install lm_sensors
   $ sudo sensors-detect
   $ sensors
      ———————————————
      smsc47b397-isa-0480
      Adapter: ISA adapter
      fan1: 5619 RPM
      fan2: 0 RPM
      fan3: 0 RPM
      fan4: 3810 RPM
      temp1: +52.0°C
      temp2: +0.0°C
      temp3: +42.0°C
      temp4: +0.0°C
      ———————————————
 今朝からずっと火を入れていて,14:00現在,室温34℃の状態で上記だと,上出来じゃないだろうか。ただし,システムファンは7段階の7番目(「低 <-- 123456(7) --> 高」)でフル回転していて,ものすごーくウルサイ。

 そういえばClamAVを入れていないので入れてみることにする。標準のリポジトリには含まれていないので,ダウンロードにwgetを使うが,これもMinimalには入っていないので,先にwgetをインストール。
   $ sudo yum install wget
 次に,ClamAV関係の3ファイルをダウンロードする。
   $ sudo wget http://pkgs.repoforge.org/clamav/clamav-0.97.5-2.el6.rf.i686.rpm
   $ sudo wget http://pkgs.repoforge.org/clamav/clamd-0.97.5-2.el6.rf.i686.rpm
   $ sudo wget http://pkgs.repoforge.org/clamav/clamav-db-0.97.5-2.el6.rf.i686.rpm
 ダウンロードした3ファイルは/home/centosに保存されている。
   $ sudo rpm -ivh clamav-db-0.97.5-2.el6.rf.i686.rpm
はできたが,
   $ sudo rpm -ivh clamav-0.97.5-2.el6.rf.i686.rpm
をやると,libltdl.so.7がないと怒られるので,libtool-ltdlをインストール。
   $ sudo yum install libtool-ltdl
改めて,次をやると
   $ sudo rpm -ivh clamav-0.97.5-2.el6.rf.i686.rpm
通ったので,次に,
   $ sudo rpm -ivh clamd-0.97.5-2.el6.rf.i686.rpm
で,インストールは完了。

   $ sudo /etc/rc.d/init.d/clamd start
とやると,
     Starting Clam AntiVirus Daemon: LibClamAV Error: cl_cvdhead: Can’t read CVD header in
     /var/clamav/daily.cld
     LibClamAV Error: cli_loaddbdir(): error parsing header of /var/clamav/daily.cld
     ERROR: Malformed database
と daily.cld が壊れているらしいので,先に
   $ sudo freshclam
をやってみた。その後,改めて
   $ sudo /etc/rc.d/init.d/clamd start
をやったら,Clam AntiVirus Daemon が無事走り出した。

追記(8/12):
 ちゃんとrpmforgeリポジトリを導入して,ClamAVのインストールをやり直した。その経緯を次記事に書いたので,インストールする場合は,そっちを参考にしてください。