OpenACS Packaging for Debian and Ubuntu
Get all required software to run OpenACS into the next release of Ubuntu Server and Debian
- Debian: Dates are not published. Release cycle ~2 years. The required packages mostly exist already in unstable
- Ubuntu: Next Debian Import Freeze for the Hardy Heron (Ubuntu 8.04) release is December 13th 2007 at which point new versions of packages will be automatically imported from Debian unstable. After this date, packages will only be imported from Debian in this way by explicit request from a developer.
As far as we know to this point, there are several bodies of work, including Dirk Gomez's, Jim Lynch's, and some others. While our goal is to combine, for now I'll just put a list and as we begin to work together, we'll combine how we decide to.
- work of Jim Lynch
- A pair of scripts and some other stuff available as an arch repository (see applicable documentation on gnu arch and below for specifics on this project). Essentially, the plan is to package by taking everything in an openacs tarball except the packages/ dir, put that into a package called openacs-base, put each openacs package into its own package whose name is specified in the .info file and make a metapackage called openacs-core which installs all of the above.
- Overall, I want to be able to:
- feed an openacs tarball to one of these scripts and have it then generate a pile of debian packages which represent the entire tarball, and
- be able to package any openacs package that wouldn't otherwise come in (say) an openacs core tarball.
- Upon installation, there will be a script which builds a service by copying all of core into a dir specified in part by the user and in part based on the service name. In this process, the config file and startup scripts are established as well as the daemontools "run" script. A database for the service is created, and the service is started. From there, the new site admin will visit the site with the browser, fill out the form and hit "install data model" as is normal, and you end up with a running service after aolserver is hammered.
- All non-core packages can be built into debian packages as well, identically to the packaging of core packages.
- To get: (HI! Can someone besides me (jiml at cvs.openacs) see if this works?)
the archive's physical location is
the archive name (valid once you register the archive) is
and the category, branch and version is specified as
openacs-deb-packager--mainline--0.1so you would feed the physical location to "tla register-archive", and then you can "tla get email@example.com/openacs-deb-packager--mainline--0.1".
- combination (eventual goal hopefully)
List of Packages
The following table list the packages, and version, needed to install OpenACS 5.3/5.4 or .LRN 2.3/2.4
|Package||Version in debian/etch||Version in debian/sid (unstable)||Recommended Version|
|aolserver4-nsxml||1.5-1||1.5-1.0.1||NONE don't use nsxml|
|postgresql-8.1||8.1.9||postgresql-8.1 (8.1.10-1) AND postgresql (8.2.5-4)||I think Ubuntu has 8.2 now|
postgresql-client-8.1 (8.1.10-1) AND postgresql-client (8.2.5-4)
|postgresql-contrib-8.1||8.1.9||postgresql-contrib-8.1 (8.1.10-1) AND postgresql-contrib (8.2.5-4)||--|
Verifying installability on Debian 4rc3 sid/unstable
Basic installation steps for oacs-5-4 based on Debian 4rc3 unstable/sid:
- Existing binary dependencies in Debian 4rc3 unstable/sid repository (Feb 26, 2008)
~$ aptitude install tcllib postgresql-8.2 aolserver4 aolserver4-nscache aolserver4-nssha1 aolserver4-nspostgres tclthread tcllib
- Missing binary dependencies in Debian 4rc3 unstable/sid repository (Feb 26, 2008: tdom 0.8.x, xotcl):
# build dependencies: tdom aptitude install tcl-dev aolserver4-dev # fetch tdom 0.8.3 cd /tmp cvs -z3 -d:pserver:firstname.lastname@example.org:/usr/local/pubcvs co tdom cd tdom/unix # build tdom 0.8.3 ../configure --enable-threads --disable-tdomalloc --prefix=/usr/lib/aolserver4 --exec-prefix=/usr/lib/aolserver4 --with-aolserver=/usr/include/aolserver4 --with-tcl=/usr/lib make installb) xotcl (based on forthcoming Debian distribution )
# fetch temporary i386 builds from http://media.wu-wien.ac.at/download/debian wget http://media.wu-wien.ac.at/download/debian/xotcl_1.6.0-1_i386.deb wget http://media.wu-wien.ac.at/download/debian/aolserver4-xotcl_1.6.0-1_i386.deb # package install dpkg -i xotcl_1.6.0-1_i386.deb dpkg -i aolserver4-xotcl_1.6.0-1_i386.deb
- OpenACS as such ...
useradd oacs-5-4 mkdir /home/oacs-5-4 chown -R oacs-5-4.www-data /home/oacs-5-4 usermod -g web oacs-5-4 usermod -d /home/oacs-5-4 oacs-5-4
cd /home/oacs-5-4 cvs -d :pserver:email@example.com:/cvsroot co -r oacs-5-4 openacs-4 mv openacs4/* . su - postgres createuser -U postgres -s oacs-5-4 exit su - oacs-5-4 createdb -E UNICODE -U oacs-5-4 oacs-5-4
4. Set PostgreSQL backward compatibility flags (in postgresql.conf)
5. Whatever remains to be done (aolserver instance, edit config.tcl, ...)
Findings/ Issues related to dependency ensemble
- Need for Debian OpenACS policy document?
- config.tcl prototypes for debian/ubuntu (debian defaults might not be adequate, address and hostname settings etc.)
- environment spec (user, group names, ...)
- Distribution support roadmap
- PostgreSQL version support / version parallelism in Debian 4rc3 sid/unstable and Ubuntu 8.04+. To some extend, there is flexibility with respect to the OpenACS compatibility roadmap (whatever it looks like in the near future). Both Debian sid/unstable and, therefore, Ubuntu preserve postgresql-8.x versions in parallel (including 8.1, 8.2, and more recently 8.3). Two issues remain:
- Debian sid/unstable sets older PostgreSQL 8.x versions (for now < 8.3) to deprecated and issues an upgrade notification upon fetching and installing. Ubuntu 8.04+ is more silent in this respect.
- PostgreSQL Compatibility flags: In either case, OpenACS package will have to change the backward-compatibility settings of the Debian PostgreSQL installation on the target system.
- AOLServer deb installation (aolserver4 in Debian sid/unstable + Ubuntu 7.10 Gutsy): There is a permission issue in the post-installation routine of the aolserver4 package:
... Setting up aolserver4 (4.5.0-10ubuntu2) ... * Starting web server aolserver4 [21/Feb/2008:20:31:00][5197.3083830960][-main-] Notice: prebind: bound: 127.0.0.1:80 ...done. [21/Feb/2008:20:31:00][5198.3083830960][-main-] Error: log: failed to re-open log file '/var/log/aolserver4/aolserver4.log': 'Permission denied' [21/Feb/2008:20:31:00][5198.3083830960][-main-] Fatal: log: failed to open server log '/var/log/aolserver4/aolserver4.log': 'Permission denied' ...This only shows in post-installation phase, manual start|stop|restart work fine ... TODO: Verify again and report to package maintainer
- aolserver4-nspostgres package: The issue with ns*.so and libns*.so files specific to Aolserver 4.5 has been resolved in the aolserver4-* family of packages:
- In Debian sid/unstable: since version 4.5-1 on Jan 6, 2008
- In Ubuntu 8.04 Hardy before the Feature Freeze, on December 12, 2007
- Post 8.04 will import fixed version from Debian unstable (TODO: Verify with aolserver4-nspostgres maintainer)
- Issue of backport to Gutsy (depending on Distribution support plan)
Resurrecting tDOM Debian Package
Access to Debian source package (via svn/svn-buildpackage)
- SVN Browser at Debian Tcl/Tk Repository
- Steps to get your local working copy and build it using svn-buildpackage:
# 1. svn checkout to <current_dir>/tdom svn co svn://svn.debian.org/svn/pkg-tcltk/tdom/ # 2. create a dir for the original tarballs mkdir tarballs (<current_dir>/tarballs) cd tarballs # grab the orig tarball from the link:
mv tdom_0.8.3.orig.tar.gz?m=download tdom_0.8.3.orig.tar.gz
# 3. make sure you have svn-buildpackage and pbuilder installed and set-up # 4. build binaries from source package on trunk cd ../tdom/trunk
# When building the package, you have to use --svn-ignore when you have local changes that haven't been committed; otherwise you will get an error.
svn-buildpackage --svn-builder="pdebuild --buildresult `pwd`/../build-area" --svn-override=origDir=../../tarballs --svn-ignore# voilà
# When you're ready to see lintian warning/errors, add --svn-lintian to the build package command:
svn-buildpackage --svn-builder="pdebuild --buildresult `pwd`/../build-area" --svn-override=origDir=../../tarballs --svn-ignore --svn-lintian
# For linda warnings/erros, add --svn-linda to the build package command
svn-buildpackage --svn-builder="pdebuild --buildresult `pwd`/../build-area" --svn-override=origDir=../../tarballs --svn-ignore --svn-linda
- References on svn-buildpackage
- Auxiliary stuff
The orig file
Issues of legacy source package
- [Fixed] [carl] lintian warnings: "tdom: changelog should mention nmu"
W: tdom source: changelog-should-mention-nmu
W: tdom source: source-nmu-has-incorrect-version-number 0.8.3-1
The maintainer should be Avni Khatri and Carl Blesius <firstname.lastname@example.org>. Modify debian/changelog to reflect this. This has been fixed temporarily, but since a few us of will be committing, we will have to review the uploader/maintainer names later.
- [Fixed] [avni] lintian warnings: "tdom: bad distribution in changes file"
E: tdom_0.8.3-1_source.changes: bad-distribution-in-changes-file UNRELEASED
modify debian/changelog: change UNRELEASED to unstable on line 1
- [Fixed (local issue)][avni] lintian warnings: "tdom: directory pwd/../build-area does not exist"
W: Build-result Directory pwd/../build-area does not exist
Fix: To avoid using the --buildresult flag, you might put the following
line into your ~/.pbuilderrc:
(make sure you replace the "..." by your directory walk to the actual
- [Fixed by geoxito] [avni] lintian warnings: "tdom: package-contains-empty-directory *"
W: tdom: package-contains-empty-directory usr/bin/
W: tdom: package-contains-empty-directory usr/sbin/
the answer/ solution is simple. you have, simplisticly speaking, two ways of creating the "virtual" directory structures. By virtual, I refer to the the paths created under debian/tdom which then go into the binary (*.deb) packages. Either do it manually in the debian/rules file or use template files under debian. look at debian/dirs ... it contains two entries: usr/bin, usr/sbin ... voilà ... these are default settings, created the first time the original author debianized the package. but tdom is a so-called "internal library" package in debian jargon, there will never be anything in bin or sbin. so, simply remove the file or empty it!!!!
Which version to package: 0.8.2 / 0.8.3?it is going to be CVS Head/ 0.8.3
- [Fixed] [geoxito] Installation paths not compliant with Debian Tcl/Tk policy
and make sure that you change debian/rules etc. accordingly.
Most importantly, tcl package reside under /usr/lib/tcltk and not /usr/lib/ directly.
- [Fixed] [mr_calvin] Dedicated tdom-dev binary package. There needs to be a dedicated development binary package.
- Add tdom-dev entry in debian/control
- debian/rules needs to copy following files into tdom-dev paths:
- Btw. change the include path to /usr/include/tdom/*
and subsequently change the path settings in tdomConfig.sh through search/replace operations in debian/rules
(see my xotcl examples in http://svn.debian.org/viewsvn/pkg-tcltk/xotcl/trunk/debian/rules?rev=544&view=markup). watch out for perl commands in there ...
- [Fixed] [avni] Further lintian clean-up:
> W: tdom: manpage-has-errors-from-man usr/share/man/man3/dom.3.gz invalid option -wmac
> W: tdom: manpage-has-errors-from-man usr/share/man/man3/domDoc.3.gz invalid option -wmac
> W: tdom: manpage-has-errors-from-man usr/share/man/man3/domNode.3.gz invalid option -wmac
> W: tdom: manpage-has-errors-from-man usr/share/man/man3/expat.3.gz invalid option -wmac
> W: tdom: manpage-has-errors-from-man usr/share/man/man3/expatapi.3.gz invalid option -wmac
> W: tdom: manpage-has-errors-from-man usr/share/man/man3/tdomcmd.3.gz invalid option -wmac
> W: tdom: manpage-has-errors-from-man usr/share/man/man3/tnc.3.gz invalid option -wmac
Fix: seems to be fixed now.
- [Fixed] [mr_calvin] Expat integration: Using internal (expat 2.0.1 or 1.95) or external (1.95) libexpat (as provided by Debian); comment by Debian Tcl/Tk maintainers:
"As far as I understand, the current version uses internal expat. I
think it's unacceptable. We should use libexpat from Debian. An
example of patches which allow to use system-wide expat could be found
- [Fixed] [geoxito] Create tdom-doc package if possible. Fix: Not really needed, because there is no other tdom documentation apart the manpages.
These are instructions for installing the alpha dotlrn and openacs packages on debian (and ubuntu).
- Build and install tdom packages (see above, on "Resurrecting tdom").
- Set up a postgresql 8.2 server, and allow access for postgresql administrator user and openacs/dotlrn user from the machine where you are installing dotlrn/openacs (no need to create the dotlrn/openacs user and database).
- Modify your /etc/apt/sources.list file:
# debian sid deb http://debian.adenu.ia.uned.es/apt sid main # Ubuntu Hardy deb http://debian.adenu.ia.uned.es/apt hardy main
- Update the package list and install:
# apt-get update - dotLRN # apt-get install dotlrn
- OpenACS # apt-get install openacs
After that, just follow the instructions on the install ant have fun!