rpmコマンド Edit

  • はじめに
    SH-Linuxのホームページ(http://www.sh-linux.org/index-j.html)には、
    SH4向けバイナリパッケージがRPM形式で多数公開されている。
    このパッケージを使用するために、redhatのパッケージ管理ツールrpmをインストールする。

    rpmのバイナリパッケージは無いようなので、
    http://ftp.jp.debian.org/debian/pool/main/r/rpm/からソースを取ってくる。
    なお最新のパッケージだと依存関係で引っかかるので、一つ前のバージョンを取ってきた。

    • rpm_4.0.3-4.diff.gz
    • rpm_4.0.3-4.dsc
    • rpm_4.0.3.orig.tar.gz

  • ビルド&インストール
    ビルドで必要なパッケージを前もってapt-getする。
    landisk:/home/src/rpm# apt-get upgrade
    landisk:/home/src/rpm# apt-get install libtool automake1.5 zlib1g-dev libbz2-dev
    landisk:/home/src/rpm# apt-get install libpopt-dev libdb3-dev gettext bzip2
    
    ソースを展開して、パッチを当て、ビルドパッケージする。
    パッチ(rpm-4.0.3.patch)やビルド済みのパッケージは → ここ
    landisk:/home/src/rpm# dpkg-source -x rpm_4.0.3-4.dsc
    landisk:/home/src/rpm# cp どこかの/rpm-4.0.3.patch .
    landisk:/home/src/rpm# cd rpm-4.0.3
    landisk:/home/src/rpm/rpm-4.0.3# patch -p1 < ../rpm-4.0.3.patch
    patching file debian/rules
    patching file popt/po/Makefile.in.in
    
    landisk:/home/src/rpm/rpm-4.0.3# dpkg-builedpackage -us -uc
    
    インストール
    landisk:/home/src/rpm/rpm-4.0.3# cd ..
    landisk:/home/src/rpm# dpkg -i rpm_4.0.3-4_sh4.deb librpm-dev_4.0.3-4_sh4.deb \
    librpm4_4.0.3-4_sh4.deb
    

  • rpmの使い方
    (随時追加予定)
    パッケージ解凍 (インストールではなく、ただの解凍です。)
    landisk:~# rpm2cpio filename.rpm | cpio -uid
    
    パッケージ内のファイルリスト表示
    landisk:~# rpm -qpl filename.rpm
    
    パッケージ情報の表示
    landisk:~# rpm -qpi filename.rpm
    
    パッケージのビルド
    landisk:~# rpm --rebuild filename.src.rpm
    


MySQL Edit

  • 下準備
    MySQLは3.23系をインストールすることにした。(4.x系はgcc3.2が必要らしい)
    MySQLのホームページ ( http://www.mysql.com/ ) から、3.23系の最新ソース、
    バージョン3.23.58をとってきて、ビルド用のディレクトリに展開する。
    ( ここ の最下行のTarball(tar.gz)を選択する。

    さらに、ビルドにlibreadline-devが必要になるのでapt-getしておく。
    landisk:~# mkdir /home/src/mysql
    landisk:~# cd /home/src/mysql
    landisk:/home/src/mysql# cp 何処かの/mysql-3.23.58.tar.gz . 
    landisk:/home/src/mysql# tar vxfz mysql-3.23.58.tar.gz
    landisk:/home/src/mysql# apt-get install libreadline-dev
    
    tmpのパーミッションを設定
    landisk:/home/src/mysql# chmod 1777 /tmp
    

  • ビルド&インストール
    /usr/local/mysql下へmysqlの環境をインストールすることにした。
    次のようなビルドスクリプト(build_mysql)を使ってMySQLをビルドした。
    ビルドオプションは適宜自分の好みで変更してください。

    [/home/src/mysql/build_mysql] ここに置いておきます
    #!/bin/sh
    
    CFLAGS="-O2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
    CXXFLAGS="$CFLAGS -fno-rtti -fno-exceptions"
    CXX=gcc
    export CFLAGS CXXFLAGS CXX
    
    ./configure \
    --prefix=/usr/local/mysql \
    --with-low-memory \
    --with-charset=ujis \
    --with-extra-charsets=all \
    --with-thread-safe-client \
    --enable-assembler \
    --with-mysqld-user="mysql" \
    2>&1 | tee ../build_mysql.log
    
    本スクリプトを用いて次のようにビルドを行います。
    まず、スクリプトの実行属性をセットして、cdして、本スクリプトを実行します。
    その後、ビルド(make)、インストール(make install)を行います。
    landisk:/home/src/mysql# chmod +x build_mysql
    landisk:/home/src/mysql# cd mysql-3.23.58
    landisk:/home/src/mysql/mysql-3.23.58# ../build_mysql
    
    数分後....
    landisk:/home/src/mysql/mysql-3.23.58# make
    
    約2時間程度でコンパイルが終了するので、
    landisk:/home/src/mysql/mysql-3.23.58# make install
    

  • 初期設定
    初期データベースの作成
    landisk:/home/src/mysql/mysql-3.23.58# ./scripts/mysql_install_db
    
    mysqlグループとユーザを作成
    landisk:/home/src/mysql/mysql-3.23.58# groupadd mysql
    landisk:/home/src/mysql/mysql-3.23.58# \
    useradd -g mysql -d /usr/local/mysql/var -c "MySQL server" mysql
    
    データベースにアクセス件を設定します。
    landisk:/home/src/mysql/mysql-3.23.58# chown -R mysql.mysql /usr/local/mysql
    
    mysqlサーバの起動/停止スクリプトを/etc/init.dへコピーします。
    landisk:/home/src/mysql/mysql-3.23.58# cp support-files/mysql.server /etc/init.d
    landisk:/home/src/mysql/mysql-3.23.58# chmod +x /etc/init.d/mysql.server
    
    mysqlサーバの設定ファイルを/etcへコピーします。
    landisk:/home/src/mysql/mysql-3.23.58# cp support-files/my-small.cnf /etc/my.cnf
    
    主要コマンドを/usr/local/binへリンクします。
    landisk:/home/src/mysql/mysql-3.23.58# cd /usr/local/bin
    landisk:/usr/local/bin# ln -s /usr/local/mysql/bin/mysql .
    landisk:/usr/local/bin# ln -s /usr/local/mysql/bin/mysqladmin .
    landisk:/usr/local/bin# ln -s /usr/local/mysql/bin/mysqldump .
    
    追加したライブラリを設定します。(しなくても良いのかも)
    /etc/ld.so.confに/usr/local/mysql/libを追加します。
    landisk:/usr/local/bin# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
    landisk:/usr/local/bin# /sbin/ldconfig
    

  • 動作確認
    mysqlサーバを起動します。
    landisk:/usr/local/bin# /etc/init.d/mysql.server start
    
    動作確認その1(psコマンドで確認してみます。)
    landisk:/usr/local/bin# ps -a | grep mysql
     4023 ttyp0    00:00:00 safe_mysqld
     4039 ttyp0    00:00:00 mysqld
     4040 ttyp0    00:00:00 mysqld
     4041 ttyp0    00:00:00 mysqld
    
    動作確認その2(データベースを表示してみます。)
    landisk:/usr/local/bin# /usr/local/mysql/bin/mysqlshow      
    +-----------+
    | Databases |
    +-----------+
    | mysql     |
    | test      |
    +-----------+
    
    動作確認その3(ファイル類の確認)
    landisk:/usr/local/bin# ls -l /usr/local/mysql/var
    total 16
    -rw-rw----    1 mysql    root           87 May  3 16:20 landisk.err  ← エラーログ
    -rw-rw----    1 mysql    mysql           5 May  3 16:20 landisk.pid ← pid
    drwx------    2 mysql    mysql        4096 May  3 16:06 mysql    ← データベース
    drwx------    2 mysql    mysql        4096 May  3 16:06 test     ← データベース
    

  • Perl用DBI/DBDインタフェースのインストール
    DBI/DBDとは、perlからMySQLを制御するためにのインタフェースモジュールです。
    perlモジュールをインストールには、CPAN-shellというツールを使用します。
    ちなみに、モジュールの正式名称は、http://search.cpan.org/で調べることができます。

    CPAN-shellを動かすために前もっていくつかのモジュールをapt-getする必要があります。
    そして、DBI/DBDをインストールする場合は/usr/local/mysql/binへパスを通しておきます。
    landisk:~# apt-get install gzip lynx ftp psmisc zlib1g-dev libbz2-dev bzip2
    landisk:~# PATH=$PATH:/usr/local/mysql/bin
    landisk:~# export PATH
    
    さらに、MySQLのrootパスワードが設定されていると、インストールに失敗するので、一時的に消去しておきます。
    (※MySQLのインストール直後は、パスワードは設定されていません。)
    landisk:~# mysqladmin password '' -p
    Enter password: 旧パスワード 
    
    CPAN-shellを起動します。
    初期起動時のみ、いろいろ質問されます。
    近場のダウンロードサイトを選択する以外、適当(デフォルトでたぶんOK)に返答してください。
    CPAN-shellが起動するとプロンプトが次のようにになります。
    landisk:/# perl -MCPAN -e shell  
    
    cpan>
    
    まず基本的なモジュール類をインストールします。
    その後、Bundle::DBD::mysqlをインストールします。 (DBIは、Bundle::DBD::mysqlに含まれます。)
    cpan> install Bundle::LWP     
    cpan> install Bundle::CPAN
    cpan> install Jcode
    cpan> install Bundle::DBD::mysql
    cpan> exit
    

  • rootパスワードの設定
    インストールが終了したなら、MySQLのrootパスワードを設定しておきましょう。
    (注意:MySQL自身が内部に保持するrootパスワードであり、debianのそれとは無関係です。)
    landisk:/usr/local/bin# mysqladmin -u root password 'MySQLのrootパスワード'
    
    設定したパスワードでアクセスできるか確認しておきましょう。
    landisk:/usr/local/bin# mysql -u root -p
    Enter Paaword: MySQLのrootパスワード
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3 to server version: 3.23.58
    
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
    
    mysql> exit
    Bye
    landisk:/usr/local/bin# 
    
    以上でMySQLのインストールは終了です。

MySQL付録 Edit

  • 付録1: MySQLデータベースの作成方法
    ユーザ名 user 、パスワード passwd というアカウントで使用できる、データベース testdb を作成する例を示します。
    landisk:~# mysql -u root -p
    Enter password:         ← MySQLのrootパスワード
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 173 to server version: 3.23.58
    
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
    
    mysql> create database testdb;
    Query OK, 1 row affected (0.09 sec)
    
    mysql> grant all on testdb.* to user@localhost identified by "passwd";
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> exit
    Bye
    landisk:~# 
    
    できたか確認してみます。
    landisk:~# /usr/local/mysql/bin/mysqlshow -uuser -ppasswd testdb
    Database: testdb
    +--------+
    | Tables |
    +--------+
    +--------+
    landisk:~# 
    
  • 付録2: MySQLサーバの停止方法
    landisk:/usr/local/bin# /etc/init.d/mysql.server stop
  • 付録3: gccバグのワークアラウンド
    下記オプションは、SH-Linuxのホームページ( http://www.sh-linux.org/index-j.html )で公開されているパッケージ
    http://www.sh-linux.org/rpm-2003/SRPMS/mysql-3.23.54a-3.73.2.src.rpm を参考にした。
    後で気づいたことだが、本オプションはMySQLを正常にコンパイルするために必要みたい。
    CFLAGS="-O2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
    CXXFLAGS="$CFLAGS -fno-rtti -fno-exceptions"
    CXX=gcc
    export CFLAGS CXXFLAGS CXX
    
    他に、排他制御関するSH4の最適化パッチ ( mysql-3.23.54a-sh-linux-2.patch ) が含まれる。

  • 付録4: debina_start、debina_stop
    debian環境に遷移する時、自動でMySQLを立ち上げたい時は、 debian_startに赤字部分を追加する。
    $root/usr/sbin/chroot $root /etc/init.d/mysql.server start
    $root/usr/sbin/chroot $root /usr/sbin/apachectl start
    
    同じくdebian環境を解除するdebian_stopコマンドに赤字部分を追加する。
    $root/usr/sbin/chroot $root /usr/sbin/apachectl stop
    sleep 1;
    $root/usr/sbin/chroot $root /etc/init.d/mysql.server stop
    sleep 1;
    

PHP 4.3.8 Edit

  • PHPに2件の深刻な脆弱性
    あまり神経質になる必要はないと思いますが、とりあえず、安全な4.3.8にバージョン をインストールしましょう。
    PHPに深刻な脆弱性が2件存在し、サーバを乗っ取られてブラウザを使って危険なコードを
    実行される恐れがある。脆弱性が確認されたのは、PHP 4.3.7以前のバージョンと、
    PHP 5.0のリリース候補3以前。(IDG)
    
  • 下準備
    LANDISKにPHPはデフォルトでインストールされているのですが、
    (1)PHPをApache組み込みモジュールとして動かしたい。
    (2)MySQLのライブラリを組み込みたい。
    との理由から、ソースからビルドすることにします。

    PHPのビルドに必要なパッケージを前もってインストールしておきます。
    landisk:/# apt-get install apache-dev flex
    apache-dev 内のAPXS(APache eXtenSion tool)は、
    PHPをApache組み込みモジュールとして動かす場合に必要になります。
    flexはPHPのビルドに必須です。

  • ビルド&インストール
    phpのソースは本家( http://www.php.net/downloads.php )から取ってきて、
    ビルド用のディレクトリを用意して、そこにphpのソースを展開します。
    landisk:/# mkdir /home/src/php
    landisk:/# cd /home/src/php
    landisk:/home/src/php# tar vxfz どこかの/php-4.3.8.tar.gz
    
    ビルドは、--with-apxs、--with-mysql、マルチバイトオプション等を指定しました。
    適宜自分の好みで変更してください。( 詳細は、次のビルドスクリプトを参照。)

    [/home/src/php/build_php] ここに置いておきます
    #!/bin/sh
    
    ./configure \
    --with-apxs=/usr/bin/apxs \
    --with-mysql=/usr/local/mysql \
    --enable-mbstring \
    --enable-sockets \
    --enable-ftp \
    2>&1 | tee ../build_php.log
    
    本スクリプトを用いて次のようにビルドします。
    まず、スクリプトの実行属性をセットして、cdして、実行します。
    その後、ビルド(make)、インストール(make install)を行います。
    landisk:/home/src/php# chmod +x build_php
    landisk:/home/src/php# cd php-4.3.8
    landisk:/home/src/php/php-4.3.8# ../build_php
    
    数分後....
    landisk:/home/src/php/php-4.3.8# make
    
    約2時間程度でコンパイルが終了するので、
    landisk:/home/src/php/php-4.3.8# make install
    
    php.iniをコピーする。
    landisk:/home/src/php/php-4.3.8# cp php.ini-recommended /usr/local/lib/php.ini
    

  • /etc/apache/httpd.conf (Apache設定ファイル)の編集
    406行目付近
    <IfModule mod_dir.c>
        DirectoryIndex index.html index.htm index.shtml index.cgi index.php
    </IfModule>
    
    765行目付近
        #
        # And for PHP 4.x, use:
        #
        AddType application/x-httpd-php .php .phtml   ←行頭の#を取る .phtmlを追加
        AddType application/x-httpd-php-source .phps    ←行頭の#を取る
    

  • Apacheの再起動
    httpd.confの変更を反映するためにApacheを再起動します。
    再起動前に念のためhttpd.confに文法エラーがないかチェックします。
    
    landisk:/etc/apache# /usr/sbin/apachectl configtest
    [Fri Apr 23 23:07:03 2004] [alert] apache: Could not determine the server's 
    fully qualified domain name, using 192.168.0.80 for ServerName
    Syntax OK
    
    landisk:/etc/apache# /usr/sbin/apachectl restart  ← 再起動  
    /usr/sbin/apachectl restart: httpd restarted
    

  • phpの動作確認
    phpinfo.php を以下の内容で作成して、
    <? phpinfo(); ?>
    ブラウザでphpinfo.phpをアクセスすると、次のようなphpの情報が画面に出力されます。

    phpinfo.png


Counter: 2111, today: 1, yesterday: 0

添付ファイル: filephpinfo.png 88件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-06-13 (火) 20:02:26 (6534d)