Catégories
Developpement Open-source Systeme

Sauvegarde automatique de son serveur SVN

Dans la série « sauvegarde tes données sinon tu le regretteras un jour ou l’autre », je voudrais le serveur SVN.

J’utilise un serveur SVN (pas encore eu le temps ni le courage de passer à GIT) pour gérer en version mes configurations, mes scripts shell et mes petits développements personnels. Une erreur de manipulation étant vite arrivée, j’ai automatisé l’archivage journalier (avec une mémoire d’une semaine) de la base de donnée utilisée par SVN.

Sauvegarde

J’utilise pour cela la commande svnadmin qui permet à l’aide de l’option dump de copier dans un simple fichier le contenu de la base de donnée.

Par exemple pour sauvegarder le projet dont la racine SVN se trouve dans le répertoire /var/svn/monbeauprojet, il faut saisir la commande suivante:

svnadmin -q dump /var/svn/monbeauprojet > /backup/svn/monbeauprojet.svndump

Il est bien sûr conseillé d’avoir une sauvegarde sur un disque différent de celui montée par /var/svn ou encore mieux d’uploader la sauvegarde sur un autre serveur.

Script pour sauvegarder l’ensemble des projets

Si votre serveur SVN comporte plusieurs projets, il faut passer par un shell script:

# Backup SVN (local)

day=`LANG=C date +%A | tr A-Z a-z`

svnrepo= »/var/svn/ »

backupdir= »/backup/svn »

for i in `ls $svnrepo`

do

svnadmin -q dump $svnrepo/$i > $backupdir/$i-$day.svndump

gzip $backupdir/$i-$day.svndump

rm $backupdir/$i-$day.svndump

done

Ce script va produire dans le sous répertoire /backup/svn une liste de fichiers compressés (format gzip). Chaque projet aura 7 sauvegardes correspondant aux 7 derniers jours. Par exemple, le fichier nommé monbeauprojet-sunday.svndump.gz sera la sauvegarde de la base de données SVN de dimanche dernier.

Pour lancer automatiquement la sauvegarde il suffit d’ajouter ce script dans la crontab système.

Restauration

En cas de problème sur un projet, il suffit de saisir les commandes suivantes pour restaurer la base de données. On utilise également la commande svnadmin mais cette fois ci avec l’option load:

gzip -d /backup/svn/monbeauprojet-sunday.svndump.gz

svnadmin load /var/svn/monbeauprojet < /backup/svn/monbeauprojet-sunday.svndump

Il faut bien vérifier que les droits des sous répertoires sont bons (svn:svn pour mon Ubuntu Server).

Si la restauration se fait sur un nouveau serveur SVN, il faut penser à créer le répertoire avec la commande:

svnadmin create /var/svn/monbeauprojet

Conclusion

Il y a surement d’autres solutions techniques (par exemple faire une copie sur un deuxième serveur SVN avec la commande svnadmin hotcopy) mais je trouve cette solution plutôt simple et flexible.


Catégories
Developpement Open-source

RabbitVCS, le TortoiseSVN pour Linux

Il y a peu de logiciels Windows que j’envie sous mon environnement Linux. TortoiseSVN en fait parti. C’est une petit logiciel libre qui ajoute à votre menu contextuel (bouton droit) toute une série d’actions pour gérer vos dépôts SVN. Je viens heureusement de tomber sur le projet RabbitVCS qui apporte exactement les mêmes fonctionnalités sous Linux.

TortoiseSVN vs RabbitVCS

Catégories
Developpement Open-source

Un serveur de développement libre

Vous développez une application sous licence libre et vous souhaitez donc mettre les sources à disposition des Internautes  sans pour autant être dépendant d’un fournisseur de service comme SourceForge ? Alors ce billet est fait pour vous…

Nous allons détailler l’installation d’un serveur de développement basée sur des logiciels libres:

  • Serveur Web pour héberger le site de votre projet (Apache)
  • Serveur SVN (Subversion)
  • Serveur Trac pour le suivi des bugs, le recueil des demandes de nouvelles fonctions et la roadmap de votre projet

Allez zou, on entre directement dans le vif du sujet…

Installation du système d’exploitation

Peut importe l’OS, il faut juste que vous soyer à l’aise avec lui. Donc n’importe quel OS GNU/Linux, BSD ou Unix fera l’affaire (si tu demandes et Windows ? tu cliques sur le bouton Démarrer / Arrêter l’ordinateur et tu installes un vrai OS).

Personnellement, j’utilise pour illustrer ce billet une Ubuntu Serveur 8.04, l’installation se fera via le compte root et le nom de ma machine est dev.mondomaine.com.

Pour être sûr que votre serveur Ubuntu est à jour:

aptitude update

aptitude safe-upgrade

Installation du serveur Web

Tout commence par l’installation d’Apach et de son module SVN:

aptitude install apache2 libapache2-svn

Puis on désactive les sites par défaut (le fameux « It works! »):

sudo a2dissite default

/etc/init.d/apache2 reload

A ce stade, le serveur devrait vous renvoyer un message comme quoi aucun serveur virtuel n’est configuré (« [warn] NameVirtualHost *:80 has no VirtualHosts »).

Nous allons donc créer le serveur virtuel du projet (libre à vous d’en créer autant que de besoins):

# vi /etc/apache2/sites-available/dev.mondomaine.com

<virtualHost *:80>

ServerName dev.mondomaine.com

ServerAdmin admin@mondomaine.com

DocumentRoot /var/www/dev/

ErrorLog /var/log/apache2/error.log

<Directory />

Options FollowSymLinks

AllowOverride All

</Directory>

</virtualHost>

On active le serveur virtuel dans la configuration d’Apache:

mkdir /var/www/dev

a2ensite dev.mondomaine.com

/etc/init.d/apache2 reload

On teste l’installation:

echo « OK » > /var/www/dev/index.html

Puis on ouvre un navigateur à l’URL: http://dev.mondomaine.com/

Installation du serveur SVN

On installe Subversion en suivant la procédure suivante (le projet sera donc stocké dans le répertoire /var/svn/projet, à modifier selon votre bon vouloir…).

On configure Apache pour qu’il puisse lire ce dépôt:

# vi /etc/apache2/mods-available/dav_svn.conf

<Location /svn>

DAV svn

SVNParentPath /var/svn

SVNListParentPath On

AuthType Basic

AuthName « Ubik Subversion Repository »

AuthUserFile /etc/apache2/dav_svn.passwd

<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

</LimitExcept>

</Location>

On créé un utilisateur privilégié qui aura les droits de commit sur le dépôt:

htpasswd –cs /etc/apache2/dav_svn.passwd nicolargo

Attention les prochain utilisateurs devront être créés avec la commande:

htpasswd -s /etc/apache2/dav_svn.passwd titi

Puis on redémarre le serveur:

sudo /etc/init.d/apache2 restart

Il est possible de tester l’installation en entrant l’URL suivante dans votre navigateur Web: http://dev.mondomaine.com/svn/projet/

La liste des dépôt devrait apparaitre.

Le dépôt SVN de votre projet est donc maintenant accessible via l’adresse: http://dev.mondomaine.com/svn/projet/

Lors d’un commit, un couple login/password sera demandé automatiquement (il faudra saisir les informations d’un utilisateur privilégié).

Installation du serveur Trac

On installe Trac:

aptitude install libapache2-mod-python trac python-pygments enscript

sudo a2enmod mod_python

On ajoute la configuration suivante dans le fichier /etc/apache2/sites-available/dev.mondomaine.com (dans la balise VirtualHost):

<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/www/ubik-dev/trac
PythonOption TracUriRoot /trac
PythonOption PYTHON_EGG_CACHE /tmp
</Location>
<LocationMatch « /trac/[[:alnum:]]+/login »>
AuthType Basic
AuthName « Trac Dev server »
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</LocationMatch>

<Location /trac>

SetHandler mod_python

PythonInterpreter main_interpreter

PythonHandler trac.web.modpython_frontend

PythonOption TracEnvParentDir /var/www/dev/trac

PythonOption TracUriRoot /trac

PythonOption PYTHON_EGG_CACHE /tmp

</Location>

<LocationMatch « /trac/[[:alnum:]]+/login »>

AuthType Basic

AuthName « Trac Dev server »

AuthUserFile /etc/apache2/dav_svn.passwd

Require valid-user

</LocationMatch>

Puis on créé le trac pour notre projet:
trac-admin /var/www/dev/trac/projet initenv
Et on lui fixe les bons droits:
chown -R www-data:www-data /var/www/dev/trac/
Et voili, le site Trac de votre projet est maintenant accessible via l’URL: http://dev.mondomaine.com/trac/projet/
Il ne vous reste plus qu’a faire une jolie page Web d’accueil a mettre dans le répertoire /var/www/dev/ et à lancer votre campagne de communication !

Sources m’ayant aidées lors de la rédaction de ce billet:

Catégories
Developpement Open-source

Une petite introduction à GIT

Sous l’impulsion de la multiplication des projets open-source, la gestion en configuration de vos sources est devenue une brique essentielle dans le développement de logiciels informatiques. Nous allons dans ce billet parler de GIT (développé par Mr Linus Torvalds en personne) qui contrairement à CVS ou SVN se base sur une architecture décentralisée.

Architecture de notre tutoriel

Pour illustrer ce tutoriel, nous allons utiliser l’architecture suivante:

A: Dépôt GIT
B: Dépôt GIT (copie de A)
C: Dépôt SVN

Installation

On installe GIT:

# sudo aptitude install git-core git-svn

puis on le configure:

# git config –global user.name « Nicolas Hennion »
# git config –global user.email « contact_at_nicolargo_._com »

Création du dépot sur la machine A

Projet dont les sources sont stockées dans le répertoire ~/workspace/projet.

# cd  ~/workspace/projet
# ls -alF
total 92
-rw-r—– 1 nicolargo nicolargo  158 Jan 28 15:45 001-display-ogg-theora-file.sh
-rw-r—– 1 nicolargo nicolargo   89 Jan 28 15:49 002-display-webcam.sh
-rw-r—– 1 nicolargo nicolargo  242 Feb  2 17:02 003-display-webcam-320×200.sh
-rw-r—– 1 nicolargo nicolargo  153 Jan 28 16:55 004-display-effect-webcam.sh
-rw-r—– 1 nicolargo nicolargo  157 Jan 28 17:16 005-display-textoverlay-webcam.sh
-rw-r—– 1 nicolargo nicolargo   89 Feb  2 15:49 006-streaming-udp-client-theora.sh
-rw-r—– 1 nicolargo nicolargo  579 Feb  2 15:50 006-streaming-udp-server-theora.sh
-rw-r—– 1 nicolargo nicolargo  224 Jan 30 14:46 007-streaming-to-icecast.sh
-rw-r—– 1 nicolargo nicolargo  116 Feb  2 15:40 008-streaming-tcp-client-theora.sh
-rw-r—– 1 nicolargo nicolargo  266 Feb  2 15:45 008-streaming-tcp-server-theora.sh
-rw-r—– 1 nicolargo nicolargo 4192 Feb  3 11:56 009-streaming-rtp-client-theora.sh
-rw-r—– 1 nicolargo nicolargo  622 Feb  3 11:52 009-streaming-rtp-server-theora.sh
-rw-r—– 1 nicolargo nicolargo  194 Feb  3 12:26 010-VLC.sdp
-rw-r—– 1 nicolargo nicolargo  534 Feb  3 12:15 010-streaming-rtp-client-x264.sh
-rw-r—– 1 nicolargo nicolargo  706 Feb  3 12:35 010-streaming-rtp-server-x264.sh
-rw-r—– 1 nicolargo nicolargo 1072 Feb  3 15:16 011-streaming-rtp-client-x264-speex.sh
-rw-r—– 1 nicolargo nicolargo  883 Feb  3 14:57 011-streaming-rtp-server-x264-speex.sh
-rw-r—– 1 nicolargo nicolargo 1041 Feb  3 15:13 012-streaming-rtp-client-x264-pcma.sh
-rw-r—– 1 nicolargo nicolargo  880 Feb  3 15:11 012-streaming-rtp-server-x264-pcma.sh
-rw-r—– 1 nicolargo nicolargo 1720 Feb  2 16:21 GStreamer – RTP client-server.txt
-rw-r—– 1 nicolargo nicolargo 1020 Feb  3 15:31 client.sh
-rw-r—– 1 nicolargo nicolargo  883 Feb  3 15:28 server.sh

On initialise le dépôt GIT:

# git init
Initialized empty Git repository in .git/

Puis on ajoute l’ensemble des fichiers sources à ce dépôt GIT:

# git add *

On vérifie que la commande précédente à bien été prise en compte

# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use « git rm –cached <file>… » to unstage)
#
#    new file: 001-display-ogg-theora-file.sh
#    new file: 002-display-webcam.sh
#    new file: 003-display-webcam-320×200.sh
#    new file: 004-display-effect-webcam.sh
#    new file: 005-display-textoverlay-webcam.sh
#    new file: 006-streaming-udp-client-theora.sh
#    new file: 006-streaming-udp-server-theora.sh
#    new file: 007-streaming-to-icecast.sh
#    new file: 008-streaming-tcp-client-theora.sh
#    new file: 008-streaming-tcp-server-theora.sh
#    new file: 009-streaming-rtp-client-theora.sh
#    new file: 009-streaming-rtp-server-theora.sh
#    new file: 010-VLC.sdp
#    new file: 010-streaming-rtp-client-x264.sh
#    new file: 010-streaming-rtp-server-x264.sh
#    new file: 011-streaming-rtp-client-x264-speex.sh
#    new file: 011-streaming-rtp-server-x264-speex.sh
#    new file: 012-streaming-rtp-client-x264-pcma.sh
#    new file: 012-streaming-rtp-server-x264-pcma.sh
#    new file: GStreamer – RTP client-server.txt
#    new file: client.sh
#    new file: server.sh
#

Enfin on valide (commit) le dépôt:

# git commit -m « Premier commit »
Created initial commit 6a4ff29: Premier commit
 22 files changed, 183 insertions(+), 0 deletions(-)
 create mode 100644 001-display-ogg-theora-file.sh
 create mode 100644 002-display-webcam.sh
 create mode 100644 003-display-webcam-320×200.sh
 create mode 100644 004-display-effect-webcam.sh
 create mode 100644 005-display-textoverlay-webcam.sh
 create mode 100644 006-streaming-udp-client-theora.sh
 create mode 100644 006-streaming-udp-server-theora.sh
 create mode 100644 007-streaming-to-icecast.sh
 create mode 100644 008-streaming-tcp-client-theora.sh
 create mode 100644 008-streaming-tcp-server-theora.sh
 create mode 100644 009-streaming-rtp-client-theora.sh
 create mode 100644 009-streaming-rtp-server-theora.sh
 create mode 100644 010-VLC.sdp
 create mode 100644 010-streaming-rtp-client-x264.sh
 create mode 100644 010-streaming-rtp-server-x264.sh
 create mode 100644 011-streaming-rtp-client-x264-speex.sh
 create mode 100644 011-streaming-rtp-server-x264-speex.sh
 create mode 100644 012-streaming-rtp-client-x264-pcma.sh
 create mode 100644 012-streaming-rtp-server-x264-pcma.sh
 create mode 100644 GStreamer – RTP client-server.txt
 create mode 100644 client.sh
 create mode 100644 server.sh

Import du dépôt sur la machine B

Nous allons utiliser la commande GIT « clone » permettant de faire une copie locale (dépôt local de la machine B) de son dépôt distant (machine A). C’est sur cette copie que nous allons ensuite travailler. On peut noter que j’utilise le protocole SSH pour récupérer les sources de la machine A, mais il est également possible d’utiliser le protocole « git » ou « http ».

# git clone ssh://nicolargo@B/~/workspace/gstpipelinearea

Création d’une branche locale

Nous allons maintenant créer sur notre machine B une nouvelle version de nos sources (une branche). Pour voir la liste des branches on utilise la commande suivante:

# git branch
* master

Comme on peut le voir il existe une seule branche (master) dans notre dépôt. Nous allons en créer une nouvelle avec la commande suivante:

# git branch version-2.0 master

On vient de créer une nouvelle version de notre projet nommé version-2.0 à partir de la branche principale (master). Il est ainsi possible de travailler sur cette version-2.0 sans impacter la version principale.

# git branch
* master
  version-2.0

L’* à coté de master précise que pour l’instant toutes les actions GIT seront faites sur la branche master. Pour travailler sur la branche version-2.0, il faut sasir la commande:

# git checkout version-2.0
Switched to branch « version-2.0 »

On vérifie:

# git branch
  master
* version-2.0

Consolidation des branches

Si vous voulez fusionner (merge) la
version-2.0 à la branche principale (c’est à dire appliquer les
modifications faites dans la version-2.0 dans vos sources initiales),
il faut:

# git checkout master
# git merge version-2.0

Quelques manipulations de base de notre dépôt local

Nous allons voir quelques exemples de manipulations de nos sources, je vous conseille fortement la lecture de la documentation (RFM…)

Ajout d’un fichier source

Pour ajouter un nouveau fichier à notre dépôt local, on commence par créer le fichier en question:

# echo « Quelques exemples de pipelines GStreamer » >> README

Puis on l’ajoute et on met à jour notre dépôt local:

# git add README
# git commit -a -m « Ajout du fichier README »
Created commit 1072258: Ajout du fichier README
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 README

Modification d’un fichier source

On modifie le fichier source en question:

# echo « Merci d’ajouter une ligne de description par pipeline » >> README

On peut voir les différences entre notre dépôt actuel et le dépôt local en tapant la commande:

# git diff
diff –git a/README b/README
index 3040f44..a58b06d 100644
— a/README
+++ b/README
@@ -1 +1,2 @@
 Quelques exemples de pipelines GStreamer
+Merci d’ajouter une ligne de description par pipeline

Puis on valide nos modifications dans le dépôt local:

# git commit -a -m « Modification fichier README »
Created commit f3c0c49: Modification fichier README
 1 files changed, 1 insertions(+), 0 deletions(-)

En cas d’erreur il est possible de revenir facilement à une dernière version:

# git log
commit f3c0c49bfc181d9353d8536c49af55eb24a9318c
Author: Nicolas Hennion <contact@nicolargo.com>
Date:   Wed Jul 8 17:11:03 2009 +0200

    Modification fichier README

commit 1072258108f25865e1965deeff7e651e29fb8f75
Author: Labo <labo@linux-demo-laptop.(none)>
Date:   Wed Jul 8 16:56:56 2009 +0200

    Ajout du fichier README

commit 6a4ff298714032e8263f9425b50a86dcf8aa5888
Author: Nicolas Hennion <contact@nicolargo.com>
Date:   Wed Jul 8 16:43:30 2009 +0200

    Premier commit

Par exemple pour revenir à notre première version du fichier README:

# git revert 1072258108f25865e1965deeff7e651e29fb8f75

Suppression d’un fichier source

On supprime le/les fichiers sources en question:

# git rm client.sh
# git rm server.sh

Puis on valide:

# git commit -a -m « Supression des fichers de test »
Created commit dc78e6c: Supression des fichers de test
 2 files changed, 0 insertions(+), 32 deletions(-)
 delete mode 100644 client.sh
 delete mode 100644 server.sh

Mise à jour du dépôt distant (A)

Nous avons fait quelques manipulation sur notre dépôt local (machine B). Maintenant nous souhaitons proposer ces modifications au dépôt distant (machine A). Pour cela, nous allons dans un premier temps pousser les modifications de B vers A:

# git push
Counting objects: 9, done.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 861 bytes, done.
Total 8 (delta 3), reused 0 (delta 0)
To ssh://nicolargo@B/~/workspace/gstpipelinearea
   6a4ff29..dc78e6c  master -> master

Par défaut, le push se fait sur la brance principale (master), pour spécifier le push d’une autre version, il faut la spécifier dans la ligne de commande (« git push version-2.0 » par exemple).

Si on fait a ce moment là un ls dans le répertoire du dépôt de la machine A, les modifications n’apparaissent pas (le fichier README est inexistant et les fichier client.sh et server.sh sont présents).

# ls -alF
-rw-r—– 1 nicolargo nicolargo  158 Jan 28 15:45 001-display-ogg-theora-file.sh
-rw-r—– 1 nicolargo nicolargo   89 Jan 28 15:49 002-display-webcam.sh
-rw-r—– 1 nicolargo nicolargo  242 Feb  2 17:02 003-display-webcam-320×200.sh
-rw-r—– 1 nicolargo nicolargo  153 Jan 28 16:55 004-display-effect-webcam.sh
-rw-r—– 1 nicolargo nicolargo  157 Jan 28 17:16 005-display-textoverlay-webcam.sh
-rw-r—– 1 nicolargo nicolargo   89 Feb  2 15:49 006-streaming-udp-client-theora.sh
-rw-r—– 1 nicolargo nicolargo  579 Feb  2 15:50 006-streaming-udp-server-theora.sh
-rw-r—– 1 nicolargo nicolargo  224 Jan 30 14:46 007-streaming-to-icecast.sh
-rw-r—– 1 nicolargo nicolargo  116 Feb  2 15:40 008-streaming-tcp-client-theora.sh
-rw-r—– 1 nicolargo nicolargo  266 Feb  2 15:45 008-streaming-tcp-server-theora.sh
-rw-r—– 1 nicolargo nicolargo 4192 Feb  3 11:56 009-streaming-rtp-client-theora.sh
-rw-r—– 1 nicolargo nicolargo  622 Feb  3 11:52 009-streaming-rtp-server-theora.sh
-rw-r—– 1 nicolargo nicolargo  194 Feb  3 12:26 010-VLC.sdp
-rw-r—– 1 nicolargo nicolargo  534 Feb  3 12:15 010-streaming-rtp-client-x264.sh
-rw-r—– 1 nicolargo nicolargo  706 Feb  3 12:35 010-streaming-rtp-server-x264.sh
-rw-r—– 1 nicolargo nicolargo 1072 Feb  3 15:16 011-streaming-rtp-client-x264-speex.sh
-rw-r—– 1 nicolargo nicolargo  883 Feb  3 14:57 011-streaming-rtp-server-x264-speex.sh
-rw-r—– 1 nicolargo nicolargo 1041 Feb  3 15:13 012-streaming-rtp-client-x264-pcma.sh
-rw-r—– 1 nicolargo nicolargo  880 Feb  3 15:11 012-streaming-rtp-server-x264-pcma.sh
-rw-r—– 1 nicolargo nicolargo 1720 Feb  2 16:21 GStreamer – RTP client-server.txt
-rw-r—– 1 nicolargo nicolargo 1020 Feb  3 15:31 client.sh
-rw-r—– 1 nicolargo nicolargo  883 Feb  3 15:28 server.sh

Pour consolider les sources sur la machine A, il faut utiliser la commande suivante:

# git reset –hard
HEAD is now at dc78e6c… Suppression des fichers de test

Et si mes sources viennent d’un serveur SVN ?

Pas de problème, GIT dispose d’un bundle permettant de récupérer et de committer vers un serveur SVN.

Pour récupérer les sources d’un serveur SVN C:

# git svn clone svn://nicolargo@C/svn/gstpipelinearea

On utilise les commandes classique pour gérer son dépôt GIT (voir les chapitres précédant).

Pour commiter les modifications sur le serveur SVN C:

# git svn rebase
# git svn dcommit

Pour les utilisateurs d’Eclipse

Vous pouvez suivre ce tuto pour configurer votre Eclipse pour utiliser un dépôts GIT.

Catégories
Developpement Open-source Systeme

Installation d’un serveur SVN sous Ubuntu

Le but de ce billet est de mettre en place un serveur de gestion de versions basée sur SVN+SSH.

On commence par installer le package subversion qui comprend à la fois le client et le serveur SVN.

# sudo svn update
# sudo apt-get install subversion

on créé un utilisateur et un groupe générique svn.

# sudo adduser svn
Adding user `svn’ …
Adding new group `svn’ (1000) …
Adding new user `svn’ (1001) with group `svn’ …
Creating home directory `/home/svn’ …
Copying files from `/etc/skel’ …
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for svn
Enter the new value, or press ENTER for the default
Full Name []: SVN
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [y/N] y

Pour des questions de sécurité, je vous conseille de désactiver le SHELL pour cet utilisateur:

# sudo vipw
svn:x:1001:1000:SVN,,,:/home/svn:/usr/sbin/nologin

Si vous souhaitez accéder à votre serveur SVN avec un compte unix bien précis, il faut ajouter le login de ce compte au groupe svn:

# sudo vigr
svn:x:1000:nicolargo

Puis on créé un répertoire ou seront stockées les sources de vos programmes.

# sudo mkdir /var/svn

Il faut ensuite demander à SVN de créer un répertoire SVN pour notre projet:

# sudo svnadmin create /var/svn/projet

Puis de changer les droits:

# sudo chown -R svn:svn /var/svn
# sudo chmod -R 775 /var/svn

Il ne reste plus qu’a tester votre serveur à partir d’une machine distante en « important » votre projet (dont les sources sont localisées dans le répertoire ~/projet pour illustrer ce billet).

Avant l’importation, on va créer la structure classique de SVN:

projet
– trunk
– branches
– tags

client# svn mkdir –parents  svn+ssh://nicolargo@monserveur/var/svn/projet/trunk -m «  »
client# svn mkdir –parents  svn+ssh://nicolargo@monserveur/var/svn/projet/tags -m «  »
client# svn mkdir –parents  svn+ssh://nicolargo@monserveur/var/svn/projet/branches -m «  »

Puis on importe les sources:

client# cd ~/projet
client# svn import . svn+ssh://nicolargo@monserveur/var/svn/projet/trunk -m « Premiere importation »
nicolargo@monserveur’s password:

Révision 0 propagée.

Il ne reste plus qu’a tester l’exportation des sources:

client# cd ~
client# mv projet projet.init
client# svn co svn+ssh://nicolargo@monserveur/var/svn/projet/trunk projet

Révision 0 extraite.

Pour aller plus loin dans l’utilisation de votre nouveau serveur SVN, je vous conseille le très bon article de Ulhume sur son non-blog…(remplacer juste http:// par svn+ssh://)

Catégories
Developpement Open-source

Installation pas à pas d’Eclipse sous GNU/Linux

Je ne sais pas vous mais l’installation et la configuration d’Eclipse (l’environnement de développement libre par référence) en utilisant les « repos apt » d’Ubuntu est toujours un grand moment de solitude. Il n’y a qu’a voir le peu de clarté de la page de documentation sur Ubuntu-fr pour s’en rendre compte.

Nous allons donc essayé de détailler l’installation d’une version récente d’Eclipse (3.4.1 au moment de l’écriture de ce billet) sur une distibution Ubuntu 8.10.

Avant de commencer…

Eclipse est devenu avec le temps et le succès une boîte à outil comportant de nombreux modules permettant de le customiser en fonctions de vos besoins. Par exemple, un développeur Java n’aura pas forcement besoin des mêmes outils qu’un développeur C…

Eclipse propose donc des installateurs pre-packagés. Pour choisir celui qui vous convient le mieux, ce tableau pourra vous aider.

Il faut ensuite se rendre sur cette page et sélectionner le package/operating system adapté à vos besoins.

Dans la suite de ce billet, je prendrai comme package de référence: « Eclipse IDE for C/C++ Developers » (et oui je suis de la vieille école ;)) pour Linux/32 bits.

Installation d’Eclipse

On commence par télécharger le package dans le répertoire /usr/src (l’archive au format tar.gz fait environ 68 Mo pour cette version).

cd /opt

sudo tar zxvf /usr/src/eclipse-cpp-ganymede-SR1-linux-gtk.tar.gz

cd /opt/eclipse

sudo wget http://www.bearfruit.org/files/eclipse-icon-clean.svg

Il faut ensuite créer un nouveau lanceur dans le menu Applications de Gnome:

  • bouton droit sur le « menu Applications »
  • « Editer les menus »
  • menu « Programmation »
  • Click sur « + Nouvel élément »

Il ne reste plus qu’a lancer l’application via le menu « Applications/Programmation/Eclipse ».

Ajout de nouveaux plugins

Plugin SVN (Subeclipse)

Pour le versionning SVN est le remplacant de CVS. Il faut installer un plugin complémentaire pour qu’Elipse puisse aller chercher des sources sur un serveur SVN.

Pour installer le plugin SVN Subeclipse, j’ai suivi ce tutoriel.

Liste des plugins à installer sur ce screenshot:
Subeclipse

Plugin PHP (PDT)

J’ai parfois la faiblesse de coder en Perl/PHP, là aussi ces languages nécessitent l’installation de plugins (PDT pour PHP et EPIC pour Perl).

J’ai suivi ce tutoriel pour l’installation de PDT 2.0 et celui-ci pour EPIC.

Catégories
Developpement Open-source

Comment utiliser SourceForge

SourceForge.net_ Project Documentation.jpg

Un des fondement de l’open-source est le partage. SourceForge.net est un service Web mettant à disposition des développeurs libres tout un tas d’outils leurs permettant de partager le fruit de leur travail.

Nous allons dans ce billet voir comment créer un nouveau projet, pour mettre à disposition de la communauté Internet:

  • Création d’un compte pour un développeur
  • Ajout d’un nouveau projet (description, lien vers la page Web du projet…)
  • Ajouts de fichiers (sources, binaires, docs) dans le projet
  • Création d’une arborescence des sources sur le serveur SVN du projet

Création d’un compte utilisateur sous SourceForge

C’est la première étape: créer votre identité numérique (compte) sous SourceForge.

Ce compte vous permettra de vous identifié auprès de SourceForge. Il est bien sûr possible de créer plusieurs projets sous un même compte.

Par exemple, mon compte est le suivant: nicolargo

SourceForge.net_ Developer Profile.jpg

Création d’un nouveau projet sous SourceForge

Après s’être authentifié avec votre compte, un lien permettant la création d’un nouveau projet sera présent sur la page principale:

SourceForge.net_ Open Source Software.jpg .

Vous allez alors être guidé par un assistant comportant 4 étapes. La première consiste à saisir les informations générales (type de projet, nom, descriptions…). C’est une étape très importante. En effet, la description du projet est un des critère regardé par les administrateurs pour accepter ou non l’hébergement de votre projet.

La seconde étape vous permet de sélectionner le type de licence libre appliqué à votre projet.

La troisième est un peu plus laborieuse puisqu’il faut associé des catégories aussi diverses que variés à votre projet.

Enfin, la dernière étape consiste à accepter le contrat d’utilisation de SourceForge.

Les administrateurs de SourceForge sont assez pointilleux sur la qualité des projets hébergés (ce qui n’est pas plus mal…). Ainsi, après création, il faudra attendre entre 24 et 48h avant de pouvoir utiliser ce nouveau projet (si ce dernier est accepté).

Importation de fichiers associés à votre nouveau projet SourceForge

Une fois accepté, votre projet est une coquille vide ne comportant qu’une description. Sous Sourceforge, chaque projet est accessible depuis une URL dédiée: https://sourceforge.net/projects/<nomduprojet>/

La première chose à faire est de proposer aux utilisateurs qui tomberaient sur votre projet quelques chose à télécharger (source ou binaire peut importe). Pour cela, il faut se rendre dans le menu Admin/File Releases.

SourceForge.net_ Xyz2Lla.jpg

On clique ensuite sur le lien Add Release, puis on entre le numéro/nom de version du fichier à proposer en téléchargement et enfin on clique sur le bouton Create this release.

Après avoir saisi les descriptions (notes et change log) pour cette version, il faut ajouter le fichier sur le serveur (Add files to this release). Plusieurs solutions sont possibles (Web upload, WebDav, SFTP, RSYNC) . Personnellement j’utilise SFTP. Par exemple, si je veux envoyer le fichier projet.tgz sur le serveur SourceForge, j’utilise les commandes suivantes:

sftp <compte>@frs.sourceforge.net

Connecting to frs.sourceforge.net…

The authenticity of host ‘frs.sourceforge.net (216.34.181.57)’ can’t be established.

RSA key fingerprint is 68:b3:26:02:a0:07:e4:78:d4:ec:7f:2f:6a:4d:32:c5.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘frs.sourceforge.net,216.34.181.57’ (RSA) to the list of known hosts.

<compte>@frs.sourceforge.net’s password:

sftp> cd uploads

sftp> put projet.tgz

Uploading projet.tgz to /incoming/<…>/uploads/projet.tgz

projet.tgz 100% 241 0.2KB/s 00:01

sftp> exit

Une fois le fichier « uploadé » sur le serveur, il faut revenir à la page ou l’on a saisi les descriptions de la version et cliquer sur le bouton Add files and/or Refresh view. Le nom du fichier devrait apparaître, il reste à le sélectionner puis à cliquer une seconde fois sur le bouton Add files and/or Refresh view.

De retour sur la page du projet (https://sourceforge.net/projects/<nomduprojet>/), vous devriez voir apparaître le lien vers la page de téléchargement:

SourceForge.net_ Xyz2Lla.jpg

Ces opérations sont à refaire pour chaque nouvelles versions de votre logiciel.

Il est également possible, si votre projet dispose d’une page Web dédié, d’ajouter un lien vers cette page à partir de SourceForge. Pour cela, il faut se rendre dans le menu Admin/Shell-DB-Web:

SourceForge.net_ Xyz2Lla.jpg

Puis saisir l’URL de votre page Web dans le champ: Project Home Page URL, suivi d’un clique sur le bouton Update.

Partager ces sources dans le SVN SourceForge

SVN est un système de gestion de configuration permettant de travailler seul ou à plusieurs sur un code dont les sources sont centralisé sur un serveur. Sourceforge propose un serveur SVN pour votre projet.

Par défaut, seul CVS (un autre système de gestion de configuration) est activé. Pour activé SVN, il faut se rendre dans le menu Admin/Subversion.

SourceForge.net_ Xyz2Lla.jpg

Puis activer le radio bouton « enable subversion » puis cliquer le bouton Update.

L’accès à votre répertoire SVN se fera par l’URL suivante (à configurer dans votre environnement de développement favori, Eclipse par exemple…):

https://<nomduprojet>.svn.sourceforge.net/svnroot/<nomduprojet>

La première importation de vos sources peut se faire avec la commande suivante. Par exemple si vous voulez importer les sources d’un projet se trouvant dans le répertoire local /home/nicolargo/dev/projet:

cd /home/nicolargo/dev

svn import projet https://<nomduprojet>.svn.sourceforge.net/svnroot/<nomduprojet>

Vous pouvez vérifier l’mportation avec la commande suivante:

svn list https://<nomduprojet>.svn.sourceforge.net/svnroot/<nomduprojet>

Conclusion

On vient juste de voir une infime partie des services proposés par SourceForge. Pour aller plus loin vous pouvez consulter la documentation officielle (en Anglais uniquement à l’heure actuelle…).

Catégories
Developpement Open-source

CodingTeam: nouvelle forge pour le libre

A l’instar de SourceForge, CodingTeam est une nouvelle forge pour les projets « open-source ».

C’est quoi une forge ? C’est un espace (site) permettant la présentation, la gestion et le développement de vos projets de logiciel.

Le site propose donc l’hébergement de projets libres en apportant les outils suivants:

  • un espace de téléchargement,
  • un wiki,
  • un système d’actualité,
  • un dépôt Subversion (SVN sur demande),
  • un suivi des bugs,
  • une liste d’objectifs,
  • un outil de traduction en ligne,
  • un espace de discussion…

Par exemple, si vous créez le projet nommé xxx, vous disposerez d’une page web regroupant tout ces services à l’adresse: http://xxx.codingtam.net

Le site se base sur le logiciel CodingTeam (aujourd’hui en version 0.42 sous license GNU GPL) que vous pouvez également installer sur un serveur local.

Le principal avantage de cette forge par rapport à la concurrence est qu’il est disponible en Anglais et en Français mais je pense personnellement que le site manque encore un peu de maturité. A suivre donc…