Skip to content

Instantly share code, notes, and snippets.

@takamii
Created April 4, 2011 13:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takamii/901592 to your computer and use it in GitHub Desktop.
Save takamii/901592 to your computer and use it in GitHub Desktop.
自動DebBkupが可能かどうか調べてみた。
■Cydia 1.x動作
・Cydia 1.1 Released - Heres All Features
・SBSettingsの起動が可能になった。ただしActivator呼び出しにはActivatorForcerがやはり必要。
・Backgrounderを使用してもバックグラウンド動作ができなくなってる。
※以下は次の環境で調査
 ・iPhone4/iOS4.0.1/Cydia1.1
■パッケージをインストールする時のCydiaの動作
 ・debをDL
  ・/var/cache/apt/archives/partialにdebがDLされる。
  ・複数のdebをDLする場合は並列に同時DLされている。この並列DLはCydia1.0からかも。
  ・DLが完了するとdebは/var/cache/apt/archivesに移動される。この時ファイルの
   タイムスタンプは、サーバ上にある元ファイルのタイムスタンプに変更される。たぶん。
 ・debをインストール
  ・/var/lib/dpkg/updatesに一時ファイルが作成されてインストールが行われる。
   一時ファイルの形式は不明。debパッケージの中身が素で解凍されているわけではなさそう。
 ・debが削除されるタイミング
  ・基本的な動作としてCydiaを終了したタイミングで/var/cache/apt/archivesの
   debファイルは削除される。
  ・「Restart SpringBoard」によりrespringをかけた場合はCydiaが終了した時点では
   debは削除されない。次回Cydiaを起動→終了したタイミングで削除される。
  ・なお「Restart SpringBoard」表示時にrespringかけずに(ホームボタン押下などで)
   Cydiaを終了させた場合はその時点でdebが削除される。ただしこの場合、実はCydiaは
   完全には終了しておらずバックグラウンドで生きている。再度Cydiaを起動すると
   「Restart SpringBoard」の画面で再開されrespringをうながされる。
■自動DebBkupするには?
 ・debがDLおよびインストールされた時に更新されると思われるフォルダ/ファイル。
  ・/var/cache/apt/archives/partial:まずこのフォルダにdebがDLされる
  ・/var/cache/apt/archives:DLが完了したdebからこのフォルダに移動される。
   そしてインストール処理が走ると思われる。
  ・/var/lib/dpkg/lock:全てのdebのDLとインストールが完了するとこのファイルの
   タイムスタンプが更新される。
  ・/var/lib/dpkg/triggers/Lock:このファイルも/var/lib/dpkg/lockと同じ動作ぽい。
 ・フォルダやファイルの変更を監視して自動実行させるには、launchdの設定ファイル
  (/System/Library//LaunchDaemons/*.plist)のkey値QueueDirectoriesに
  監視フォルダ、key値WatchPathsに監視するファイル名を設定する。
 ・/var/cache/apt/archives/partialフォルダを監視し、変更があれば、debが
  /var/cache/apt/archivesに移動完了した時点でバックアップすればよさそうだが、
  タイミング的にうまくいくのか検証する必要あり。
 ・launchdのフォルダ監視は、対象フォルダに何らかの変更が入ると(例えばファイルの
  DLが始まるetc)、まだDL中であっても即時にスクリプトが実行される。ただし連続して
  フォルダ内に変更が入っている場合はそれを検知して数秒〜十数秒後(この値がどう決まるのか
  は不明)に再度スクリプトが実行されるもよう。この動作は変更入るのが完了するまで
  繰り返される。よって巨大なファイルや複数のファイルが数分かけて格納される場合などは、
  その間にスクリプトが何回か実行されると思われる。
 ・/var/lib/dpkg/lockファイルを監視しておけば、全ての処理を完了した後にスクリプトを
  実行することができそうだけど、このファイルの動作が何時どう変更になるかわからないので
  そこが心配。保険をかけて両方実装するか?笑
 ・上記動作はiOSやCydia(APT)の仕様書やソースを読んだわけではなく、当方の実環境での
  ファイル生成のされ方や設定ファイルの変化をタイムスタンプの変化等から推測したものです。
  よって何時も/どのバージョンでもこの動作をするかは不明。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment