Author Archives: admin

Mandriva 2009 インストールレポート その1

Mandrivaにはいくつかのエディションがある。

Mandriva One
Live CDとしても動くし、インストーラとしても使う。一番普通のやつ

Mandriva Linux Free
OneにはJavaやFlashなどのプリプラなものがいくつか含まれるが、それを含んでいないもの。と思われる。

Mandriva Linux Powerpack
商業ベースのものと思われる。

ここではMndriva Oneを使った。ダウンロードしたファイルは、mandriva-linux-one-2009-KDE4-int-cdrom-i586.iso。マシンはVMwareを使った。このisoをVMwareに接続して起動。


日本語がないので、English(American)を選択。


タイムゾーンはアジアの東京を選択。


キーボードレイアウトはJapanese 106 Keysを選択。


LiveCDバージョンで起動した。この状態ではまだハードディスクにはインストールされていない。ここでLive Installをダブルクリックして起動する。

最初にハードディスクのどこにインストールされるか質問されるが、ここでは全部を使うようにした。次にこのPCに必要のないパッケージの削除を実行した。

つぎにBoot Loaderの選択、パーティションの確認、ここではデフォルトのまま選択、その後以下のように「電源を落とせ」のメッセージが出た。

下のバーから[Menu][Leave][Turn off Computer]を選択して、電源を落とした後、CDを抜いて再び電源ONした。

ハードディスクからブート。

国の選択だが日本がないのでここではUnited Statesを選択。なおこのときいったんOther Countiesをクリックしてしまうと、なぜか先に進めなくなったので、いったんリセットしてから素直に選択したら先に進んだ。

rootのパスワードと、一般ユーザの設定。

インストール成功。

このあと、ユーザアカウントの登録があるが、ここではDeclineをクリックしてスルー。Surveyはちゃんと答えてたらいきなり最初のページにもどったのでDeclineしてスルー。その後もスルー。

とりあえずインストールできた。

Mandriva 2009 インストールレポート その2

Operaのメニューのフォントを変える

XPのテーマなどを変えたせいか、Opera9.60をインストールして実行するとメニューのフォント表示がひどいことになっているので直し方。

[ツール]→[設定]を選択して、左のペインでフォントを選び、「ブラウザ表示欄」でフォントを設定する。[MS UI Gothic]などがよいと思われる。

関連記事:
Firefoxのメニューのフォントを変える

kernel 2.6.27 pre-releaseのバグ

ここより要約

e1000eモジュールでサポートされるIntel 82566と82567のネットワークインターフェース(ICH8とICH9のチップセットの一部分)のEEPROMデータが壊れてしまい、使えなくなってしまう。

自分のPCがこの影響を受けるかどうかは以下のようにして確認できる。

# lspci | grep 8256[67]

上のコマンドで出力があれば、この問題の影響を受ける。出力がない場合は影響を受けない可能性が高いが、以下のコマンドによりe1000eモジュールを使っているかを確認できる。

# /sbin/lsmod |grep e1000e

上のコマンドで出力があれば、e1000eが使われており、影響を受ける可能性がある。

以下のコマンドを使えば、EEPROMデータをバックアップできる。

#ethtool -e ethX > savemyeep.txt

ethXは通常eth0などとなる。

カーネルの置き換えができない場合、networkサービスの停止後以下のコマンドでe1000eを無効にできる。
# modprobe -r e1000e
# rm -f /lib/modules/2.6.27*/kernel/drivers/net/e1000e/e1000e.ko.gz
# depmod -a

この問題が発症するとグラフィックドライバによりカーネルパニックを起こし、ネットワークが使えなくなる。直すにはマザーボードのBIOSを更新すればいいのかもしれない。

apt-getでkernelをアップグレードから除外する

vmwareでlinuxを動かしていると、カーネルのアップグレードがあるたびに面倒なことになるので、apt-get upgradeしたときカーネルをアップグレードしない方法を調べてみた。

ここではdebianを使って行った。

$ cat /etc/debian_version
4.0
$ uname -r
2.6.18-6-486

# apt-get upgrade -s
Reading package lists... Done
Building dependency tree... Done
The following packages will be upgraded:
cupsys cupsys-bsd cupsys-client cupsys-common libcupsimage2 libcupsys2 libfreetype6 libfreetype6-dev libtiff4 libxml2
libxml2-utils libxslt1.1 linux-image-2.6.18-6-486 linux-source-2.6.18 openssh-client openssh-server python-libxml2
xsltproc

upgrade に-sをつけてシミュレーションで動かすと、inux-image-2.6.18-6-486とlinux-source-2.6.18がアップグレード対象であることがわかる。

wajigを使ってholdする

# apt-get install wajig

# wajig hold linux-image-2.6.18-6-486 linux-source-2.6.18
The following packages are on hold:
linux-image-2.6.18-6-486
linux-source-2.6.18

これでこれら2つのパッケージはアップグレードされないと思うので再び以下のように確認してみる。

# apt-get upgrade -s
Reading package lists... Done
Building dependency tree... Done
The following packages have been kept back:
linux-image-2.6.18-6-486 linux-source-2.6.18
The following packages will be upgraded:
cupsys cupsys-bsd cupsys-client cupsys-common libcupsimage2 libcupsys2 libfreetype6 libfreetype6-dev libtiff4 libxml2
libxml2-utils libxslt1.1 openssh-client openssh-server python-libxml2 xsltproc

2つのパッケージがkept backになっているのでアップグレードされないのだろう。wajigはdpkgレベルで動くものらしく、上記のholdコマンドはたぶん以下のようにdpkgの–get-selectionsや–set-selectionsを使っていると思われる。

# dpkg --get-selections | grep hold
linux-image-2.6.18-6-486 hold
linux-source-2.6.18 hold

wajigでholdしたものは以下のようにして元に戻す。

# wajig unhold linux-image-2.6.18-6-486 linux-source-2.6.18
The following packages are still on hold:

/etc/apt/preferencesを使う方法

aptにはパッケージをpinする機能があるらしく、以下のような手順で実現した。

# dpkg-query --list|grep linux-image
ii linux-image-2.6-486 2.6.18+6etch3 Linux kernel 2.6 image on x86
ii linux-image-2.6.18-6-486 2.6.18.dfsg.1-22 Linux 2.6.18 image on x86
# dpkg-query --list|grep linux-source
ii linux-source-2.6.18 2.6.18.dfsg.1-22 Linux kernel source for version 2.6.18 with

# vi /etc/apt/preferences

# apt-get upgrade -s
Reading package lists... Done
Building dependency tree... Done
The following packages will be upgraded:
cupsys cupsys-bsd cupsys-client cupsys-common libcupsimage2 libcupsys2 libfreetype6 libfreetype6-dev libtiff4 libxml2
libxml2-utils libxslt1.1 openssh-client openssh-server python-libxml2 xsltproc

2つのパッケージがアップグレード対象から消えた。

コンソールで動くbittorrentクライアント rTorrent

rTorrentはncursesを使ってコンソール上で動くbittorrentクライアント。ここではUbuntuを使って動かした。

インストール

$ sudo apt-get install rtorrent

下準備

デフォルトでは一回終了してしまうと、次に起動したときに前のダウンロード状態を保存してくれていないので、~/.rtorrent.rcファイルを作成して、以下のようにセッション保存法のディレクトリを指定する。

session = ~/.rtorrentsession
directory = ~/rtorrentdown

directoryはダウンロードしたファイルを置くディレクトリ、デフォルトでは./になる。ここでは~/rtorrentdownを指定した。また以下のようにこれらのディレクトリをつくっておく必要がある。

$ mkdir ~/.rtorrentsession
$ mkdir ~/rtorrentdown

起動

$ rtorrent

*.torrentの追加

エンターキーかbackspaceキーを押して、torrentファイルの場所を指定する。ここではファイルパスを指定してもURLを指定してもいい。エンターキーを押して指定した場合、ダウンロードは開始されず、backspaceキーを押した場合は追加と同時にダウンロードが始まる。

ダウンロードのフォルダを変えたい場合はエンターキーでtorrentを追加し、カーソルキーの上下で該当ダウンロードを選択して、[CTRL]+Oを押す。

ダウンロードを開始するには、[CTRL]+S、停止するには[CTRL]+D、ただし[CTRL]+Dはもう一回押すとエントリを削除してしまうので注意が必要。

エントリを選択してカーソルキーの右を押すと、ピアやファイルのリストを表示できる。

エントリの説明

ubuntu-8.10-beta-desktop-i386.iso
375.2 / 695.4 MB Rate: 0.0 / 776.4 KB Uploaded: 1.5 MB [52%]
Tracker: [Tried all trackers.]

これは以下のような意味

[ファイル名]
[ダウンロードしたバイト数] / [全体のバイト数] MB Rate: [アップロードスピード] / [ダウンロードスピード] Uploaded : アップロードしたバイト数 [ダウンロード済み%]
Tracker: [トラッカーのチェック状態]

ステータスバーの説明

[Throttle off/off KB] [Rate 449.8/218.4 KB] [Port: 6884] [U 14/0] [D 23/0] [H 0/32] [S 0/53/768] [F 2/128]

これは大雑把に左から以下のような意味。

Throttle [最大アップロード速度]/[最大ダウンロード速度]

offは制限なしを意味する。これを変えるには、a,s,d,z,x,cのキーを使う。大文字も使う。

Rate [現在のアップロード速度] / [現在のダウンロード速度]

Port: [待ち受けポート]

U D H S F

アップロードやダウンロードやトラッカーへのスロット数。

終了する

[CTRL] + Qで終了する。

詳細はこのページにあります。

ubuntu8.04を8.10(intrepid-ibex)にアップグレードする

まだベータ版なのでいろいろ不具合がでる場合があると思います。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"

$ update-manager -d

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu intrepid (development branch)"

eAcceleratorをインストールしてPHPを高速化する

eAcceleratorはPHPをコンパイルしたものをキャッシュして動作を高速化させるPHPの拡張機能。コンパイルされたPHPスクリプトを共有メモリにおいて実行する。共有メモリは実行時にロックされ一度にひとつのPHPのみ実行する。共有メモリにおけないものはディスクにおかれる。PHP4とPHP5で利用できる。

ここではVineのPHP5.2.6に対してeAccelerator0.9.5.3をソースコードからインストールする。

# apt-get install php5-devel
$ wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
$ tar xfvj eaccelerator-0.9.5.3.tar.bz2
$ cd eaccelerator-0.9.5.3
$ phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
$ ./configure
$ make
# make install

成功すればPHPのextension_dirにeaccelerator.soがコピーされる。

$ php -i | grep extension_dir
extension_dir => /usr/lib/php5 => /usr/lib/php5
$ ls /usr/lib/php5
bin/ build/ eaccelerator.so* mysql.so* mysqli.so* pdo.so* pdo_mysql.so* pdo_sqlite.so*
$

PHPの設定ファイルを編集(作成)する。ここでは/etc/php5/php.d/eaccelerator.iniを作成して以下を追加した。

extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

iniの詳しい説明はここを参照。

上で定義したcache_dirを作成する。

$ mkdir /tmp/eaccelerator
$ chmod 0777 /tmp/eaccelerator/

Apacheを再起動してphpinfo()を表示。eAcceleratorの記述があるか確認する。

関連記事:
MySQLTunerを使ってMySQLを速くする

MySQLTunerを使ってMySQLを速くする

MySQLTunerはMySQLを診断して、いろいろアドバイスしてくれるプログラム。perlスクリプトで提供されているので、簡単に実行できる。なおWindowsでは動かないらしい。

ダウンロードして実行する。

以下のようなエラーが出た。

–forcememと–forceswapを指定して再実行。

いっぱい出てきたが[!!]で始まっているのはやばいやつみたい。そして最後のRecommendationsにお奨めの直し方が書いてあると思われる。

最初のやつは[Run OPTIMIZE TABLE to defragment tables for better performance]なのでテーブルを最適化してデフラグしろってことらしい。検索してみたところこのサイトが見つかった。以下のコマンドを実行すればよいらしい。ただしmysqlが動いている状態じゃないとだめとのこと。このサイトでは一時的にhttpdを止めることを推奨している。

これを実行後、再びmysqltunerを実行したところ、また同じRecommendationsが出たがmysqlを再起動後実行したら消えた。

次は[Reduce your overall MySQL memory footprint for system stability]だがメモリの使用量を減らせということだろうか?これはスルー。

次は[Enable the slow query log to troubleshoot bad queries]、まずいクエリーのログためにスロークエリログを有効に、ということらしい。スロークエリログとは、long_query_timeよりも時間がかかったクエリーのことらしい、これをログに取っておけばいろいろ調べられるということか。

これを有効にするにはmysqldの起動オプションに–log-slow-queries[=file_name]を加えるらしい。または以下の記述をmy.cnfに加えてもいいみたいだ。ここでは後者を採用。

これを記述後mysqlをリスタートし、/var/lib/mysql/log-slow-queries.logができていることを確認した。そのご再び、mysqltunerを実行してRecommendationsが消えたことを確認。

次が[Set thread_cache_size to 4 as a starting value]、スレッドキャッシュとはプールしておくスレッドの数のようだ。
my.confにthread_cache_size=4を記述して終了。

あとのRecommendationsはSQLを発行する側の問題だと思うので、これで終了。

次に[Variables to adjust]で以下の指摘がなされている。

query_cache_size (>= 8M)
tmp_table_size (> 32M)
max_heap_table_size (> 16M)

my.cnfに以下のように書いた。

query_cache_size=8M
tmp_table_size=32M
max_heap_table_size=16M

query_cache_sizeはその名のとおりクエリの結果をキャッシュしておくものだと思うが、これを付けたら速くなった気がする。このwordpressの一番下のHTML convert timeがリロードしたとき速くなった。

結局[!!]で始まるものは[!!] Maximum possible memory usage: 310.7M (121% of installed RAM)]以外消せたのでよしとしよう。

関連記事:
eAcceleratorをインストールしてPHPを高速化する

eclipse 3.4にPDT 2.0をインストールする

Javaランタイムはインストールされているものとする。

eclipseのダウンロードページでEclipse Classic 3.4 (151 MB)をダウンロードする。現時点ではeclipse-SDK-3.4-win32.zipになっている。

C:\eclipseに解凍しC:\eclipse\eclipse.exeを実行する。

[Help]→[Software Updates…]を実行する。

上のように[Graphical Editing Framework GEF]をチェックし[Install…]をクリックしてインストールする。インストールが成功すると、eclipseの再起動を促されるので再起動する。

[Help]→[Software Updates…]を実行し、[Manage Sites…]をクリックし下図のように[http://download.eclipse.org/technology/dltk/updates/]をチェックする。

つぎに以下のように[Dynamic Languages Toolkit – Core Frameworks]をチェックしInstallをクリックする。

PDTのダウンロードサイトへいき、[2.0.0 Integration Build]へいき、[PDT Runtime]のファイルをダウンロードする。ここではorg.eclipse.php_feature-I20080917.zip(6.01Mb)をダウンロードした。これを適当なディレクトリに解凍する。

[Help]→[Software Updates…]を実行し[Add Sites…]をクリックし[Local…]をクリックし、さっき解凍したeclipseディレクトリを指定し、ダイアログを閉じた後以下のように[PDT Feature]をチェックし[Install…]をクリックする。

関連記事:
eclipse PDTとXdebugを使ってphpをリモートデバッグ

PEARを使ってみた

PEARはPHP Extension and Application Repositoryの略で、PHPのライブラリを集めたものです。ライブラリはパッケージと言う単位で構成されます。PEARはそれとともにパッケージのインストーラー(パッケージマネージャ)であるpearコマンドも提供します。

パッケージの一覧はここで見ることができます。

pearコマンドの使い方

pearでパッケージをインストールする前に、それらがphpでちゃんと利用可能になっているか確認しなくてはなりません。つまりpearでインストールされたファイルがphpから見えるようになっていなければなりません。そのためにまず以下のコマンドを実行して、pearの”PEAR directory”を確認します。

$ pear config-get php_dir
/usr/share/php5-pear
$

つぎに、phpinfo();をブラウザで表示して、phpのinclude_pathディレクティブに上記のパスが含まれているか確認します。

上記のことを確認したら以下のファイルを作りブラウザで表示させます。

System.phpはpearのphp_dirに存在するはずなので、このファイルをブラウザで開いてブラウザやサーバのログにphpのエラーがでなければ、pearは使えることになります。

インストールされているパッケージを表示

$ pear list

インストールされているパッケージの情報を表示

$ pear info

リポジトリからパッケージを検索

$ pear search aaa

HTML_Menuをインストールしてみる

# pear install HTML_Menu
Did not download optional dependencies: pear/HTML_Template_Sigma, use --alldeps to download automatically
pear/HTML_Menu can optionally use package "pear/HTML_Template_Sigma"
downloading HTML_Menu-2.1.4.tgz ...
Starting to download HTML_Menu-2.1.4.tgz (14,295 bytes)
.....done: 14,295 bytes
install ok: channel://pear.php.net/HTML_Menu-2.1.4

インストールされたファイルを確認。

# pear list-files HTML_Menu
Installed Files For HTML_Menu
=============================
Type Install Path
doc /usr/share/php5-pear/doc/HTML_Menu/examples/data/menu.php
doc /usr/share/php5-pear/doc/HTML_Menu/examples/templates/sigma.html
doc /usr/share/php5-pear/doc/HTML_Menu/examples/templates/sigmatree.html
doc /usr/share/php5-pear/doc/HTML_Menu/examples/directtree.php
doc /usr/share/php5-pear/doc/HTML_Menu/examples/sigma.php
doc /usr/share/php5-pear/doc/HTML_Menu/examples/sigmatree.php
doc /usr/share/php5-pear/doc/HTML_Menu/examples/types.php
php /usr/share/php5-pear/HTML/Menu/ArrayRenderer.php
php /usr/share/php5-pear/HTML/Menu/DirectRenderer.php
php /usr/share/php5-pear/HTML/Menu/DirectTreeRenderer.php
php /usr/share/php5-pear/HTML/Menu/Renderer.php
php /usr/share/php5-pear/HTML/Menu/SigmaRenderer.php
php /usr/share/php5-pear/HTML/Menu/SigmaTreeRenderer.php
php /usr/share/php5-pear/HTML/Menu.php
php /usr/share/php5-pear/HTML/MenuBrowser.php

docとついているものはドキュメントなのでこれらを参考にする。ここではexmapleディレクトリ以下を全部サーバに持ってきてテストしてみた。

directtree.phpを開くと以下のようになった。

sigma.phpを開くと以下のようなエラー。
Warning: require_once(HTML/Template/Sigma.php) [function.require-once]: failed to open stream

テンプレートが使えるらしくてファイルが見つからないらしいが、スルー。

終わり。