Schlagwort-Archiv: repository

GIT Server und Gitolite installieren unter Debian

Problem:
Ich benötige für die Entwicklungsabteilung einen GIT Server und möchte aber nicht für jeden Entwickler einen vollwertigen Account auf der Maschine bereitstellen.

Lösung:
Ich kombiniere GIT mit Gitolite.
Gitolite ist eine Administrationsmöglichkeit über ein GIT-Repository und ist selbst ein Nachfolger von Gitosis.

Zuerst muss ein User (und zugehörige Gruppe) angelegt werden, ich nenne diese „git“, das Repository Verzeichnis lege ich nach /srv/gitolite

mkdir -p /srv/gitolite
addgroup --system git
adduser --system --home /srv/gitolite --shell /bin/bash --gecos "GIT@hostname" --ingroup git --disabled-password git
chown -R git:git /srv/gitolite

Jetzt installiere ich folgende Pakete

apt-get install git-core git git-svn

Nun kann mit der gitolite Installation (als root!!) begonnen werden

cd /usr/local/src
git clone git://github.com/sitaramc/gitolite
# installation für alle user ist nicht zwingend nötig, mach ich aber
gitolite/install -ln /usr/local/bin

Nun sollte man einen SSH Public Key besitzen, dieser ist zwingend nötig! Ohne diesen kann hier nicht weitergemacht werden!!! Ich lade meinen Key erstmal auf den Server nach /tmp/key.pub
Jetzt wird man User „git“ und richtet gitolite ein

su - git
gitolite setup -pk /tmp/key.pub

An dieser Stelle sind wir eigentlich schon fertig, gitolite ist installiert und Einsatzbereit.
Testen kann man das mit einem SSH Clienten

ssh git@server info

Das Ergebnis sollte ungefähr so ausschauen:

hello key, this is git@server running gitolite3 v3.5.1-4-g2f48a3e on git 1.7.0.4

R W gitolite-admin
R W testing

Man muss nun noch das Admin Repo auf der eigenen Maschine/Laptop/Desktop mit nem Clienten klonen um die weitere Konfiguration durchzuführen. Repos anlegen und User hinzufügen. Siehe hier http://gitolite.com/gitolite/clone.html

Fertig ist dein GIT Server!

Wer schon SVN Repos pflegt, kann diese nun migrieren. Den Vorgang hab ich hier beschrieben.

Repository für Debianpakete

Problem.
Ich habe Debianpakete und möchte diese Debiankonform auf einem Server hosten

Lösung:
Für diesen Zweck hat Debian das Pakete „reprepro“, der Debian Repository Manager

apt-get install reprepro

reprepro Projektseite

Hier das kurze Manual des Befehls „reprepro“

reprepro - Produce and Manage a Debian package repository

options:
-h, --help: Show this help
-i --ignore : Ignore errors of type .
--keepunreferencedfiles: Do not delete files no longer needed.
--delete: Delete included files if reasonable.
-b, --basedir

: Base directory
--outdir
: Set pool and dists base directory
--distdir
: Override dists directory.
--dbdir
: Directory to place the database in.
--listdir
: Directory to place downloaded lists in.
--confdir
: Directory to search configuration in.
--logdir
: Directory to put requeted log files in.
--methodir
: Use instead of /usr/lib/apt/methods/
-S, --section
: Force include* to set section.
-P, --priority : Force include* to set priority.
-C, --component : Add,list or delete only in component.
-A, --architecture : Add,list or delete only to architecture.
-T, --type : Add,list or delete only type (dsc,deb,udeb).

actions (selection, for more see manpage):
dumpreferences: Print all saved references
dumpunreferenced: Print registered files without reference
deleteunreferenced: Delete and forget all unreferenced files
checkpool: Check if all files in the pool are still in proper shape.
check []
Check for all needed files to be registered properly.
export []
Force (re)generation of Packages.gz/Packages/Sources.gz/Release
update []
Update the given distributions from the configured sources.
remove Remove the given package from the specified distribution.
include <.changes-file>
Include the given upload.
includedeb <.deb-file>
Include the given binary package.
includeudeb <.udeb-file>
Include the given installer binary package.
includedsc <.dsc-file>
Include the given source package.
list List all packages by the given name occurring in the given distribution.
listfilter
List all packages in the given distribution matching the condition.
clearvanished
Remove everything no longer referenced in the distributions config file.

Damit kann man so gut wie alles erledigen. Changes werden später mit „changestool“ verwaltet.

Dann erstellen wir mal ein Repository in /srv/repos

cd /srv/repos
mkdir -p debian/{conf,dists,incoming,indices,logs,pool,project,tmp}

Dann erstell ich meine Beschreibung in conf/distributions

Origin: Your Name
Label: Your repository name
Codename: wheezy
Architectures: i386 amd64 source
Components: main
Description: Description of repository you are creating
SignWith: YOUR-KEY-ID

und die Options conf/options

ask-passphrase
basedir .

Und mein example.deb bekomme ich nun so in das Repository rein

reprepro includedeb wheezy /pfad/zum/example.deb

Nun muss der Pfad nur noch erreichbar sein, via Apache zum Beispiel

Apache2 SVN Modul nutzen

Problem:
Ich möchte unter http://example.tdl/svn auf meiner Webseite einen SVN Bereich zum ein- und auschecken einrichten.

Lösung:
Ich installiere

apt-get install subversion libapache2-svn

Das Apache Modul „dav_svn“ wird unter Ubuntu Lucid automatisch eingebunden und aktiviert.
Mittels

apache2ctl -M

kann das mit Apache-Boardmitteln überprüft werden.

Nun wird ein Repository erstellt, sprich die benötigte Verzeichnisstruktur dazu. Dies kann man lokal oder direkt auf dem Server machen. Wichtig dabei ist die Art des Projektarchivs. Ich entscheide mich für den Standard, Dateibasiert soll es werden, nicht Berkley DB basierend. Siehe auch die Hinweise auf der Projektseite


cd /tmp
mkdir projektarchiv
svnadmin --fs-type fsfs create projektarchiv

Nun habe ich ein Verzeichnis projektarchiv, welches ich in mein DocumentRoot auf dem Webserver transferiere. Wichtig ist hierbei, dass der ausführende (Apache) User Schreibrechte auf die Ordner hat.

Nun muss die Apache Config um einen Webdav Bereich erweitert werden.



DAV svn

# Parent Path für Multirepos
# SVNParentPath /var/www/vhosts/example.tdl/subversion
# SVNListParentPath On

SVNPath /var/www/vhosts/example.tdl/httpdocs/svn

# für WebDAV Gebrauch mit dem Windows-Arbeitsplatz
SVNAutoversioning On

# To enable authorization via mod_authz_svn
# SVNPathAuthz Off

# Access Control Policies
# AuthzSVNAccessFile /etc/apache2/svn-authz

# Style
# SVNIndexXSLT "/svnlog.xslt"

# how to authenticate a user
# AuthType Basic
# AuthName "SVN Repository @"

# only authenticated should access
# Require valid-user

# via htpasswd Datei
# AuthUserFile /etc/apache2/svn-dav-passwd

Achtung: Das Repository ist nun von jedem, also auch von Anonymen, beschreibbar!

Im nächsten Schritt sollte man sich also um die Zugriffsberechtigungen kümmern.

Acrobat Reader (Debian Multimedia) auf 64bit Systemen

Problem:
Ich möchte den Acrobat Reader aus dem Debian Multimedia Repository installieren. Komischerweise ist dieser nicht mehr verfügbar.

Lösung:
Der Acrobatreader scheint nur noch für 32bit Systeme maintained und vertrieben zu werden.

Folgender Hinweis befindet sich auf der Homepage:

01/07/2012 :
I added multi-arch support for acroread and thus I removed acroread amd64 packages.

To install new acroread packages :
dpkg --add-architecture i386
apt-get update
apt-get install acroread

Der Befehl zur Installation von Acrobat und zugehörigem Mozilla Plugin lautet in meinem Fall

apt-get install acroread:i386 mozilla-acroread:i386

Das bedeutet, das der Acrobat Reader komplett als 32bit Application läuft und bei der Installation leider entsprechend viele 32bit Abhängigkeiten mitbringt. Mitunter auch das in einem anderen Artikel beschriebene 32bit Subsystem.