Eddig azt hittem, hogy sokkal bonyolultabb egy Cydia repository-t működésre bírni. Néhány kezdeti próbálkozás és sikertelen kísérlet után végre elindult az első működő verzió.
Nem kell hozzá más, mint egy webszerver, ahol el fogjuk helyezni az APT repository-t. Talán nem árultam el nagy titkot, hogy a Debian APT csomagolástechnika a mechanizmus alapja.
Talán az első és egyben legkönnyebb lépés a DEB csomag létrehozása. Ez úgy történik, hogy egy könyvtárban létre kell hozni azt a könyvtárstruktúrát, amit a telefonon kell elhelyezni. Nézzük meg egy példán keresztül, ami nem más, mint a magyar telefonszámformátumok elhelyezése! Ehhez létrehoztam egy “hunnum” nevű könyvtárat, amin belül pedig a “System/Library/Frameworks/UIKit.framework/PhoneFormats” szerkezetet építettem fel, ahol a már ismert UIFormatPhones.plist file-t helyeztem el. Röviden és tömören ezt értettem az installálandó struktúra alatt. A második lépés a control file elkészítése, ami információkat tartalmaz a csomagról. Ezt szintén a “hunnum” könyvtárban kell elhelyezni, de neki a “DEBIAN” alkönyvtárat kell elhelyezni és benne egy “control” nevű file-ra van szükség. Ez nálam így néz ki.
Package: com.szifon.comnlocalization
Name: Hungarian Number Localization
Version: 1.0
Architecture: iphoneos-arm
Description: Magyar telefonszám-lokalizáció.
Homepage: http://szifon.com/?p=658
Maintainer: tHeShAdOw <theshadow@citromail.hu>
Section: Localization
- Package: csomag azonosító
- Name: Ez jelenik meg a repository csomagjainak listájában, mint megnevezés
- Version: Verziószám
- Architecture: darwin-arm az 1.1.x firmware esetében, míg iphoneos-arm 1.2 és 2.x esetében
- Description: A csomag részleteinek böngészésekor látható bővebb leírás. Javaslom, hogy sortöréseket ne tartalmazzon, hiszen megjelenítéskor automatikusan tördelődik.
- Homepage: Ez annak az oldalnak az URL-je, amire a “More Information” irányítja az érdeklődőt.
- Maintainer: A csomag készítőjének elérhetősége (email cím)
- Author: A csomag tartalmának a fejlesztője (email cím)
- Section: A szekció neve, ahova a csomag a nagy, összesítő listába kerül. Ez bármilyen tetszőleges megnevezés is lehet.
- Icon: Egy ikon (64×64-es PNG) URL-je vagy a telefonon meghatározott (file://) helye
Innen még lehet puskázni további beállítások végett.
Ha ezzel elkészültünk tovább léphetünk a csomag elkészítéséhez, amihez terminálban az alábbi parancsokat kell kiadni.
find . -type f -name .DS_Store | xargs rm
export COPY_EXTENDED_ATTRIBUTES_DISABLE=1
dpkg-deb -b hunnum
Az első és második sor funkciója MacOSX-en lényeges, mert ez kapcsolja ki, hogy .DS-Store és hasonló rendszerfile-ok is a csomagba kerüljenek. Ezekre nincs szükség a telefonon. A harmadik sorral pedig a deb file készül el. Fontos, hogy a csomag könyvtárán kívül állva indítsuk el ezt. A control file néhány információs mezője miatt figyelmeztetéseket kapunk, de ezzel nem kell törődni, ez természetes. Ezzel elkészült a hunnum.deb (a későbbiekben ez átnevezhető) de most tegyük félre egy rövid időre, amíg a web szerveren a repository helyét elkészítjük.
A repository gyökerében hozzunk létre egy Release nevű file-t.
Origin: 1phone Cydia Source
Label: 1phone Source
Suite: stable
Version: 1.0
Architectures: darwin-arm iphoneos-arm
Components: main
Description: Az első magyar Cydia forrás
- Origin: Cydia-ban ez jelenik meg a forrás neveként
- Label: A csomagok listáján a csomag neve alatt ez mutatja, hogy melyik forrásból származik
- Suite: Ez mindig legyen “stable”
- Version: Nincs igazán jelentősége, legyen 1.0
- Codename: Még nem egészen világos a funkciója, de egyébként is opcionális
- Architectures: Az összes architektúra azonosítója, ami a repository-ban előfordul (azokkal az értékekelle, amit már előzőleg említettem)
- Component: Nincs használatban, de a “main érték javasolt”
- Description: Egy kis leírás a repo-ról.
Most térjünk vissza a deb file-hoz és amelyik könyvtárban megtalálható, ott adjuk ki a következő utasítást.
dpkg-scanpackages . /dev/null >Packages
Esetleg egy -m vagy -u kapcsolóra szükség lehet, gondolom ez dpkg-scanpackages implementáció függő. Létrehoz egy Packages nevű file, ami lényegében a control file-t tartalmazza a Filename, Size és MD5sum mezőkkel kiegészítve. Valójában ez a tool felépítené a Packages file-r, de nem szeretem, ha ő nyúl hozzá, mert néhány mezőnevet elront, méghozzá azokat, amelyeket előzőleg warning-ban láthattunk. Nos, én úgy jártam el, hogy a Packages file-t megnyitottam egy szerkesztővel (nano) és ezen mezőnevek kezdőbetüjét átírtam nagyra és a Filename mezőben az útvonalat úgy módosítottam, hogy a repo web gyökérkönyvtárától relatíven mutassa a deb file helyét (vagyis tetszőleges alkönyvtárba tehetjük a deb file-okat). Az akció után így néz ki a file tartalma.
Package: com.szifon.comnlocalization
Version: 1.0
Section: Localization
Maintainer: tHeShAdOw <theshadow@cintromail.hu>
Architecture: iphoneos-arm
Filename: main/hunnum.deb
Size: 2724
MD5sum: 7ad090f6d80a5034f9982571064bacc6
Description: Magyar telefonszám-lokalizáció.
Name: Hungarian Number Localization
Homepage: http://szifon.com/?p=658
Amit eddig még nem említettem, az most jól látszik. A Release, contol és ezzel együtt a Packages file UTF-8 karaktereket tartalmazhat, tehát a magyar ékezetes leírások is helyesen fognak megjelenni a telefonon, tehát a Description-ben látható kriksz-krakszok miatt nem kell aggódni.
Ezt a file-t helyezzük el a repo gyökerében és tömörítsük bzip2-vel
bzip2 -kf Packages
Itt jól látható, hogy az eredeti file-t megtartom, mert a továbbiakban az új csomagok leírását a végéhez csatolva csak újra kell tömöríteni. Így egyszerűvé válik a Packages leíró karbantartása.
Azért, hogy megelőzzük azokat a szituációkat, hogy a csomag nincs a helyén és valaki, akinek gyors a keze, próbálja letölteni a csomagot, ezért jobb a Packages modosítása előtt elhelyezni a deb file-(ok)at.
Így már van egy működő repository, aminek a kívülről látható URL-jét a Cydia-ban regisztrálni kell.
Kérdések, amik felmerülhetnek:
- Csomag frissítése. Ez vajon hogyan törénik? Új csomag hozzáadása vagy a régi leírójának cseréje és a Cydia a verziószám növeléséből rájön, hogy frissíteni kell?
Válasz: Az előzővel megegyező control file-lal (természetesen friss tartalmú) DEB file-t kell létrehozni és az új verzióval ellátott Packages bejegyzést kell a file-ba írni. A régit nem kell megtartani, más repository-kban sem láttam, hogy a Packages file-ban szerepelt volna. Így a Cydia frissülő csomagként mutatja (előzőt rendesen uninstallálja, az újat pedig installálja).
- Említették, hogy a Cydia azért jobb, mert csomagfüggőségeket is tud kezelni. Ezt hogyan lehet meghatározni?
Válasz: A control illetve a packages file-ban meg lehet határozni, hogy “Depends: [package name] [(>= version number)]” vagyis egy másik Package értékre kell hivatkozni. (referencia)
- A példa csak egyszerü file másolásokat mutatott. Van mód install/uninstall/backup/restore scriptek alkalmazására?
Válasz: preinst, postinst, prerm és postrm nevű scripteket is el lehet helyezni a DEBIAN csomagkönyvtárban(referencia). Ezek ahogy a nevük is mutatja installálás előtt, után és eltávolítás előtt, után hívódnak meg. A jogosultságukat ne feledjük 755-re vagy 775-re állítani.
Természetesen a leírtaknál bonyolultabb repository szerkezet is létrehozható, de ezt az egyszerübb struktúrát választottuk, mert így sokkal könnyebben bárki hozzáadhatja a Cydia forrásokhoz a címét. Az összetettebb szerkezet esetén a regisztrálás nem triviális módon történik.
13 Comments
Hello!
Mi a teendő, ha nincs a mac-on “dpkg”, vagy legalább is nem tudom működésre bírni.
Minden segítséget előre is köszönök,
b
megtaláltam: a fink (http://www.finkproject.org/download/index.php?phpLang=en) kell hozzá…
ezt windowson nem lehet?
@peti01:
Debian alapú Linuxon nem?Mert akkor fel is rakom:-)
Please HELP!
Nekem az a gondom, hogy a világért sem csinál deb fájlt, és meg is akadtam.
Ezt írja ki a terminál:
Last login: Mon Oct 19 21:58:27 on ttys000
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = (unset),
LANG = “UTF-8”
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).
macs-mac-mini:~ mac$ find . -type f -name .DS_Store | xargs rm
macs-mac-mini:~ mac$ export COPY_EXTENDED_ATTRIBUTES_DISABLE=1
macs-mac-mini:~ mac$ dpkg-deb -b hunnum
/sw/bin/dpkg-deb: failed to open package info file `hunnum/DEBIAN/control’ for reading: No such file or directory
macs-mac-mini:~ mac$
Próbaképen minden adatot ugyanúgy másoltam gépeltem be, ahogy itt van.
Mi az ami nem jó ebben?
Ha valaki tud segíteni, az kérem írjon a tealista kukac gmail pont coom címemre is, aztán majd a csevegőben pontosítani tudok.
Aztán közben rájöttem, hogy nem jó helyen voltam.
Kiléptem a Desktop-ra, vagyis cd /Users/mac/Desktop, ott voltam, és akkor futtattam le a
find . -type f -name .DS_Store | xargs rm
export COPY_EXTENDED_ATTRIBUTES_DISABLE=1
dpkg-deb -b hunnum
de semmi, illetve ugyan az a hiba, ami előtte:
/sw/bin/dpkg-deb: failed to open package info file `hunnum/DEBIAN/control’ for reading: No such file or directory
pedig a mappák megvannak, a control fájl, kiterjesztés nélkül, és a fenti sorokkal ki van töltve, de nem müxik a dolog.
Mi lehet a gond?
Leopard 10.5.5-öt használok.
tHeShAdOw, admin, vagy valaki segítsen!
@peti01: nem kell hozzá se linux se mac hogy deb fájlt létrehozz elég a szifonod csak kis olvasás kell a témához !
@igali: control fájlban hiba lehet a szöveg résznél !
@Ginopapa:
Talán sikerül valamit csinálnom 😉
Legalábbis én Windows alatt csináltam meg, ezt a hunnum-ot. Ez már megy is.
próba képen szerettem volna háttérkép pack-ot.
Mindent meg is csináltam, de mikor betölti a cydia a repo-t, ott is van a háttérkép pack, de mikor jobban belemegyek, akkor kiírja, hogy helytelen azonosító.
nem értem, hisz azonosítottam. Aztán ha telepíteni akarom, akkor meg Error Size-t ír.
A méretet az bájt méretben kell megadni nem?
1Kb az 1024 bájt nem, vagy rosszul tudom?
Azonosítás során a háttérkép pack-om, a deb fájl 220.72 Kb-ot számolt, ezt ezt szorozzam meg 1024-el?
Ha tudsz ebben egy kicsit segíteni, adsz egy email címet, msn címet, és felkeresnélek!
Ja, és hogyan tudok törölni? mert az a csomag nem jó, vagyis a háttérkép pack, hiába írom át a Packages-ben a fájl méretét, majd indítom újra a cydiat, frissítek, de ugyan azt a méretet mutatja, ami először volt,
Miért nem frissít, és veszi a lapot, hogy már nincs fent az a deb, és a packages-ben sem a leírás?
És ha átírom benne a fájl méretét, akkor miért nem a legutolsó adat szerint töltődik be?
Tudom, kissé fura kérdések, de annál furcsábbak, és érthetetlen… pfff… :S
@igali: outlaw kukac maffia pont hu ha admin engedi akkor nem lesz tiltva a cimem ! vegyél fel és ott megmutatom hogy lehet winscp-vel deb fájlt létrehozni vagy cydiarepot is akár ! Adok majd oldal cimeket ahol szépen értelmesen le van irva hogy lehet icon packot létrehozni !
@Ginopapa:
Köszönöm!
Amúgy emiatt nem hinném, hogy törölné a hozzászólást, hisz semmi rosszat nem tettél, sőt lehet, hogy emiatt még mások is meg keresnek 😛 😉
Köszönöm, és élni fogok a lehetőséggel, fogok írni, csak most nagyon hulla vagyok :S
Holnap írok neked!
Köszi!
@Ginopapa:
PM ment! 😉