Creating the repositories

  1. Creating the directories

  2. Offering the repositories through Apache

    <VirtualHost *:80>
    
    ServerName cname.mydomain.com
    ServerAdmin webmaster@localhost
    
    DocumentRoot /srv/repo/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    
    Alias "/rug/" "/srv/repo/private/"
    <Directory "/srv/repo/rug/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128 # localhost
        <snip>
    </Directory>
    
    </VirtualHost>
    	  

  3. Configuring reprepro: the distros

    Put this in conf/distributions:

    Label: Karmic Koala
    Codename: karmic
    Suite: oldstable
    Components: main mirrored
    Architectures: i386 amd64 source
    Origin: LWP-karmic
    Version: 9.10
    Description: LWP private repository
    Contents:
    SignWith: yes
    
    Label: Karmic Koala Experimental Packages
    Codename: karmic-experimental
    Suite: oldstable-experimental
    Components: main mirrored
    Architectures: i386 amd64 source
    Origin: LWP-karmic-experimental
    Version: 9.10
    Description: LWP private repository
    Contents:
    SignWith: yes
    
    Label: Lucid Lynx
    Codename: lucid
    Suite: stable
    Components: main mirrored
    Architectures: i386 amd64 source
    Origin: LWP-lucid
    Version: 10.04
    Description: LWP private repository
    Contents:
    Update: opera
    # google tilburg colorado medibuntu
    SignWith: yes
    
    Label: Lucid Lynx Experimental Packages
    Codename: lucid-experimental
    Suite: stable-experimental
    Components: main mirrored
    Architectures: i386 amd64 source
    Origin: LWP-lucid
    Version: 10.04
    Description: LWP private repository
    Contents:
    #Update:
    SignWith: yes
    	  

    ... and do:

    user@server:~$ cd /srv/repo/private/ubuntu
    user@server:~$ sudo reprepro export
    user@server:~$ find -type f
    ./conf/updates
    ./conf/distributions~
    ./conf/distributions
    ./dists/lucid-experimental/Contents-i386.gz
    ./dists/lucid-experimental/Release.gpg
    ./dists/lucid-experimental/Contents-amd64.gz
    ./dists/lucid-experimental/mirrored/source/Release
    ./dists/lucid-experimental/mirrored/source/Sources.gz
    ./dists/lucid-experimental/mirrored/binary-i386/Packages.gz
    ./dists/lucid-experimental/mirrored/binary-i386/Release
    ./dists/lucid-experimental/mirrored/binary-i386/Packages
    ./dists/lucid-experimental/mirrored/binary-amd64/Packages.gz
    ./dists/lucid-experimental/mirrored/binary-amd64/Release
    ./dists/lucid-experimental/mirrored/binary-amd64/Packages
    ./dists/lucid-experimental/main/source/Release
    ./dists/lucid-experimental/main/source/Sources.gz
    ./dists/lucid-experimental/main/binary-i386/Packages.gz
    ./dists/lucid-experimental/main/binary-i386/Release
    ./dists/lucid-experimental/main/binary-i386/Packages
    ./dists/lucid-experimental/main/binary-amd64/Packages.gz
    ./dists/lucid-experimental/main/binary-amd64/Release
    ./dists/lucid-experimental/main/binary-amd64/Packages
    ./dists/lucid-experimental/Release
    ./dists/karmic/Contents-i386.gz
    ./dists/karmic/Release.gpg
    ./dists/karmic/Contents-amd64.gz
    ./dists/karmic/mirrored/source/Release
    ./dists/karmic/mirrored/source/Sources.gz
    ./dists/karmic/mirrored/binary-i386/Packages.gz
    ./dists/karmic/mirrored/binary-i386/Release
    ./dists/karmic/mirrored/binary-i386/Packages
    ./dists/karmic/mirrored/binary-amd64/Packages.gz
    ./dists/karmic/mirrored/binary-amd64/Release
    ./dists/karmic/mirrored/binary-amd64/Packages
    ./dists/karmic/main/source/Release
    ./dists/karmic/main/source/Sources.gz
    ./dists/karmic/main/binary-i386/Packages.gz
    ./dists/karmic/main/binary-i386/Release
    ./dists/karmic/main/binary-i386/Packages
    ./dists/karmic/main/binary-amd64/Packages.gz
    ./dists/karmic/main/binary-amd64/Release
    ./dists/karmic/main/binary-amd64/Packages
    ./dists/karmic/Release
    ./dists/karmic-experimental/Contents-i386.gz
    ./dists/karmic-experimental/Release.gpg
    ./dists/karmic-experimental/Contents-amd64.gz
    ./dists/karmic-experimental/mirrored/source/Release
    ./dists/karmic-experimental/mirrored/source/Sources.gz
    ./dists/karmic-experimental/mirrored/binary-i386/Packages.gz
    ./dists/karmic-experimental/mirrored/binary-i386/Release
    ./dists/karmic-experimental/mirrored/binary-i386/Packages
    ./dists/karmic-experimental/mirrored/binary-amd64/Packages.gz
    ./dists/karmic-experimental/mirrored/binary-amd64/Release
    ./dists/karmic-experimental/mirrored/binary-amd64/Packages
    <snip>                

  4. Fetching some packages from other repositories into ours

    Put this in conf/updates:

    Name: opera
    Method: http://deb.opera.com/opera
    #Fallback: ftp://klecker.debian.org/debian-security
    Suite: stable
    #VerifyRelease: A99951DAF9BB569BDB50AD90A70DAF536070D3A1|7EA391D72477203B58C04FBCB5D0C804ADB11277
    Architectures: amd64 i386
    Components: non-free>mirrored
    #UDebComponents: none
    	  

    ... then do:

  5. Uploading packages

    1. Create conf/incoming like this:

      Name: lucid-upload
      IncomingDir: /srv/upload/repo/lucid/lwp-experimental
      TempDir: /var/tmp/repo/lucid/lwp-experimental
      Allow: experimental>lucid-experimental stable>lucid
      Default: lucid-experimental
      Multiple: Yes
      Permit: older_version unused_files
      Cleanup: on_deny on_error unused_files
      	      

    2. Then create the needed directories:

  6. Arrange ownership

  7. Calling processincoming by hand

  8. Getting processincoming called upon upload

    [Note]Note

    use --debbuildopts -sa to include .orig.tar.gz.

  9. Starting inoticoming on boot

    /etc/cron.d/inoticoming:

    MAILTO=j.bokma@rug.nl
    
    @reboot root /usr/bin/inoticoming --logfile /srv/repo/rug/ubuntu/logs/lucid-upload.log /srv/upload/repo/lucid/lwp-experimental/ --stderr-to-log --stdout-to-log --suffix '.changes' --chdir /srv/repo/rug/ubuntu reprepro -b /srv/repo/rug/ubuntu --waitforlock 100 processincoming lucid-upload {} \;
    	  

  10. Completely removing a package