**[[質問箱3/292]] [#fdbbf98a]
|RIGHT:70|LEFT:410|c
|~サマリ|更新手順を明示お願いします|
|~バージョン|1.4.6|
|~投稿者|[[山川]]|
|~状態|質問|
|~投稿日|&new{2006-01-09 (月) 05:46:17};|
***質問 [#d2244ec5]
#setlinebreak(on)
これは質問ではなくて要望なのですが、

バージョンアップ/更新する際に、どのような手順を踏めばよいのかがすぐに分かる場所に書いてないように思います.私が探した範囲では、落としたファイルのINSTALL.txt, UPDATING.txt, README.txt のいずれにも概略すら書いていませんでしたし、公式ページのトップページからのリンクもなければ、FAQの中にもありませんでした.質問箱の中には、「更新の際にどこが更新されたかすぐ分かるようなツールがほしい」といった(私からすると)高度な質問は見つかりましたが、更新の具体的手順に答える解答は見つけることが出来ませんでした.

問題は、更新という管理者であれば誰でもやらなければならない、しかもセキュリティー上更新を勧めるといって更新作業を迫っているのに、上に挙げたアクセス容易な箇所のどこにもその手順が明記されていないというところにあります.

また、私レベルの者でも、ただ単に新しいファイルを全て古いファイルの上に上書きすれば済む、という問題ではないことはわかります.

実際のところは、ひとまず古いディレクトリをリネームして、落としたファイルを展開して前に使っていたディレクトリ名に変えました.次に、その状態でデフォルトの画面が表示されることを確認した後に、wikiとcacheディレクトリに古いコンテンツを上書きしました.ところが、それだけではプラグインを使った内容やら、メニューのレイアウトが違っていたので、いったん新旧のディレクトリ名を交換して元に戻しました.ところが、この一連の作業はファイル所有者がapacheユーザでしたので、一般ユーザでは操作ができず、rootユーザでやっていたので、コピーをする際に単純にcp -rfとやっていただけでは所有者やタイムスタンプを保持することが出来ず、都度chownコマンドでrootからapacheに所有者を変えていました.そうしたところ、すべてのファイルのタイムスタンプが現在時になってしまい、日付順に並んでいたコンテンツがすべて本日更新になってしまいました.

そうなってから慌てても仕方のない話ですが、もし、仮に更新する際にはどこのディレクトリの内容をどういうコマンドでどこにコピーすればいいか、などの手順を示した、ほんの数行の解説さえ配布文書中にあったら・・・と思うわけです.
#setlinebreak(off)

***回答 [#p015b5ff]
- 世の中には色々な環境がありますし、同名のコマンドでもオプションがちょっと違うということすらありますよね。ほんの数行であっても、万人に通用する解説なんて可能なんでしょうか?~
それこそ「ファイルのアップロード、コピー等に関して、タイムスタンプやオーナー情報を保持する為には特別な操作が必要な場合があります。お使いの環境のマニュアルを熟読の上、慎重に行ってください。作業の前にはバックアップをとっておくことをお勧めしますが、環境、ツールにより、完全な復旧の為には特別な設定が必要になる場合があります…(以下略)」とかいう、毒にも薬にもなりそうもない記述にしかならないような。~
しかし、うまい解説もあるかもしれません。とにかく始めてみないことには分からないですし。まずは山川さんの得られた知見を[[Q&A/インストール]]辺りに書いてみるとか。 --  &new{2006-01-09 (月) 12:17:13};
- とりあえず、cp -a をお試しください。それと、man cp を見てみるとか。((もう解決してるなら要らぬ世話ですが)) -- [[okkez]] &new{2006-01-09 (月) 19:14:03};
- もし、 recent.dat のバックアップ(バージョンアップ前のタイムスタンプが入ったデータ)が残っているようでしたら、以下のプラグインを試してみてください。 -- [[0]] &new{2006-01-09 (月) 22:22:00};

 <?php
 function plugin_timestamp_action()
 {
   // ファイル名
   $file = CACHE_DIR . 'recent.dat';
 
   // ファイル読み込み処理
   $handle = @fopen($file, 'r');
   if ($handle === false) {
     return false;
   }
   flock($handle, LOCK_SH);
 
   $contents = '';
   while (! feof($handle)) {
     $contents .= fread($handle, 8192);
   }
 
   flock($handle, LOCK_UN);
   @fclose($handle);
 
   $contents = str_replace("\r\n", "\n", $contents);// 一応
   $contents = str_replace("\r",   "\n", $contents);// 一応
   $contents = rtrim($contents);// 最後の改行を除く
   $contents = explode("\n", $contents);
 
   // タイムスタンプ置き換え処理
   foreach ($contents as $line) {
     if (empty($line)) {// 一応
       break;
     }
     list($time, $page) = explode("\t", rtrim($line));
     pkwk_touch_file(get_filename($page), $time);
   }
 }
 ?>
- バックアップしていた recent.dat で上書き -> index.php?plugin=timestamp これで、recent.dat に残ったタイプスタンプが適応されるはずです。 -- [[0]] &new{2006-01-09 (月) 22:24:53};
-- パスワードのチェックはしていませんので、いたずら防止のため、使用後はプラグインを削除しておいてください。 -- [[0]] &new{2006-01-09 (月) 22:27:10};
-- 一応念のためバックアップをとっておいた方が・・・(( 既にあるかも知れませんが )) -- [[0]] &new{2006-01-09 (月) 22:30:14};

#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.070 sec.

SourceForge