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('&', '&', $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.