fbpx Skip to content

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.

Olvasd el a hozzászólásokat is

13 Comments

  1. 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

  2. ezt windowson nem lehet?

  3. @peti01:
    Debian alapú Linuxon nem?Mert akkor fel is rakom:-)

  4. 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.

  5. 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!

  6. @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 !

  7. @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!

  8. 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

  9. @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 !

  10. @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!

  11. @Ginopapa:
    PM ment! 😉


Add a Comment