이글은 패키징을 직접 다 만들어서 하는 방법이다...
THEOS 를 이용해서 컴파일할 경우 makefile 약간 수정해서 걍 바로 한방에 패키징까지 하도록 하자;;;;; - 이거 설명은 나중에 하겠음!

이번 글은 데비안 패키지.
이건 다행이도 외국인의 친절한 유투브 동영상이 있었다..ㅎㅎ
하지만 맥에 dpkg를 설치하는데 좀 헤맨듯..

우선 MacPorts 를 설치해야 한다. 자세히는 모르겠지만
iPhone 의 apt-get 과 비슷한 역활을 하는듯.

다운을 받았으면 터미널을 실행하고

sudo port install dpkg

port 도 좋지만 homebrew 가 더 좋은듯.
이경우엔 sudo brew install dpkg

를 실행한다. 시간이 좀 걸림..(패스워드는 로그인한 계정의 비밀번호)

그다음 폴더를 하나 만들고 (폴더명은 크게 상관 없다.)
하위에 DEBIAN 폴더를 생성하고, 그안에 control 이라는 UTF-8 형식의 확장자 없는 파일을 만든다.(텍스트 편집기로 만들면 됨.)
내용은 아래와 같이...
[saurik 블로그에서 관련된 내용을 발견해서 조금 수정하겠음..ㅋ 원문은 : http://www.saurik.com/id/7 ]

Package: MyProgram
Version: 1.0
Architecture: iphoneos-arm
Depends: mobilesubstrate, preferenceloader
Replaces: MyProgram
Conflicts: MyProgram
Section: System
Maintainer: iolate <iolate@me.com>
Description: Lanch Banking app for jailbroken phone

Package 는 앱스토어앱들의 identifier 개념이다. 대문자로 적어도 모두 소문자로 인식.. 즉 대소문자 구분하지 않는다.
apt-get 등으로 받을때 사용되는 이름이기도 하다. 고로 고유해야 겠지?
 
Name 항목을 생성하고 넣을경우 시디아에선 이 Name 값이 나온다. 단, 사용자 필드이므로 빌드시 옵션을 넣어줘야 한다.
version 은 말그대로 버젼... 숫자,".","-" 까지 허용되는 것 같다..
Architecture 은 무시해도 되고 Depends는 의존성. 의존성에 있는 버젼 or 앱이 없으면 설치되지 않는다. 시디아에서의 경우 시디아가 자동으로 설치해줄것이다..(소스 내에 있으면.)
Replace는 이앱을 대치한다..Conflicts 는 아마 여기에 적힌 앱을 지우고 설치될 것이다..
Section은 음... 앱 만들정도 되면 다알겠지.. 그 밑으로도 알아서 이해하시길..귀찮;;ㅋㅋㅋㅋ


그리고 control 과 같은 경로에 특정 스크립트들을 넣어둘 수가 있다.
postinst 는 설치 후 작업.
preinst 는 설치 전 작업.
prerm 은 삭제 전,
postrm 은 삭제 후 실행되는 스크립트 파일 명이다.

권한 설정 등은 postinst 로 하면 되고 purge, remove, install 등 어떻게 실행 된 건지 체크 할 수도 있다.
이부분은 openssh 를 뜯어보시길..ㅋㅋ

그외에 다른 스크립트도 있는지는 모르겠음.


DS_Store_Cleaner_1.5.0.tar.gz

또한 맥에선 캐쉬 등을 위해 이것저것 잡 파일들을 많이 만든다..
그중 하나가  DS_Store 란 파일.. 위의 첨부파일로 삭제해주도록 하자.
저게 아마 Snow Leopard 에서만 작동할 수도 있는데 그러면 홈페이지 찾아가서 새 버젼 받으면 된다.ㅋ

이 프로그램으로 파일 내의 DS_Store 파일을 제거해 준뒤
터미널을 열어서

패키징을 원하는 폴더의 상위 폴더로 이동해서
dpkg -b 폴더이름
를 해주면 된다. tab키로 자동 완성 시킬 경우 젤 뒤에 / 가 생기는데 이럴경우 어디론가 사라지고 없으므로 꼭 지워주도록 하자.

이렇게 하면 폴더와 같은 위치에 deb파일이 생성된다! iFile등으로 설치하고 리스프링 하면 완료!!!


참고로 로컬에서 DEB를 설치해도 기록이 남기에 시디아에서도 Change에 리스트가 뜬다.


+ dpkg의 결과물에 ._ 로 시작하는 파일이 포함될수 있다. 나의 경우 DS_Store 는 지웠는데 남아있더라. deVbug님의 블로그에 보면 이에 대한 해결책을 알려준다. (http://devbug.me/618)

근데 나한텐 안되더라..ㅠㅠ
나의 경우엔 bash_profile 에

export COPYFILE_DISABLE=true
export COPY_EXTENDED_ATTRIBUTES_DISABLE=true

를 추가해서 해결봤다!

'개발개발 > Mac, iOS' 카테고리의 다른 글

BundleIdentifier로 앱 정보 구하기  (4) 2011.02.23
앱 설치 여부 구하기  (0) 2011.02.22
PreferenceLoader 사용법  (0) 2011.01.30
MobileSubstrate Extension with XCode  (0) 2011.01.07
cydia 앱, MobileSubstrate  (0) 2011.01.07
  1. 와... 2011.12.01 02:20

    님 짱인듯요

    이런 걸 어떻게 아시었지...?

    감사합니다.

+ Recent posts