質問箱/3292

カテゴリ
サマリ更新手順を明示お願いします
バージョン1.4.6
投稿者山川?
状態質問
投稿日2006-01-09 (月) 05:46:17

質問

これは質問ではなくて要望なのですが、

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

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

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

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

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

回答

  • 世の中には色々な環境がありますし、同名のコマンドでもオプションがちょっと違うということすらありますよね。ほんの数行であっても、万人に通用する解説なんて可能なんでしょうか?
    それこそ「ファイルのアップロード、コピー等に関して、タイムスタンプやオーナー情報を保持する為には特別な操作が必要な場合があります。お使いの環境のマニュアルを熟読の上、慎重に行ってください。作業の前にはバックアップをとっておくことをお勧めしますが、環境、ツールにより、完全な復旧の為には特別な設定が必要になる場合があります…(以下略)」とかいう、毒にも薬にもなりそうもない記述にしかならないような。
    しかし、うまい解説もあるかもしれません。とにかく始めてみないことには分からないですし。まずは山川さんの得られた知見をQ&A/インストール辺りに書いてみるとか。 -- 2006-01-09 (月) 12:17:13
  • とりあえず、cp -a をお試しください。それと、man cp を見てみるとか。*1 -- okkez 2006-01-09 (月) 19:14:03
  • もし、 recent.dat のバックアップ(バージョンアップ前のタイムスタンプが入ったデータ)が残っているようでしたら、以下のプラグインを試してみてください。 -- 0? 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? 2006-01-09 (月) 22:24:53
    • パスワードのチェックはしていませんので、いたずら防止のため、使用後はプラグインを削除しておいてください。 -- 0? 2006-01-09 (月) 22:27:10
    • 一応念のためバックアップをとっておいた方が・・・*2 -- 0? 2006-01-09 (月) 22:30:14
  • このtimestampプラグインのattach対応版ってありませんか?サーバー移転するんですが、添付ファイルのタイムスタンプも維持できればと思うんですが。*3 -- 2006-01-12 (木) 22:14:33
    • どうなっても知りませんよ (*_*) -- 2006-01-13 (金) 00:52:47
      <?php
      function plugin_attachtouch_action()
      {
        global $script,$vars;
      
        if( isset($vars['msg'])) {
          foreach( explode("\n", $vars['msg']) as $tl) {
            list($fn,$ts) = explode(' ',$tl);
            $fn = UPLOAD_DIR . $fn;
            if ( !file_exists($fn)) continue;
            pkwk_touch_file($fn,$ts);
          }
        }
      
        foreach( glob( UPLOAD_DIR.'/*') as $fn) {
          $rlist .= basename($fn).' '.filemtime($fn)."\n";
        }
      
        $str = <<<EOD
      <form action="$script" method="post" class="memo">
       <div>
        <input type="hidden" name="plugin"  value="attachtouch" />
        <textarea name="msg" rows="5" cols="80">$rlist</textarea><br />
        <input type="submit" name="attachtouch" value="update" />
       </div>
      </form>
      EOD;
      
        return array('body'=>$str);
      }
      ?>
      新旧両方にこれをインストール、旧サイトのindex.php?plugin=attachtouchにアクセスし、そこのテキストエリアの 内容を新サイトのindex.php?plugin=attachtouchのテキストエリアにコピーしてupdate。殆どテストらしいテストはしていません。
      • くれぐれも、誤って現行サイトの方でテキストエリアに変更を加えた上でupdateを押したりしませんよう。使用後は速やかに削除すること。更にもう一度繰り返しますが、どうなっても知りませんよ (*_*) -- 2006-01-13 (金) 00:58:37
  • なんだか、ちょっと違った方向に行っている気がしますね。導入できたという事実から、更新する場合にはという問いなのですから、ディレクトリ構造や各種ファイルの取り扱いをどうするのか?ということですよね?コマンド云々じゃないでしょう。 -- upk 2006-01-13 (金) 01:21:25
    • 確かに本質はそこにありませんが、元質問が「どういうコマンドで」とお尋ねですから。…悪乗りした部分があるのは否定しません。mOm -- 最初の回答&attachtouch 2006-01-13 (金) 01:54:30
  • Plus!のサイトに、私が考える更新について、ちょっと書いてみました。色々と違うところもありますが、まぁ、ちょっとは参考になったらと思います。-- upk 2006-01-13 (金) 01:24:08


*1 もう解決してるなら要らぬ世話ですが
*2 既にあるかも知れませんが
*3 シェルとか難しいことは分からないんで…

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-01-13 (金) 01:55:44
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.427 sec.

OSDN