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 .
STEP 2
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 dpkg-gettext.pl
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/dpkg-gettext.pl /etc/perl
sudo chmod 0777 /etc/perl/dpkg-gettext.pl
to copy the dpkg-gettext.pl 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