How To Create a Cydia Repository

What is Repository (Repo) :

A way of a developer distributing apps through installer/cydia. For example: Once you(a Dev) makes a repo you put your apps in it then can distribute the link of the repo to others so they can install your apps via installer.

What you will need to start a Repo :

  • A computer running a Linux Distro ( maybe latest version of Ubuntu.)
  • A website where you have FTP access to host the repo
  • Files that you will copy to two directories on your Linux machine . Get them from here
  • Any app or theme, because nobody wants an emtpy repo

STEP 1 – Example

There is a folder “MyProgram” with all the files. In that there is a subfolder “DEBIAN“(Case-Sensetive — all caps) Which is required. This has a control file in it. The next subfoler is Library and inside that there is Themes (Because this is a theme and theme go to /library/themes). This has to be exactly like how its supposed to go on the iPhone .


control File

This is in the DEBIAN foler

It has The Following Fields

  • Package: this is the identifier of the package and should be all lower case. It is similar to the bundleIdentifier in Apple’s Info.plist file.
  • Name: the name of your program as seen in Cydia.
  • Version: program version number.
  • Architecture: this will probably always be “iphoneos-arm” if you are writing for firmware 1.2/2.x.
  • Depends: program(s) that need to be installed for your program to work such as “winterboard” if it is a theme.
  • Description: a description of your program (ignored if you use Depiction).
  • Homepage: sends the user to the page of the packager’s choice (ignored if you use Depiction).
  • Depiction: this loads a URL into an iframe in place Description and Homepage. You should use this to display custom links and/or screenshots.
  • Maintainer: package builder, person to contact for problems, format “Name <email address>”.
  • Author: wrote the software, same format as Maintainer.
  • Sponsor: financial provider for package, format “Name <website>.
  • Section: location in Cydia.

Now Switch over to linux

First you need to download this package

Extract the files from the archive and u should have dpkg-scanpackagesand

Open Terminal And run the following commands to copy the dpkg-scanpackages file to the /usr/bin folder and make it executable by changing permissions

sudo cp /home/username/Desktop/cydia-repo/dpkg-scanpackages /usr/bin

sudo chmod 0777 /usr/bin/dpkg-scanpackages

Then type:

sudo cp /home/username/Desktop/cydia-repo/ /etc/perl

sudo chmod 0777 /etc/perl/

to copy the file to the /etc/perl folder and make it executable

And your /usr/bin folder should look like

And your /etc/perl folder should look like

Create a folder in your home folder (lets call it cydia), create a sub-folder called apps for your apps and themes and another called upload for files going to your repository.

In upload create a folder deb

Place your app or theme in the apps folder.

Then open Terminal again and type

cd /home/username/cydia/apps

dpkg -b MyProgam

to change to the apps directory and build the .deb file (case sensetive)

In your apps folder u should see the new deb

Move the .deb file to the /home/username/cydia/upload/deb

In terminal type

cd /home/username/cydia/upload

dpkg-scanpackages -m . /dev/null >Packages

to build the Packages file

Browse to the upload folder and you should find your Packages file.

Then open Packages with “Text Editor” (right-click open with)
Check that Filename: says ./deb/MyProgram.deb.

Right-click the Packages file and choose “Create archive…”.
Change the file extension to .gz and click Create.

Now u have 3 packages in /home/username/cydia/upload/
deb, Packages, Packages.gz
Upload them to your website repo

Now Return To Windows
Create a text file called Release with your repository information.
When you save the text file, you must remove the “.txt” a the end of the file name if your editor automatically adds it to the file.

Here are brief descriptions of each field:

  • Origin: slightly longer version of your repo name.
  • Label: shorter version of repo name.
  • Suite: should always be “stable”.
  • Version: arbitrary version number.
  • Codename: put whatever you want here.
  • Architectures: should always be “iphoneos-arm”.
  • Components: should always be “main”.
  • Description: a short description of the repo.

Upload the Release file to your repository to the same location as the deb folder, Package file and Package.gz archive.

For more info on this please read Saurik’s page

PROPS TO maXimus for this tutorial