初心者もOK! FreeBSD質問スレッド その100at UNIX
初心者もOK! FreeBSD質問スレッド その100 - 暇つぶし2ch159:名無しさん@お腹いっぱい。
09/02/08 11:30:16
portupgrade-2.4.6,2 (ports-mgmt/portupgrade) なんですが,
デフォルトの BDM を使用していると portsdb -u や pkgdb -u で作成される
/usr/ports/INDEX-7.db や /var/db/pkg/pkgdb.db といったデータベースファイル
のパーミッションが 0000 になってしまいます.
0000 なので root しか読みも書きも出来ず, 一般ユーザだとデータベースの
読み取り権限が必要な portcvsweb などが使えません.
WITH_BDB4 で make した portupgade だと umask 022 の状態で
データベースファイルのパーミッションが 0644 になるのを確認しております.

ruby は良く分からんながら読んでみたんですが, どうもデータベース構築の際に
pkgdbtools.rb の get_db(mode='w+', perm=0664) を呼び出して, 
db_driver == bdm_hash なので, case文の else節 から if mode == 'w+' で, 

File.unlink(@db_file) if File.exist?(@db_file)
db = DBM.open(@db_filebase, mode.to_i)

となっていますが, 

dbm - Rubyリファレンスマニュアル
<URL:URLリンク(www.ruby-lang.org)

を見ると, DBM.open() は open(dbname[, mode[, flags]]) となっており,
第2仮引数の mode はパーミッションで, get_db() の仮引数 perm にあたるので,

db = DBM.open(@db_filebase, mode.to_i)
ではなくて, 
db = DBM.open(@db_filebase, perm)
でないでしょうか?


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch