There has been a new release of Roundcube: https://roundcube.net/news/2016/09/28/updates-1.2.2-and-1.1.6-published

I have updated the OBS packages with this version, and you can run yum update or apt-get update && apt-get upgrade depending on your Linux OS.

Read the rest of this entry »

Tags: , , ,
Posted in Hosting, Software Development | Comments Closed
Tags: , , ,
Posted in Hosting, Software Development | Comments Closed

There has been a new release of Roundcube: https://roundcube.net/news/2015/12/26/updates-1.1.4-and-1.0.8-released/

I have updated the OBS package with this version, and you can run yum update or apt-get update && apt-get upgrade depending on your Linux OS.

For more details about how to create such an update, or how to work around the issue when Roundcube has been updated in the OS already but not yet in the Kolab OBS, have a look at my older blog post: http://www.pokorra.de/2015/10/new-roundcube-1-1-3-release-for-kolab-3-4-updates/

Tags: , ,
Posted in Hosting, Software Development | Comments Closed

First I want to say that I am glad that there is https://obs.kolabsys.com, the OBS instance maintained and sponsored by Kolab Systems. Jeroen put a lot of work into making that system work.

Unfortunately, it seems Jeroen is the only one maintaining it. And that is not a healthy situation, in several regards:

On Wednesday, we have seen OBS hang, and Jeroen had to restart it during his holidays. At least that is what I suspect, there has not been any response on the mailing list or IRC to our questions about the downtime. That is not right for any employee to have to do such tasks during his well deserved holidays.

The other point is updating the operating systems: CentOS 7.2 is out, and the current installation of Kolab on CentOS7 does not work, due to incompatibilities with newer CentOS 7.2 packages. The libcalendaring package would need a rebuild against CentOS 7.2. See for details: http://lists.kolab.org/pipermail/users/2015-December/020317.html

I see several options:

  • Kolab Systems hires more Sysadmin engineers to maintain the growing complexity of servers and build infrastructure.
  • Or trusted members of the community get permission to add new operating systems to OBS, and to restart the server. On the other hand, that is a complex installation, and with enterprise customers also using the Kolab Systems OBS, I don’t think that is a valid alternative
  • I am developing my own LightBuildServer (aka LBS), which could allow everyone to easily install his own building environment for various Operating Systems. I am building Kolab packages on LBS, even some private packages for use at TBits.net patched with our (public) ISP extensions for Kolab. But again this is risky, as long I am the only one developing it.
  • At least for CentOS/Fedora, we could use the Fedora infrastructure provided by RedHat. That gives us the benefit of quick availability of the latest releases of the OS, and that it is maintained and used by many people. It is possible to duplicate a Copr repository, if you need to fix something yourself.

So I tried to mirror the Kolab packages from the OBS to Copr. My goal is to still maintain the sources of the packages at OBS, so that everyone can benefit from the fixes. But I will get the source rpms, and build them for CentOS and Fedora at my Copr repository. It is also split into a Release and an Update Repository.

I have documented the process here: https://github.com/TBits/KolabScripts/tree/Kolab3.4/copr#build-instructions

A quick summery of those instructions:

I have written a script that will

  1. download the source rpms from OBS (http://obs.kolabsys.com/repositories/Kolab:/3.4/CentOS_7/src/ and http://obs.kolabsys.com/repositories/Kolab:/3.4:/Updates/CentOS_7/src/)
  2. process the source rpms and tell you the right order of building the packages, which is something Copr cannot do
  3. upload the source rpms to my webspace at fedorapeople.org: https://tpokorra.fedorapeople.org/kolab/kolab-3.4/ and https://tpokorra.fedorapeople.org/kolab/kolab-3.4-updates/

Then I build the packages in the prescribed order at https://copr.fedoraproject.org/coprs/tpokorra/Kolab-3.4/ and https://copr.fedoraproject.org/coprs/tpokorra/Kolab-3.4-Updates/

Currently the Fedora 23 packages don’t build yet completely. I need to look into this later.

The CentOS6 and CentOS7 packages should be fine, I just tested them with clean machines!

Here are the installation instructions: https://github.com/TBits/KolabScripts/tree/Kolab3.4/copr#installing-kolab-from-the-copr-repositories

At last, I want to mention that I had to only add one missing source rpm, for CentOS6. see details at https://github.com/TBits/KolabScripts/tree/Kolab3.4/copr#python-pyasn1

The other packages are identical to the ones at OBS, apart from the CentOS7 packages built against CentOS 7.2, so that should be a direct improvement to the OBS packages.

 

Tags: , , ,
Posted in Software Development | Comments Closed

This post is about the latest Mono release, and its availability for older Linux distributions.

Thankfully, Xamarin provides Mono packages for the most current Linux distributions at http://www.mono-project.com/download/#download-lin

I used to build mono-opt for Debian, Ubuntu, CentOS, Fedora and OpenSUSE, since July 2013 (see http://lists.ximian.com/pipermail/mono-list/2013-July/050114.html).

The long-term goal has always been to get Mono integrated directly into the Linux distributions. Therefore I decided to get involved with Fedora and CentOS, which I use for most of my servers.

As a result, we now have Mono 4.0.5 and MonoDevelop 5.9 in Fedora 23, and we (Claudio and myself) are working on getting Mono 4.2 and MonoDevelop 5.10 into Fedora 24. The next step would be to get Mono updated in Epel as well, so that you can use uptodate packages of Mono on CentOS too.

I am glad to see that things are happening on the Debian side as well, with Mono 4.2.1 in the experimental branch: https://packages.debian.org/search?keywords=mono-complete

OpenSUSE has Mono 4.0.4 in Leap 42.1: https://software.opensuse.org/package/mono-complete

So things are looking good!

I decided to use the infrastructure of the Fedora project for the CentOS mono-opt packages. You can find uptodate Mono and MonoDevelop packages for CentOS6 and CentOS7 at https://copr.fedoraproject.org/coprs/tpokorra/mono-opt/. There are also Mono packages for CentOS5, but no MonoDevelop for CentOS5.
This replaces the mono-opt packages for CentOS5 at https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt which I will not be maintaining anymore over there.

For Fedora users, Claudio and myself do maintain a repository with the latest Mono and MonoDevelop here: https://copr.fedoraproject.org/coprs/tpokorra/mono/

For Ubuntu 12.04, Mono llvm does not build anymore, because it requires GCC with at least version 4.7. At the moment I don’t have a reason to build Mono and MonoDevelop for Ubuntu 12.04 anymore. I will also not build packages for Ubuntu non-LTS releases. If you need it, email me, and we can discuss.

So here are the updated packages:

Tags: , ,
Posted in Software Development | Comments Closed

There have been new stable releases of Mono and MonoDevelop: https://releases.xamarin.com/stable-release-cycle-5-service-release-4/

I have updated the mono-opt and monodevelop-opt packages.

You can install it from OBS: have a look at the instructions here: https://software.opensuse.org/download.html?project=home%3Atpokorra%3Amono&package=mono-opt

To use mono-opt, you need to call the environment script first (mind the space between the dot and the slash…):

. /opt/mono/env.sh

Package names for RPM based systems:

  • CentOS6 and CentOS7
  • Fedora 21 and Fedora 22
  • OpenSUSE 13.1 and OpenSUSE 13.2
yum install mono-opt monodevelop-opt mod_mono-opt mono-basic-opt mono-nant-opt mono-tools-opt mono-uncrustify-opt mono-xsp-opt nunit-opt nuget-opt

Just for OpenSUSE, there is also a mono-opt-devel package. For all other rpm based distributions, I deliver the devel files within the mono-opt package.

Package names for Debian based systems:

  • Debian Wheezy (7) and Debian Jessie (8)
  • Ubuntu 12.04, Ubuntu 14.04, Ubuntu 14.10 and Ubuntu 15.04
apt-get install mono-opt monodevelop-opt modmono-opt mono-basic-opt mono-nant-opt mono-tools-opt mono-uncrustify-opt mono-xsp-opt nunit-opt nuget-opt

 

mono-opt for CentOS5

I have also updated mono-opt for CentOS5, which I build on my LBS server. You can install the latest version following the instructions at https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt:

wget https://download.solidcharity.com/repos/tpokorra/mono/centos/5/lbs-tpokorra-mono.repo -O /etc/yum.repos.d/lbs-tpokorra-mono.repo
yum install mono-opt

 

Tags: , ,
Posted in Software Development | Comments Closed

There have been new stable releases of Mono and MonoDevelop: https://releases.xamarin.com/stable-release-cycle-5-service-release-2/

I have updated the mono-opt and monodevelop-opt packages.

You can install it from OBS: have a look at the instructions here: https://software.opensuse.org/download.html?project=home%3Atpokorra%3Amono&package=mono-opt

To use mono-opt, you need to call the environment script first (mind the space between the dot and the slash…):

. /opt/mono/env.sh

Package names for RPM based systems:

  • CentOS6 and CentOS7
  • Fedora 21 and Fedora 22
  • OpenSUSE 13.1 and OpenSUSE 13.2
yum install mono-opt mono-opt-devel monodevelop-opt mod_mono-opt mono-basic-opt mono-nant-opt mono-tools-opt mono-uncrustify-opt mono-xsp-opt nunit-opt nuget-opt

Package names for Debian based systems:

  • Debian Wheezy (7) and Debian Jessie (8)
  • Ubuntu 12.04, Ubuntu 14.04, Ubuntu 14.10 and Ubuntu 15.04
apt-get install mono-opt monodevelop-opt modmono-opt mono-basic-opt mono-nant-opt mono-tools-opt mono-uncrustify-opt mono-xsp-opt nunit-opt nuget-opt

Fix for building Debian packages on OBS:

There has been a change on OBS, resulting in lintian errors now failing the build.

For more details see https://github.com/openSUSE/open-build-service/issues/944

The solution for me was:

osc meta prjconf -e
  # insert this line:
  Support: !lintian

You can see and set this setting also in the web UI: https://build.opensuse.org/project/prjconf/home:tpokorra:mono

mono-opt for CentOS5

I have also updated mono-opt for CentOS5, which I build on my LBS server. You can install the latest version following the instructions at https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt:

wget https://download.solidcharity.com/repos/tpokorra/mono/centos/5/lbs-tpokorra-mono.repo -O /etc/yum.repos.d/lbs-tpokorra-mono.repo
yum install mono-opt mono-opt-devel

 

Tags: , ,
Posted in Software Development | Comments Closed

On the Kolab IRC we have had some issues with apt-get talking about connection failed etc.

So I updated the blogpost from last year: http://www.pokorra.de/2013/10/downloading-from-obs-repo-via-php-proxy-file/

The port of the Kolab Systems OBS is now port 80, so there is not really a need for a proxy anymore. But perhaps it helps for debugging the apt-get commands.

I have extended the scripts to work for apt-get on Debian/Ubuntu as well, the original script was for yum only it seems.

I have setup a small php script on a server somewhere on the Internet.

In my sample configuration, I use a Debian server with Lighttpd and PHP.

Install:

apt-get install lighttpd spawn-fcgi php5-curl php5-cgi

changes to /etc/lighttpd/lighttpd.conf:

server.modules = (
        [...]
        "mod_fastcgi",
        "mod_rewrite",
)
 
fastcgi.server = ( ".php" => ((
                     "bin-path" => "/usr/bin/php5-cgi",
                     "socket" => "/tmp/php.socket",
                     "max-procs" => 2,
                     "bin-environment" => (
                       "PHP_FCGI_CHILDREN" => "16",
                       "PHP_FCGI_MAX_REQUESTS" => "10000"
                     ),
                     "bin-copy-environment" => (
                       "PATH", "SHELL", "USER"
                     ),
                     "broken-scriptfilename" => "enable"
                 )))
 
url.rewrite-once = (
    "^/obs\.kolabsys\.com/index.php" => "$0",
    "^/obs\.kolabsys\.com/(.*)" => "/obs.kolabsys.com/index.php?page=$1"
)

and in /var/www/obs.kolabsys.com/index.php:

<?php 
 
$proxyurl="http://kolabproxy2.pokorra.de";
$obsurl="http://obs.kolabsys.com";
 
// it seems file_get_contents does not return the full page
function curl_get_file_contents($URL)
{
    $c = curl_init();
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($c, CURLOPT_URL, str_replace('&#038;', '&#038;', $URL));
    $contents = curl_exec($c);
    curl_close($c);
    if ($contents) return $contents;
    else return FALSE;
}
 
$page = $_GET['page'];
$filename = basename($page);
debug($page . "   ".$filename);
$content = curl_get_file_contents($obsurl."/".$page);
if (strpos($content, "Error 404") !== false) {
	header("HTTP/1.0 404 Not Found");
	die();
}
if (substr($page, -strlen("/")) === "/")
{
        # print directory listing
        $content = str_replace($obsurl."/", $proxyurl."/obs.kolabsys.com/", $content);
        $content = str_replace('href="/', 'href=$proxyurl."/obs.kolabsys.com/', $content);
        echo $content;
}
else if (substr($filename, -strlen(".repo")) === ".repo")
{
        header("Content-Type: plain/text");
        echo str_replace($obsurl."/", $proxyurl."/obs.kolabsys.com/", $content);
}
else
{
#die($filename);
        header("Content-Type: application/octet-stream");
        header('Content-Disposition: attachment; filename="'.$filename.'"');
        header("Content-Transfer-Encoding: binary\n");
        echo curl_get_file_contents($obsurl."/".$page);
}
 
function debug($msg){
 if(is_writeable("/tmp/mylog.log")){
    $fh = fopen("/tmp/mylog.log",'a+');
    fputs($fh,"[Log] ".date("d.m.Y H:i:s")." $msg\n");
    fclose($fh);
  }
} 
?>

Now it is possible to download the repo files like this:

cd /etc/yum.repos.d/
wget http://kolabproxy2.pokorra.de/obs.kolabsys.com/repositories/Kolab:/3.3/CentOS_6/Kolab:3.3.repo
wget http://kolabproxy2.pokorra.de/obs.kolabsys.com/repositories/Kolab:/3.3:/Updates/CentOS_6/Kolab:3.3:Updates.repo
yum install kolab

For Ubuntu 14.04:

echo "deb http://kolabproxy2.pokorra.de/obs.kolabsys.com/repositories/Kolab:/3.3/Ubuntu_14.04/ ./" > /etc/apt/sources.list.d/kolab.list
echo "deb http://kolabproxy2.pokorra.de/obs.kolabsys.com/repositories/Kolab:/3.3:/Updates/Ubuntu_14.04/ ./" >> /etc/apt/sources.list.d/kolab.list
apt-get install kolab

This works for all other projects and distributions on obs.kolabsys.com too.

Tags: ,
Posted in Software Development | Comments Closed

In this blog post, I want to describe some of the workarounds I need to do to release the latest mono and monodevelop packages on OBS.

For more details on this project from a using perspective, see:
Easy installation of current Mono and MonoDevelop for all major Linux Distributions

The download of the source files is specified in the _service file, eg. https://build.opensuse.org/package/view_file/home:tpokorra:mono/mono/_service?expand=1

The problem is that sometimes the tarballs are not available on http://download.mono-project.com/sources/mono or http://download.mono-project.com/sources/monodevelop, especially for the Alpha releases.

As long as you can find a tagged release at Github, you can build your own tarball (eg. on CentOS):

Preparations:

wget -O /etc/yum.repos.d/home:tpokorra:mono.repo http://download.opensuse.org/repositories/home:tpokorra:mono/CentOS_CentOS-6/home:tpokorra:mono.repo
yum install git-core automake autoconf libtool tar which gcc-c++ gettext mono-opt bzip2

For Mono:

git clone https://github.com/mono/mono.git
cd mono 
git checkout -b tarball mono-3.2.5
./autogen.sh
. /opt/mono/env.sh
make dist

And for MonoDevelop:

git clone https://github.com/mono/monodevelop.git
cd monodevelop
git branch tarball monodevelop-4.3.0
git checkout tarball
. /opt/mono/env.sh
./configure
make dist

I have uploaded the resulting tarballs to http://download.pokorra.de/mono/tarballs/, and my _service files are now referencing that location if the official source directory is missing the tarball or the tarball is broken.

Tags: , , ,
Posted in Software Development | Comments Closed

Build OBS packages locally for CentOS   November 13th, 2013

Sometimes it is just quicker to test the building of a CentOS package locally, than to wait for the OBS server to build it.
You also get a chance to search the BUILD directory for files that you might be missing.

I have written how to do this for Debian in an earlier post (see near the bottom): http://www.pokorra.de/2013/10/howto-improve-debian-packages-using-obs/

See also http://software.opensuse.org/download?package=osc&project=openSUSE%3ATools how to install osc for all sorts of Linux distributions!

For CentOS, you do this:

cd /etc/yum.repos.d/
wget http://download.opensuse.org/repositories/openSUSE:Tools/CentOS_6/openSUSE:Tools.repo
yum install osc build
osc -A https://obs.kolabsys.com:444/ checkout home:timotheus:branches:Kolab:Development
cd home:timotheus:branches:Kolab:Development/kolab-utils
osc build CentOS_6 x86_64 kolab-utils.spec --no-verify

Without the –no-verify parameter, you get errors like these:

/var/tmp/osbuild-packagecache/CentOS:6/release/x86_64/acl-2.2.49-6.el6.x86_64.rpm : public key not available
/var/tmp/osbuild-packagecache/CentOS:6/release/x86_64/attr-2.4.44-7.el6.x86_64.rpm : public key not available
[...]

By the way, you find the BUILDROOT in:

/var/tmp/build-root/CentOS_6-x86_64/home/abuild/rpmbuild/BUILDROOT/
Tags: , ,
Posted in Software Development | Comments Closed