|
MYSQL4
|
|
|
|
Solaris 10 のパッケージに含まれている gcc (GNU Compiler Collection) は /usr/sfw/bin にコマンドがあるので、 環境変数PATH に登録しておくとよいでしょう。
.profileに以下を追加 LD_LIBRARY_PATH=/usr/sfw/bin:. export LD_LIBRARY_PATH
ソースを入手します。
http://dev.mysql.com/downloads/
# mkdir /usr/local/src # mkdir /usr/local/src/mysql <= 作業用ディレクトリの作成 # chmod 777 /usr/local/src/mysql <= 作業用ディレクトリのパーミッション変更
% cd /usr/local/src/mysql <= 作業用ディレクトリへ移動
# useradd -g 1000 -u 1002 -s /usr/bin/sh -m -d /export/home/mysql mysql
# passwd mysql New UNIX password: Retype new UNIX password:
# cd /usr/local/src/mysql # gzip -dc mysql-4.1.22.tar.gz | tar xf - # cd mysql-4.1.22 # ./configure --prefix=/opt/csw/mysql --with-mysqld-user=mysql --with-charset=binary --with-extra-charsets=all # gmake # gmake install
※ --with-extra-charsets について
● データベースの初期化と起動
# cp support-files/my-medium.cnf /etc/my.cnf # cd /usr/local/mysql # ./bin/mysql_install_db --user=mysql # chown -R root . # chown -R mysql:staff var # ./bin/mysqld_safe --user=mysql &
Solaris 10 にて gcc を利用して MySQL などをコンパイルする場合、libstdc++.laの内容が空であるために出力される "libstdc++.la is not a valid libtool archive" エラーに対処しておかなければなりません。(Solaris Expressでは、修正されています。)
/usr/sfw/lib/libstdc++.la は以下のように修正
# libstdc++.la - a libtool library file # Generated by ltmain.sh - GNU libtool 1.4a-GCC3.0 (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes) # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='libstdc++.so.6' # Names of this library. library_names='libstdc++.so.6.0.3 libstdc++.so.6 libstdc++.so' # The name of the static archive. old_library='libstdc++.a' # Libraries that this one depends upon. dependency_libs='-lc -lm -L/usr/sfw/lib -lgcc_s' # Version information for libstdc++. current=6 age=0 revision=3 # Is this an already installed library? installed=yes # Files to dlopen/dlpreopen dlopen='' dlpreopen='' # Directory that this library needs to be installed in: libdir='/usr/sfw/lib'
/usr/sfw/lib/64/libstdc++.la は以下のように修正
# libstdc++.la - a libtool library file # Generated by ltmain.sh - GNU libtool 1.4a-GCC3.0 (1.641.2.256 2001/05/28 20:09:07 with GCC-local changes) # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='libstdc++.so.6' # Names of this library. library_names='libstdc++.so.6.0.3 libstdc++.so.6 libstdc++.so' # The name of the static archive. old_library='libstdc++.a' # Libraries that this one depends upon. dependency_libs='-L/lib/64 -lc -lm -L/usr/sfw/lib/64 -lgcc_s' # Version information for libstdc++. current=6 age=0 revision=3 # Is this an already installed library? installed=yes # Files to dlopen/dlpreopen dlopen='' dlpreopen='' # Directory that this library needs to be installed in: libdir='/usr/sfw/lib/64'
3.PATHとLD_LIBRARY_PATHの設定
PATH Netscapeの実行コマンドが、/usr/local/bin/netscapeだったとします。もしあなたのshellの環境変数PATHに '/usr/local/bin'がなかった場合、netscapeを実行するには、'/usr/local/bin/netscape'と完全指定 (FullPATH)で指定しなければいけません。しかし、'PATH=/usr/local/bin'となっていれば、すでにあなたは 'netscape'が、'/usr/local/bin'にあることを知っていることになり、単に'netscape'とするだけで、 'Netscape'を起動できます。
LD_LIBRARY_PATH あるアプリケーションを実行したとき、そのアプリケーションは'libxml'というライブラリを参照するとしましょう。 しかし、あなたのShellに'libxml'の置き場所の設定(LD_LIBRARY_PATH)がなければ、実行されたアプリケーションは、 libxmlがOS上に存在するかどうかさえわからなく、おそらくエラーになるでしょう。 当然、ソースのコンパイル時にも影響します。
Solarisのデフォルトでは、PATHは必要最低限しか設定されていません。まずはこれを設定していきます。 とりあえず、インストール後は以下のところに、PATHを通しておくと良いでしょう。 もちろん、あなたがアプリケーションを独自に追加した場合は、そのPATHも追加しましょう。
PATH具体例 bash(.bashrc) PATH=/usr/local/bin:/usr/sfw/bin:/opt/sfw/bin PATH=$PATH:/usr/bin:/usr/sbin:/usr/dt/bin:/usr/openwin/bin PATH=$PATH:/usr/xpg4/bin:/usr/ccs/bin:/usr/ucb:/etc export PATH
tcsh(.cshrc) set path=(/usr/local/bin /usr/sfw/bin /opt/sfw/bin) set path=($path /usr/bin /usr/sbin /usr/dt/bin /usr/openwin/bin) set path=($path /usr/xpeg4/bin /usr/ccs/bin /usr/ucb /etc)
LD_LIBRARY_PATHの具体例 bash(.bashrc) LD_LIBRARY_PATH=/usr/local/lib:/usr/sfw/lib:/opt/sfw/lib LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/dt/lib:/usr/openwin/lib LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/xpeg4/lib:/lib:/usr/ccs/lib export LD_LIBRARY_PATH
tcsh(.cshrc) setenv LD_LIBRARY_PATH /usr/local/lib:/usr/sfw/lib:/opt/sfw/lib setenv LD_LIBRARY_PATH "$LD_LIBRARY_PATH":/usr/lib:/usr/dt/lib:/usr/openwin/lib setenv LD_LIBRARY_PATH "$LD_LIBRARY_PATH":/usr/xpeg4/lib:/usr/ccs/lib:/lib
aliasの設定 bash(.bashrc) alias ls='/opt/sfw/bin/gls --color' alias vi='/opt/sfw/bin/vim'
tcsh(.cshrc) alias ls '/opt/sfw/bin/gls --color' alias vi '/opt/sfw/bin/vim'
MANPATHの設定 bash(.bashrc) MANPATH=$MANPATH:/usr/share/man:/usr/local/man:/opt/sfw/man:/opt/NSUG/man export MANPATH
tcsh(.cshrc) setenv MANPATH "$MANPATH":/usr/share/man:/usr/local/man:/opt/sfw/man
アプリケーションを追加したときなどは、追加する必要があるかもしれません。
suしたときのpath設定 suしたときは、ユーザーの環境は引き継がれませんので、最低限のpathは'/etc/default/su'に設定しておきます。 ただし、LD_LIBRARY_PATHなどのLD系環境変数は、その都度宣言する必要があります。 この場合は、ユーザーの設定ファイルを読み込んだ方が早いかもしれません。 例)tcshの場合 /bin/tcsh source ~/.cshrc
/etc/default/suファイルの編集 #SUPATH=/usr/sbin:/usr/bin(デフォルト) SUPATH=/usr/local/bin:/usr/sfw/bin:/opt/sfw/bin:/usr/bin:/usr/sbin: /usr/dt/bin:/usr/openwin/bin:/usr/xpeg4/bin: /usr/ccs/bin:/usr/ucb
tips1.LD_LIBRARY_PATHとLD_RUN_PATH solarisでは、LD_LIBRARY_PATHとLD_RUN_PATHを使用できます。 この違いは、LD_LIBRARY_PATHは、バイナリ実行時の依存ライブラリの参照先ですが、LD_RUN_PATHは、コンパイル時に依存ライブラリの場所を、バイナリに埋め込みます。 ソースからコンパイルする場合は、このあたりを上手に使うと、いろいろ工夫出来ます。 たとえば、オリジナルパッケージ集なんか作る時や、異なるバージョンのライブラリをインストールしておき、一方を指定してコンパイルするときなどには便利ですね!
|
|
|