UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Solaris 10でglocate/gupdatedbを使える様にする

Solaris 10でglocate/gupdatedbを使える様にする


0.改訂履歴

  • 2009.06.01 新規作成

1.はじめに

 このドキュメントでは,Solaris 10で,glocate,gupdatedbを使う手順を説明する. Linuxではupdatedbコマンドで更新されたファイル名データベースを, locateコマンドで検索する事でファイルを高速に検索する事ができるが,Solaris 10ではデフォルトではインストールされてない.

 よって,独自にインストールする必要があるが,Companion CDの中にfindutils(GNU find utilities)が入っているので,これをインストールして利用できる様にする. なお,このパッケージでは,updatedb,locateがそれ ぞれgupdatedb,glocateとなっている.

 また,インストールによってマニュアルも追加されるので,MANPATHの設定を追加手順も示している.

2.パッケージを追加する(SFWgfind)

  • Companion CDをマウントしてパッケージのあるディレクトリに移動する.
-bash-3.00# pwd
/cdrom/s10_509_software_companion/Solaris_Software_Companion/Solaris_i386/Packages
-bash-3.00#
  • 必要なパッケージを探す.
-bash-3.00# ls -la | grep find
drwxrwxr-x 5 root sys 2048 3月 18日 05:09 SFWgfind
-bash-3.00#
  • パッケージが正しいか,確認する.
-bash-3.00# cat SFWgfind/pkginfo
PSTAMP=freeware20080823025939
PKG=SFWgfind
NAME=findutils - GNU find utilities
ARCH=i386
VERSION=4.2.30,REV=2008.08.23.02.00
SUNW_PRODNAME=findutils
SUNW_PRODVERS=5.11/SunOS Development
SUNW_PKGTYPE=
MAXINST=1000
CATEGORY=system
DESC=findutils - GNU find utilities
VENDOR=ftp://ftp.gnu.org/pub/gnu/findutils
HOTLINE=Please contact the owners of this software
EMAIL=
CLASSES=none
BASEDIR=/opt
SUNW_PKGVERS=1.0
PKG_SRC_NOVERIFY= none
PKG_DST_QKVERIFY= none
PKG_CAS_PASSRELATIVE= none
#FASPACD= none
-bash-3.00#
  • パッケージを追加する.
-bash-3.00# pkgadd -d . SFWgfind      

</cdrom/s10_509_software_companion/Solaris_Software_Companion/Solaris_i386/Packages>
 中のパッケージインスタンス <SFWgfind> を処理中です。

findutils - GNU find utilities(i386) 4.2.30,REV=2008.08.23.02.00
Copyright (C) 1986-1994 Free Software Foundation, Inc.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

YOU MUST OBSERVE ANY AUTHORS' CONDITIONS WITH RESPECT TO
INDIVIDUAL COMPONENTS PROVIDED WITHIN THIS CODE. SUPPORT
FOR THE TECHNOLOGIES AND DOCUMENTATION IS NOT PROVIDED
BY SUN MICROSYSTEMS, INC.

THE TECHNOLOGIES AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT TECHNICAL
SUPPORT OR WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, OR NON-INFRINGEMENT.

</opt> をパッケージのベースディレクトリとして使用します。
## パッケージ情報を処理中です。
## システム情報を処理中です。
7 個のパッケージパス名がすでに正しくインストールされています。
## パッケージの依存関係を検査しています。
## ディスク領域の要件を確認中です。
## すでにインストール済みのパッケージとの重複を確認中です。
## setuid/setgid を行うプログラムを検査中です。

このパッケージには、パッケージのインストール処理中にスーパーユーザーの
アクセス権で実行するスクリプトが含まれています。

<SFWgfind> のインストールを継続しますか
[y,n,?] y

findutils - GNU find utilities を <SFWgfind> としてインストール中です。

## 1/1 部分をインストールしています。
2020 ブロック

<SFWgfind> のインストールに成功しました。
-bash-3.00#
  • どこにインストールされたか,確認する.
-bash-3.00# cat SFWgfind/pkgmap | head -n 10 
: 1 3130 720
1 i copyright 1192 27839 1210411324
1 i depend 1693 10978 1219474779
1 i pkginfo 497 39364 1219474780
1 d none sfw 0755 root sys
1 d none sfw/bin 0755 root bin
1 f none sfw/bin/gfind 0555 root bin 139292 27450 1218783026
1 f none sfw/bin/glocate 0555 root bin 96156 29944 1218783026
1 f none sfw/bin/gupdatedb 0555 root bin 8698 22269 1218783026
1 f none sfw/bin/gxargs 0555 root bin 28808 9200 1218783026
-bash-3.00#
  • データベース更新を行うgupdatedbと,検索を行うglocateが/opt/sfw/bin配下にインストールされた事が確認できた.

3.gupdatedbを動作させる

  • ファイル一覧を取り込む為に,gupdatedbを動作させる.
-bash-3.00# /opt/sfw/bin/gupdatedb
sort: STDIN を読み取れません。: バイトシーケンスが正しくありません。
パイプ切断
-bash-3.00#
  • ロケールが日本語だったり,日本語ファイル名があると,このようなエラーが出る模様.
-bash-3.00# export LANG=C
-bash-3.00#
  • ロケールを英語にする.
-bash-3.00# /opt/sfw/bin/gupdatedb
/opt/sfw/bin/gfind: /hgfs: I/O error
-bash-3.00#
  • しばらく経過して,エラーが出た.
  • hgfsというのは,vmwareがファイル共有する時に使うファイルシステムで,ここでは特殊環境下(vmware配下)であり,必要も関係もないので無視する.

4.glocateで検索してみる

  • エラーが出た領域以外はデータベースが作成されているので,killコマンドを探してみる.
-bash-3.00# /opt/sfw/bin/glocate kill|grep bin
/usr/bin/kill
/usr/bin/pkill
/usr/openwin/bin/xkill
/usr/sbin/killall
/usr/sbin/wnnkill
/usr/xpg4/bin/kill

-bash-3.00#
  • 正しく検索できた.

5.glocate/gupdateのコマンドが検索される様にパスを設定する

  • パスを設定するのではなくて,linuxユーザになじみのあるGなしの名前で置き換えてシンボリックリンクを作成する.
-bash-3.00# ln -s /opt/sfw/bin/glocate /usr/bin/locate
-bash-3.00# ln -s /opt/sfw/bin/gupdatedb /usr/bin/updatedb
-bash-3.00#
  • 実行してみる.
-bash-3.00# locate updatedb
/opt/sfw/bin/gupdatedb
/opt/sfw/man/man1/gupdatedb.1

-bash-3.00#
  • 動作している事が確認できた.


広告スペース
Google