How to setup a FPC and Lazarus Ubuntu repository

From Free Pascal wiki
Jump to navigationJump to search

What is a repository?

A ubuntu repository is a directory. It can be stored on the lokal disk, or on a webserver or on a ftp server. To use it, you add its path into your /etc/apt/sources.list and setup a gpg key. Then you can simply install lazarus with your favourite package gui (e.g. synaptic) and fpc, fpc-src and lazarus will be downloaded, installed and updated automatically.

Who needs it?

Administrators who wants to install FPC+Lazarus on a pool of computers. Like in school. Or newbies who just want to quickly test it.

The directory structure

Let's assume you want create a repository available via the apache webserver. Then you need to setup a directory like /var/www/lazarus that is public readable and only writable by root.

Create the following sub directory:

 mkdir -p /var/www/lazarus/dists/lazarus-testing/universe/binary-i386

The debs

Put the fpc, fpc-src and lazarus deb files into it.

Creating the deb files yourself

You can create the debs with the scripts in tools/install/ of the lazarus sources.

  • install development packages:
 sudo apt-get install libgtk2.0-dev libgtk1.2-dev libgpmg1-dev fakeroot libncurses5-dev
  • Install the latest stable FPC. This is needed to build the new FPC and Lazarus:
 Either the deb files from the official site or the tar.gz.
  • Download the FPC sources. To get the current development version you can use the command below. To get a more stable version, see [[1]]:
 svn co http://svn.freepascal.org/svn/fpc/trunk fpc
  • Download the lazarus sources:
 svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus
  • go into the lazarus install script directory:
 cd lazarus/tools/install
  • build the fpc deb. The following script will build a single fpc deb using the date as version. As parameter you must specify the path of the FPC sources you downloaded above:
 ./create_fpc_deb.sh fpc /path/to/the/sources/of/fpc/
  • install the new fpc deb. This is needed to build the lazarus deb, which depends on the new fpc deb. Don't forget to uninstall first your old FPC.
 sudo dpkg -i fpc_2.3.1-070726_i386.deb
  • build the fpc-src deb. This works pretty much the same as above:
 ./create_fpc_deb.sh fpc-src /path/to/the/sources/of/fpc/
  • build the lazarus deb. You can either build a normal lazarus:
 ./create_lazarus_deb.sh append-revision

or a lazarus using gtk2:

 ./create_lazarus_deb.sh gtk2 append-revision
  • Now you have 3 deb files. Copy them to your repository:
 cp fpc_2.3.1-070726_i386.deb fpc-src_2.3.1-070726_i386.deb lazarus_0.9.23.11636-0_i386.deb \
   /var/www/lazarus/dists/lazarus-testing/universe/binary-i386/

Updating repository files

Put the following script into /var/www/lazarus, edit it for your needs and run it:

#!/usr/bin/env bash

GPGHome=/home/gaertner/.gnupg/
MainDir=dists/lazarus-testing
Dir=$MainDir/universe/binary-i386

# create index
apt-ftparchive packages $Dir > $Dir/Packages
cat $Dir/Packages | gzip -9c > $Dir/Packages.gz
cat $Dir/Packages | bzip2 > $Dir/Packages.bz2

# create Release file
rm -f $MainDir/Release*
Date=`date`
echo "Origin: Lazarus" >> $MainDir/Release
echo "Label: Lazarus" >> $MainDir/Release
echo "Suite: unstable" >> $MainDir/Release
echo "Codename: lazarus-testing" >> $MainDir/Release
echo "Version: 1.0" >> $MainDir/Release
echo "Date: $Date" >> $MainDir/Release
echo "Architectures: i386" >> $MainDir/Release
echo "Components: universe" >> $MainDir/Release
echo "Description: Lazarus testing 1.0" >> $MainDir/Release

apt-ftparchive release $MainDir >> $MainDir/Release

# sign Release file
gpg --sign --homedir=$GPGHome -ba -o $MainDir/Release.gpg $MainDir/Release

# end.