So-net無料ブログ作成
検索選択

MacOSの隠しファイルを削除する [Ruby]

今回はちょっと違う話題を・・。

私は、Macを利用しているんですが、MacOSでは「リソースフォーク」とか言って、ファイルの属性が書かれているファイルが隠しファイルとしてファイル毎に作成されたりします。Mac上でFinderなど普通のアプリを使っている時には特に問題はないのですが、NASを利用してファイル共有していると、結構邪魔なため、これらの隠しファイルを削除するツールを作ってみました。

見えている隠しファイルは「.DS_Store」と各ファイル毎に作成されている「._<filename>」、隠しディレクトリの「.AppleDouble」。ついでに古いディレクトリだと「2EDS_~!3」と言うのも見えています。さらに、ツールを作っている時に気が付いた「._.DS_Store」。かなり前からMacでNASを使ってファイル共有をしてるんですが、その間にNASの入れ替えでターミナルなんかを使って、ファイルの移動などをさせているうちにいろんな種類の隠しファイルが出来ている様です。特に「._.DS_Store」なんかは、隠しファイルの隠しファイルになってるみたいです・・・。

ツールの仕様は下記の通り。

  • 「.」で始まるファイルを削除
  • 「.」で始まるディレクトリはその中身全てと共に削除
  • ファイル「2EDS_~!3」を削除
  • 引数で指定されたディレクトリ以下、全てのサブディレクトリが対象


と言う感じで、処理対象はデータを保存しているディレクトリのみのため、仕様はかなり簡素化してます。データと共に設定などを隠しファイルで持っているディレクトリには使用できません。

で、サブディレクトリの探索ですが、再帰で処理して行くと深い階層のディレクトリが処理できなくなる可能性があるため、ディレクトリを見つけたらキュー(今回は配列)に詰めて行き、現在のディレクトリの中の隠しファイルを削除し終わったら、次のディレクトリに進むと言う感じにしました。

後、「._.DS_Store」と言う隠しファイルは「.DS_Store」を削除した瞬間に同時に削除される。つまり「.DS_Store」に対するリソースフォークになってしまっている様子です。このファイルの存在と振る舞いに気づく前は「ファイルが無い」と例外が発生して処理が止まってしまっていたのでした。

また、文字列の処理をするのが面倒だったので、削除の作業は実際にそのディレクトリに移動(chdir)して、作業する様にしています。まあ、これはどっちがいいのかよくわからないですね。

と言う感じで作ったRubyスクリプトをアップしようかと思いましたが、このブログは画像、動画、音声しかアップできない様です。まあ、そんなに長いソースでもないので、ここにコピーしときます。

ちなみに、実行したRubyのバージョンは「ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin10.0]」です。

# 指定されたディレクトリ以下にある.ファイルを削除
# サブディレクトリも検索する
# .ディレクトリは中のファイルも全て削除
# 「2EDS_~!3」も削除
# 
# 使用法:ruby del_dot.rb <dir_name>

# ディレクトリを検索して、.ファイル、.ディレクトリを削除する
class DelDot
    @dir_stack        # 処理すべきディレクトリ名(フルパス)を格納する配列
    
    # 初期化
    def initialize(root)
        @dir_stack = Array[root]
    end
    
    # .ファイルの削除
    def del_dot(file)
        if (file =~ /^\..+/) then
            File.delete(file)
            print 'delete ', file, "\n"
        elsif (file == "2EDS_~!3") then
            File.delete(file)
            print 'delete ', file, "\n"
        end
    end
    
    # .ディレクトリの削除:ディレクトリ内のファイルは全て削除する
    def del_dotdir(dir)
        procdir = Array.new.push(dir)
        deldir = Array.new.push(dir)
        
        while procdir.size != 0
            curdir = procdir.shift
            Dir.chdir(curdir)
            print '---------------------- ', curdir, "\n"
            Dir.foreach(Dir.pwd) { |file|
                if File.ftype(file) == "directory" then
                    if (!(file == '.') && !(file == '..')) then
                        procdir.push(Dir.pwd + '/' + file)
                        deldir.push(Dir.pwd + '/' + file)
                    end
                else
                    File.delete(file)
                    print 'delete ', file, "\n"
                end
            }
        end
        
        Dir.chdir(dir + '/..')
        deldir.reverse_each { |item|
            Dir.delete(item)
            print 'delete ', item, "\n"
        }
    end
    
    # 単一ディレクトリの処理
    def proc_dir(cur)
        Dir.chdir(cur)
        Dir.foreach(Dir.pwd) { |file|
            if File.exist?(file) == true then
                if File.ftype(file) == "directory" then
                    if (file =~ /^\..+/) then        # .ディレクトリの処理
                        if (!(file == '.') && !(file == '..')) then
                            del_dotdir(Dir.pwd + '/' + file)
                        end
                    else                            # ディレクトリの登録
                        if (!(file == '.') && !(file == '..')) then
                            @dir_stack.push(Dir.pwd + '/' + file)
                        end
                    end
                else
                    del_dot(file)
                end
            end
        }
    end
    
    # メイン処理
    def proc
        while @dir_stack[0] != nil
            cur = @dir_stack.shift
            print '---------------------- ', cur, "\n"
            proc_dir(cur)
        end
    end
end

# 引数をクラスに渡す
dir_name = ARGV[0]
if dir_name != nil then
    script = DelDot.new(dir_name)
    script.proc
end


処理、ソースの善し悪しはさておき、初めて開発系のブログの様な雰囲気になりましたかね??

*

と言うことなんですが、記事を書き終えた後、バグを2個程見つけまして、上記はそれを修正したものとなってます。・・が、既にある程度の処理が終わっている(バグで完全に処理が終わってなかった)ディレクトリに対して実行しただけなので、もしかしたら、修正がうまく行ってない可能性もあったりするかも・・・。

自分用のツールならほっておく(で、運用で対応する)様な内容でしたが、公開するとなると何となく気持ち悪くて、よけいな対応をしてしまいますね・・。更なるバグの指摘やRuby的にはこうした方がいいんじゃないのと言う様なご意見がございましたら、コメントをお願いします。後、根本的なアルゴリズムも・・。



ナウでヤングなレンタルサーバー!ロリポップ!

GPG [Android]

さて、前回プロンプトでは名前を求められている様で、デフォルトとしてMacへのログインアカウントが表示されていたので、そのまま入力します。すると次はメールアドレスを求められている様です。ここはgoogleに媚を売って、Gmailのアドレスを入力。すると入力内容の確認の後、今度はカラーが表示されるかどうかの確認が来ました。で、まあカラー表示で了承したところ、初期化が完了したとのこと。

Your Name  [xxxxx]: xxxxx
Your Email [xxxxx@mac-mini.local]: xxxxx@gmail.com

Your identity is: xxxxx 
is this correct [y/N]? y

Testing colorized output (for 'repo diff', 'repo status'):
  black    red      green    yellow   blue     magenta   cyan     white 
  bold     dim      ul       reverse 
Enable color display in this user account (y/N)? y

repo has been initialized in /Volumes/android/work


・・・初期化は完了した様ですが、情報がどこに書き込まれたのかがよくわかりませんね・・・。workディレクトリにも「~/bin/」にも何か書き込まれた様な様子はありません。と思ってログを見直したら、「/Volumes/android/work/.repo/」に書き込まれている様ですね。隠しディレクトリでした。

*

さて、ここで、前回強く求められていたGPGをインストールしときます。もしかしたら、上のユーザー情報を入力する時に利用されるだけだったら無駄かも知れませんが、気にしないことに。

インストーラがあったので、それでインストールします。私が落としたのは、Version 2013.03.30で、OS X 10.5 以上が求められている様です。

13040200.png
インストーラ、アンインストーラ


パッケージの中にはインストーラとアンインストーラが入ってました。インストールが完了すると、キーの作成を求められたので、作成。

全然進捗はないですが、今回はここまで。

【参考】
GPGTools
Mac GNU Privacy Guard



マカフィー・ストア

Repoインストールミス [Android]

相変わらずたらたらと続けております当ブログですが、「~/bin/repo」の中身を見てみたところ、こんな感じになってました・・・。(長い行は末尾を省略・・)

<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, ...
  <title>Error 404 (Not Found)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{...
  </style>
  <a href=//www.google.com/><img src=//www.google.com/images/errors/logo...
  <p><b>404.</b> <ins>That’s an error.</ins>
  <p>  <ins>That’s all we know.</ins>


まあ、インストールに失敗してますね・・。検索してみたところ、リポジトリが変更になっているとか。Androidのサイトはメンテされてないんですね・・。まあ、全てのページを最新情報で維持するのは難しいか・・・。

*

と思ったら、回答の参照先は私の見てたページと同じでした。・・・自分の実行したコマンドを良く見直してみたら、私が間違えていました。と言うことで、Androidのサイトは無罪でした・・・。

気を取り直して「repo init」を実行し直したら、次の通りに。

$ repo init -u https://android.googlesource.com/platform/manifest
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.

Get https://gerrit.googlesource.com/git-repo
remote: Counting objects: 101, done
remote: Finding sources: 100% (101/101)
remote: Total 2344 (delta 1420), reused 2344 (delta 1420)
Receiving objects: 100% (2344/2344), 1.34 MiB | 669 KiB/s, done.
Resolving deltas: 100% (1452/1452), done.
From https://gerrit.googlesource.com/git-repo
 * [new branch]      maint      -> origin/maint
 * [new branch]      master     -> origin/master
 * [new branch]      stable     -> origin/stable
 * [new tag]         v1.0       -> v1.0
 * [new tag]         v1.0.1     -> v1.0.1
 * [new tag]         v1.0.2     -> v1.0.2
 * [new tag]         v1.0.3     -> v1.0.3
 * [new tag]         v1.0.4     -> v1.0.4
 * [new tag]         v1.0.5     -> v1.0.5
 * [new tag]         v1.0.6     -> v1.0.6
 * [new tag]         v1.0.7     -> v1.0.7
 * [new tag]         v1.0.8     -> v1.0.8
 * [new tag]         v1.0.9     -> v1.0.9
 * [new tag]         v1.1       -> v1.1
 * [new tag]         v1.10.0    -> v1.10.0
 * [new tag]         v1.10.1    -> v1.10.1
 * [new tag]         v1.10.2    -> v1.10.2
 * [new tag]         v1.10.3    -> v1.10.3
 * [new tag]         v1.10.4    -> v1.10.4
 * [new tag]         v1.11.0    -> v1.11.0
 * [new tag]         v1.11.1    -> v1.11.1
 * [new tag]         v1.12.0    -> v1.12.0
 * [new tag]         v1.12.1    -> v1.12.1
 * [new tag]         v1.12.2    -> v1.12.2
 * [new tag]         v1.2       -> v1.2
 * [new tag]         v1.3       -> v1.3
 * [new tag]         v1.3.1     -> v1.3.1
 * [new tag]         v1.3.2     -> v1.3.2
 * [new tag]         v1.4       -> v1.4
 * [new tag]         v1.4.1     -> v1.4.1
 * [new tag]         v1.4.2     -> v1.4.2
 * [new tag]         v1.4.3     -> v1.4.3
 * [new tag]         v1.4.4     -> v1.4.4
 * [new tag]         v1.5       -> v1.5
 * [new tag]         v1.5.1     -> v1.5.1
 * [new tag]         v1.6       -> v1.6
 * [new tag]         v1.6.1     -> v1.6.1
 * [new tag]         v1.6.10    -> v1.6.10
 * [new tag]         v1.6.10.1  -> v1.6.10.1
 * [new tag]         v1.6.10.2  -> v1.6.10.2
 * [new tag]         v1.6.2     -> v1.6.2
 * [new tag]         v1.6.3     -> v1.6.3
 * [new tag]         v1.6.4     -> v1.6.4
 * [new tag]         v1.6.5     -> v1.6.5
 * [new tag]         v1.6.6     -> v1.6.6
 * [new tag]         v1.6.7     -> v1.6.7
 * [new tag]         v1.6.7.1   -> v1.6.7.1
 * [new tag]         v1.6.7.2   -> v1.6.7.2
 * [new tag]         v1.6.7.3   -> v1.6.7.3
 * [new tag]         v1.6.7.4   -> v1.6.7.4
 * [new tag]         v1.6.7.5   -> v1.6.7.5
 * [new tag]         v1.6.8     -> v1.6.8
 * [new tag]         v1.6.8.1   -> v1.6.8.1
 * [new tag]         v1.6.8.10  -> v1.6.8.10
 * [new tag]         v1.6.8.11  -> v1.6.8.11
 * [new tag]         v1.6.8.2   -> v1.6.8.2
 * [new tag]         v1.6.8.3   -> v1.6.8.3
 * [new tag]         v1.6.8.4   -> v1.6.8.4
 * [new tag]         v1.6.8.5   -> v1.6.8.5
 * [new tag]         v1.6.8.6   -> v1.6.8.6
 * [new tag]         v1.6.8.7   -> v1.6.8.7
 * [new tag]         v1.6.8.8   -> v1.6.8.8
 * [new tag]         v1.6.8.9   -> v1.6.8.9
 * [new tag]         v1.6.9     -> v1.6.9
 * [new tag]         v1.6.9.1   -> v1.6.9.1
 * [new tag]         v1.6.9.2   -> v1.6.9.2
 * [new tag]         v1.6.9.3   -> v1.6.9.3
 * [new tag]         v1.6.9.4   -> v1.6.9.4
 * [new tag]         v1.6.9.5   -> v1.6.9.5
 * [new tag]         v1.6.9.6   -> v1.6.9.6
 * [new tag]         v1.6.9.7   -> v1.6.9.7
 * [new tag]         v1.6.9.8   -> v1.6.9.8
 * [new tag]         v1.7       -> v1.7
 * [new tag]         v1.7.1     -> v1.7.1
 * [new tag]         v1.7.2     -> v1.7.2
 * [new tag]         v1.7.3     -> v1.7.3
 * [new tag]         v1.7.3.1   -> v1.7.3.1
 * [new tag]         v1.7.4     -> v1.7.4
 * [new tag]         v1.7.4.1   -> v1.7.4.1
 * [new tag]         v1.7.4.2   -> v1.7.4.2
 * [new tag]         v1.7.4.3   -> v1.7.4.3
 * [new tag]         v1.7.5     -> v1.7.5
 * [new tag]         v1.7.6     -> v1.7.6
 * [new tag]         v1.7.6.1   -> v1.7.6.1
 * [new tag]         v1.7.7     -> v1.7.7
 * [new tag]         v1.7.7.1   -> v1.7.7.1
 * [new tag]         v1.7.7.2   -> v1.7.7.2
 * [new tag]         v1.7.7.3   -> v1.7.7.3
 * [new tag]         v1.7.7.4   -> v1.7.7.4
 * [new tag]         v1.7.7.5   -> v1.7.7.5
 * [new tag]         v1.7.7.6   -> v1.7.7.6
 * [new tag]         v1.7.8     -> v1.7.8
 * [new tag]         v1.7.8.1   -> v1.7.8.1
 * [new tag]         v1.7.8.2   -> v1.7.8.2
 * [new tag]         v1.8.0     -> v1.8.0
 * [new tag]         v1.8.1     -> v1.8.1
 * [new tag]         v1.8.2     -> v1.8.2
 * [new tag]         v1.9.0     -> v1.9.0
 * [new tag]         v1.9.1     -> v1.9.1
 * [new tag]         v1.9.2     -> v1.9.2
 * [new tag]         v1.9.3     -> v1.9.3
 * [new tag]         v1.9.4     -> v1.9.4
 * [new tag]         v1.9.5     -> v1.9.5
 * [new tag]         v1.9.6     -> v1.9.6
Get https://android.googlesource.com/platform/manifest
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 96126  100 96126    0     0  50850      0  0:00:01  0:00:01 --:--:--  182k
From /Volumes/android/work/.repo/manifests.git/clone.bundle
 * [new branch]      tradefed   -> origin/tradefed
 * [new branch]      tradedef   -> origin/tradedef
 * [new branch]      tools_r20  -> origin/tools_r20
 * [new branch]      master-dalvik -> origin/master-dalvik
 * [new branch]      master     -> origin/master
 * [new branch]      ics-mr1    -> origin/ics-mr1
 * [new branch]      ics-mr0    -> origin/ics-mr0
 * [new branch]      gingerbread-release -> origin/gingerbread-release
 * [new branch]      gingerbread -> origin/gingerbread
 * [new branch]      froyo      -> origin/froyo
 * [new branch]      android-sdk-adt_r20 -> origin/android-sdk-adt_r20
 * [new branch]      android-sdk-adt_r16.0.1 -> origin/android-sdk-adt_r16.0.1
 * [new branch]      android-sdk-4.0.3_r1 -> origin/android-sdk-4.0.3_r1
 * [new branch]      android-sdk-4.0.3-tools_r1 -> origin/android-sdk-4.0.3-tools_r1
 * [new branch]      android-cts-verifier-4.0_r1 -> origin/android-cts-verifier-4.0_r1
 * [new branch]      android-cts-verifier-4.0.3_r1 -> origin/android-cts-verifier-4.0.3_r1
 * [new branch]      android-cts-4.0_r1 -> origin/android-cts-4.0_r1
 * [new branch]      android-cts-4.0.3_r2 -> origin/android-cts-4.0.3_r2
 * [new branch]      android-cts-4.0.3_r1 -> origin/android-cts-4.0.3_r1
 * [new branch]      android-cts-2.3_r12 -> origin/android-cts-2.3_r12
 * [new branch]      android-cts-2.3_r11 -> origin/android-cts-2.3_r11
 * [new branch]      android-cts-2.3_r10 -> origin/android-cts-2.3_r10
 * [new branch]      android-cts-2.2_r8 -> origin/android-cts-2.2_r8
 * [new branch]      android-4.0.4_r2.1 -> origin/android-4.0.4_r2.1
 * [new branch]      android-4.0.4_r2 -> origin/android-4.0.4_r2
 * [new branch]      android-4.0.4_r1.2 -> origin/android-4.0.4_r1.2
 * [new branch]      android-4.0.4_r1.1 -> origin/android-4.0.4_r1.1
 * [new branch]      android-4.0.4_r1 -> origin/android-4.0.4_r1
 * [new branch]      android-4.0.3_r1.1 -> origin/android-4.0.3_r1.1
 * [new branch]      android-4.0.3_r1 -> origin/android-4.0.3_r1
 * [new branch]      android-4.0.2_r1 -> origin/android-4.0.2_r1
 * [new branch]      android-4.0.1_r1.2 -> origin/android-4.0.1_r1.2
 * [new branch]      android-4.0.1_r1.1 -> origin/android-4.0.1_r1.1
 * [new branch]      android-4.0.1_r1 -> origin/android-4.0.1_r1
 * [new branch]      android-2.3_r1 -> origin/android-2.3_r1
 * [new branch]      android-2.3.7_r1 -> origin/android-2.3.7_r1
 * [new branch]      android-2.3.6_r1 -> origin/android-2.3.6_r1
 * [new branch]      android-2.3.6_r0.9 -> origin/android-2.3.6_r0.9
 * [new branch]      android-2.3.5_r1 -> origin/android-2.3.5_r1
 * [new branch]      android-2.3.4_r1 -> origin/android-2.3.4_r1
 * [new branch]      android-2.3.4_r0.9 -> origin/android-2.3.4_r0.9
 * [new branch]      android-2.3.3_r1.1 -> origin/android-2.3.3_r1.1
 * [new branch]      android-2.3.3_r1 -> origin/android-2.3.3_r1
 * [new branch]      android-2.3.2_r1 -> origin/android-2.3.2_r1
 * [new branch]      android-2.3.1_r1 -> origin/android-2.3.1_r1
 * [new branch]      android-2.2_r1.3 -> origin/android-2.2_r1.3
 * [new branch]      android-2.2_r1.2 -> origin/android-2.2_r1.2
 * [new branch]      android-2.2_r1.1 -> origin/android-2.2_r1.1
 * [new branch]      android-2.2_r1 -> origin/android-2.2_r1
 * [new branch]      android-2.2.3_r2.1 -> origin/android-2.2.3_r2.1
 * [new branch]      android-2.2.3_r2 -> origin/android-2.2.3_r2
 * [new branch]      android-2.2.3_r1 -> origin/android-2.2.3_r1
 * [new branch]      android-2.2.2_r1 -> origin/android-2.2.2_r1
 * [new branch]      android-2.2.1_r2 -> origin/android-2.2.1_r2
 * [new branch]      android-2.2.1_r1 -> origin/android-2.2.1_r1
 * [new branch]      android-2.1_r2.1s -> origin/android-2.1_r2.1s
 * [new branch]      android-2.1_r2.1p2 -> origin/android-2.1_r2.1p2
 * [new branch]      android-2.1_r2.1p -> origin/android-2.1_r2.1p
 * [new branch]      android-2.1_r2 -> origin/android-2.1_r2
 * [new branch]      android-2.1_r1 -> origin/android-2.1_r1
 * [new branch]      android-2.0_r1 -> origin/android-2.0_r1
 * [new branch]      android-2.0.1_r1 -> origin/android-2.0.1_r1
 * [new branch]      android-1.6_r2 -> origin/android-1.6_r2
 * [new branch]      android-1.6_r1.5 -> origin/android-1.6_r1.5
 * [new branch]      android-1.6_r1.4 -> origin/android-1.6_r1.4
 * [new branch]      android-1.6_r1.3 -> origin/android-1.6_r1.3
 * [new branch]      android-1.6_r1.2 -> origin/android-1.6_r1.2
 * [new branch]      android-1.6_r1.1 -> origin/android-1.6_r1.1
 * [new branch]      android-1.6_r1 -> origin/android-1.6_r1
 * [new tag]         android-sdk-adt_r20 -> android-sdk-adt_r20
 * [new tag]         android-sdk-adt_r16.0.1 -> android-sdk-adt_r16.0.1
 * [new tag]         android-sdk-4.0.3_r1 -> android-sdk-4.0.3_r1
 * [new tag]         android-sdk-4.0.3-tools_r1 -> android-sdk-4.0.3-tools_r1
 * [new tag]         android-cts-verifier-4.0_r1 -> android-cts-verifier-4.0_r1
 * [new tag]         android-cts-verifier-4.0.3_r1 -> android-cts-verifier-4.0.3_r1
 * [new tag]         android-cts-4.0_r1 -> android-cts-4.0_r1
 * [new tag]         android-cts-4.0.3_r2 -> android-cts-4.0.3_r2
 * [new tag]         android-cts-4.0.3_r1 -> android-cts-4.0.3_r1
 * [new tag]         android-cts-2.3_r12 -> android-cts-2.3_r12
 * [new tag]         android-cts-2.3_r11 -> android-cts-2.3_r11
 * [new tag]         android-cts-2.3_r10 -> android-cts-2.3_r10
 * [new tag]         android-cts-2.2_r8 -> android-cts-2.2_r8
 * [new tag]         android-4.0.4_r2.1 -> android-4.0.4_r2.1
 * [new tag]         android-4.0.4_r2 -> android-4.0.4_r2
 * [new tag]         android-4.0.4_r1.2 -> android-4.0.4_r1.2
 * [new tag]         android-4.0.4_r1.1 -> android-4.0.4_r1.1
 * [new tag]         android-4.0.4_r1 -> android-4.0.4_r1
 * [new tag]         android-4.0.3_r1.1 -> android-4.0.3_r1.1
 * [new tag]         android-4.0.3_r1 -> android-4.0.3_r1
 * [new tag]         android-4.0.2_r1 -> android-4.0.2_r1
 * [new tag]         android-4.0.1_r1.2 -> android-4.0.1_r1.2
 * [new tag]         android-4.0.1_r1.1 -> android-4.0.1_r1.1
 * [new tag]         android-4.0.1_r1 -> android-4.0.1_r1
 * [new tag]         android-2.3_r1_ -> android-2.3_r1_
 * [new tag]         android-2.3.7_r1 -> android-2.3.7_r1
 * [new tag]         android-2.3.6_r1 -> android-2.3.6_r1
 * [new tag]         android-2.3.6_r0.9 -> android-2.3.6_r0.9
 * [new tag]         android-2.3.5_r1_ -> android-2.3.5_r1_
 * [new tag]         android-2.3.4_r1_ -> android-2.3.4_r1_
 * [new tag]         android-2.3.4_r0.9_ -> android-2.3.4_r0.9_
 * [new tag]         android-2.3.3_r1_ -> android-2.3.3_r1_
 * [new tag]         android-2.3.3_r1.1_ -> android-2.3.3_r1.1_
 * [new tag]         android-2.3.2_r1_ -> android-2.3.2_r1_
 * [new tag]         android-2.3.1_r1_ -> android-2.3.1_r1_
 * [new tag]         android-2.2_r1_ -> android-2.2_r1_
 * [new tag]         android-2.2_r1.3_ -> android-2.2_r1.3_
 * [new tag]         android-2.2_r1.2_ -> android-2.2_r1.2_
 * [new tag]         android-2.2_r1.1_ -> android-2.2_r1.1_
 * [new tag]         android-2.2.3_r2.1 -> android-2.2.3_r2.1
 * [new tag]         android-2.2.3_r2 -> android-2.2.3_r2
 * [new tag]         android-2.2.3_r1 -> android-2.2.3_r1
 * [new tag]         android-2.2.2_r1_ -> android-2.2.2_r1_
 * [new tag]         android-2.2.1_r2_ -> android-2.2.1_r2_
 * [new tag]         android-2.2.1_r1_ -> android-2.2.1_r1_
 * [new tag]         android-2.1_r2_ -> android-2.1_r2_
 * [new tag]         android-2.1_r2.1s_ -> android-2.1_r2.1s_
 * [new tag]         android-2.1_r2.1p_ -> android-2.1_r2.1p_
 * [new tag]         android-2.1_r2.1p2_ -> android-2.1_r2.1p2_
 * [new tag]         android-2.1_r1_ -> android-2.1_r1_
 * [new tag]         android-2.0_r1_ -> android-2.0_r1_
 * [new tag]         android-2.0.1_r1_ -> android-2.0.1_r1_
 * [new tag]         android-1.6_r2_ -> android-1.6_r2_
 * [new tag]         android-1.6_r1_ -> android-1.6_r1_
 * [new tag]         android-1.6_r1.5_ -> android-1.6_r1.5_
 * [new tag]         android-1.6_r1.4_ -> android-1.6_r1.4_
 * [new tag]         android-1.6_r1.3_ -> android-1.6_r1.3_
 * [new tag]         android-1.6_r1.2_ -> android-1.6_r1.2_
 * [new tag]         android-1.6_r1.1_ -> android-1.6_r1.1_
remote: Counting objects: 19, done
remote: Finding sources: 100% (320/320)
remote: Getting sizes: 100% (70/70)
remote: Total 320 (delta 129), reused 320 (delta 129)
Receiving objects: 100% (320/320), 67.17 KiB, done.
Resolving deltas: 100% (129/129), completed with 4 local objects.
From https://android.googlesource.com/platform/manifest
 * [new branch]      android-4.1.1_r1 -> origin/android-4.1.1_r1
 * [new branch]      android-4.1.1_r1.1 -> origin/android-4.1.1_r1.1
 * [new branch]      android-4.1.1_r2 -> origin/android-4.1.1_r2
 * [new branch]      android-4.1.1_r3 -> origin/android-4.1.1_r3
 * [new branch]      android-4.1.1_r4 -> origin/android-4.1.1_r4
 * [new branch]      android-4.1.1_r5 -> origin/android-4.1.1_r5
 * [new branch]      android-4.1.1_r6 -> origin/android-4.1.1_r6
 * [new branch]      android-4.1.1_r6.1 -> origin/android-4.1.1_r6.1
 * [new branch]      android-4.1.2_r1 -> origin/android-4.1.2_r1
 * [new branch]      android-4.2.1_r1 -> origin/android-4.2.1_r1
 * [new branch]      android-4.2.1_r1.1 -> origin/android-4.2.1_r1.1
 * [new branch]      android-4.2.1_r1.2 -> origin/android-4.2.1_r1.2
 * [new branch]      android-4.2.2_r1 -> origin/android-4.2.2_r1
 * [new branch]      android-4.2_r1 -> origin/android-4.2_r1
 * [new branch]      android-cts-4.1_r1 -> origin/android-cts-4.1_r1
 * [new branch]      android-cts-4.1_r2 -> origin/android-cts-4.1_r2
 * [new branch]      android-cts-4.2_r2 -> origin/android-cts-4.2_r2
 * [new branch]      android-sdk-support_r11 -> origin/android-sdk-support_r11
   32bb163..b48922c  gingerbread -> origin/gingerbread
   ed09c39..6912769  ics-mr1    -> origin/ics-mr1
 * [new branch]      ics-plus-aosp -> origin/ics-plus-aosp
 * [new branch]      jb-dev     -> origin/jb-dev
 * [new branch]      jb-mr1-dev -> origin/jb-mr1-dev
 * [new branch]      jb-mr1-dev-plus-aosp -> origin/jb-mr1-dev-plus-aosp
 * [new branch]      jb-mr1.1-dev -> origin/jb-mr1.1-dev
 * [new branch]      jumper-stable -> origin/jumper-stable
   3954196..70c902c  master     -> origin/master
   b5a0d13..a7f38b7  master-dalvik -> origin/master-dalvik
 * [new branch]      tools_r21  -> origin/tools_r21
 * [new branch]      tools_r21.1 -> origin/tools_r21.1
   8b9be7c..fbb30a8  tradefed   -> origin/tradefed
 * [new tag]         android-4.1.1_r1 -> android-4.1.1_r1
 * [new tag]         android-4.1.1_r1.1 -> android-4.1.1_r1.1
 * [new tag]         android-4.1.1_r1_ -> android-4.1.1_r1_
 * [new tag]         android-4.1.1_r2 -> android-4.1.1_r2
 * [new tag]         android-4.1.1_r3 -> android-4.1.1_r3
 * [new tag]         android-4.1.1_r4 -> android-4.1.1_r4
 * [new tag]         android-4.1.1_r5 -> android-4.1.1_r5
 * [new tag]         android-4.1.1_r6 -> android-4.1.1_r6
 * [new tag]         android-4.1.1_r6.1 -> android-4.1.1_r6.1
 * [new tag]         android-4.1.2_r1 -> android-4.1.2_r1
 * [new tag]         android-4.2.1_r1.1 -> android-4.2.1_r1.1
 * [new tag]         android-4.2.1_r1.2 -> android-4.2.1_r1.2
 * [new tag]         android-4.2.1_r1__ -> android-4.2.1_r1__
 * [new tag]         android-4.2.2_r1_ -> android-4.2.2_r1_
 * [new tag]         android-4.2_r1___ -> android-4.2_r1___
 * [new tag]         android-cts-4.1_r1 -> android-cts-4.1_r1
 * [new tag]         android-cts-4.1_r2 -> android-cts-4.1_r2
 * [new tag]         android-cts-4.2_r2 -> android-cts-4.2_r2
 * [new tag]         android-sdk-support_r11 -> android-sdk-support_r11

Your Name  [xxxxx]: 


プロンプトが出て、入力待ちになってるんですが、何を入れればいいのやら・・?

まあ、実行結果を見て行くとまず、「gpg (GnuPG)」のインストールを強く求められています。何に使うんでしょうか?後は特に問題はなさそうです。

(ログで)記事が長くなったので、今回はここまでにしときます。

つづく。


【参考】
repoのinitエラーの回避策を教えてください - 日本Androidの会





Repo [Android]

前回の続きを読んで行くと、Android 4.0.x 以前のブランチのビルドには Leopard or Snow Leopard + MacOS 10.5 SDK が必要だとのこと・・・。Android のバージョン毎に違う環境を用意しないといけないんですねぇ・・。個人的には最終的に保有している端末向けに何かビルドできればうれしいとか思ってたんですが、ちょっと厳しいかも・・。

他にもいろいろ書かれているので、まとめて見ると、下記の様な感じです。



MacPortsを入れたら、PATHの設定が必要な様です。「/usr/bin」の前に「/opt/local/bin」を入れろとか。これは「~/.bash_profile」内に「export PATH=/opt/local/bin:$PATH」を加えればいい様です。

文章中には書かれていませんが、実行しているコマンドを見る限り、SDLも入れる必要がある様です。

後、ICS(4.0.x)以前のバージョンのビルドだと、makeのバージョンも戻す必要がある様ですが、話が発散するので、とりあえずは、最新ブランチのビルドに専念します。それでも、MacPortsくらいは入れといた方がいいんですかね・・。

*

まあ、どうせ環境が整ってないのでその辺は都度考えることにして、まずはソースのダウンロードです。その前にRepoを入れましょうとのこと。ずいぶん前に「git」は入れた気がしますが、バージョンが古いんでしょうねぇ・・。まあ、言われる通りにRepoをインストールして行きます。

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo


次にRepoの初期化です。case-sensitiveなファイルシステムで実行せよとのことなので、前回作成したファイルシステムで実行します。

$ mkdir work
$ cd work
$ repo init -u https://android.googlesource.com/platform/manifest
/Users/xxx/bin/repo: line 1: syntax error near unexpected token `newline'
/Users/xxx/bin/repo: line 1: `<!DOCTYPE html>'


・・・Repoがうまく動いてないですね。インストールに失敗したんですかね。と言うか、何か環境が足りてないのか・・?


つづく。

【参考】
Initializing a Build Environment - android open source project
Downloading the Source Tree - android open source project
MacPorts Project






ブログを作る(無料) powered by So-netブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。