Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 >

vendredi 16 janvier 2009

Compilation de dsh sans être root

Il faut se rendre à http://www.netfort.gr.jp/~dancer/software/downloads/list.cgi pour télécharger les versions suivantes:

  • pour libdshconfig Version: 0.20.9;
  • pour dsh: version 0.25.9

1. Téléchargement

Rien de plus simple que

 wget http://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.25.9.tar.gz
 wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.9.tar.gz

2. Compilation de libdshconfig

Pour compiler, ici mon idée est de tout mettre dans un répertoire dsh situé homedirectory (/home/jdtecher/dsh).

tar xzf libdshconfig-0.20.9.tar.gz
cd libdshconfig-0.20.9
./configure --prefix=$HOME/dsh
make
make install

3. Compilation de dsh

Pour la compilation de dsh:
tar xzf dsh-0.25.9.tar.gz 
cd dsh-0.25.9
CPPFLAGS="-I$HOME/dsh/include" LDFLAGS="-L$HOME/dsh/lib" ./configure --prefix=$HOME/dsh
make
make install

4. Vérifiacation

On vérifie les dépendances par rapport avec ldd pour dsh

david@bremko:/var/lib/david/dsh-0.25.9$ LD_LIBRARY_PATH=$HOME/dsh/lib:$LD_LIBRARY_PATH ldd $HOME/dsh/bin/dsh 
	linux-gate.so.1 =>  (0xb7f84000)
	libdshconfig.so.1 => /var/lib/david//dsh/lib/libdshconfig.so.1 (0xb7f80000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e0d000)
	/lib/ld-linux.so.2 (0xb7f85000)

Et on vérifie la version

 david@bremko:/var/lib/david/dsh-0.25.9$ LD_LIBRARY_PATH=$HOME/dsh/lib:$LD_LIBRARY_PATH $HOME/dsh/bin/dsh -V
Distributed Shell / Dancer's shell version 0.25.9 
Copyright 2001-2005 Junichi Uekawa, 
distributed under the terms and conditions of GPL version 2

5. Tests sur un groupe

On commence par progager la clé

david@bremko:/var/lib/david$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/david//.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/david//.ssh/id_rsa.
Your public key has been saved in /var/lib/david//.ssh/id_rsa.pub.
The key fingerprint is:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
david@bremko:/var/lib/david$ ssh-copy-id -i ~/.ssh/id_rsa.pub davidgis.fr
Warning: the RSA host key for 'davidgis.fr' differs from the key for the IP address '82.236.232.184'
Offending key for IP in /var/lib/david/.ssh/known_hosts:8
Matching host key in /var/lib/david/.ssh/known_hosts:21
Are you sure you want to continue connecting (yes/no)? yes
david@davidgis.fr's password: 
Now try logging into the machine, with "ssh 'davidgis.fr'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Pour être sur de ne pas devoir répondre à yes/no à chaque demande par ssh, on fait

echo "StrictHostKeyChecking no" >> ~/.ssh/config

On prépare maintenant les divers fichiers attendus

mkdir -p ~/.dsh/group
echo "davidgis.fr" > ~/.dsh/machines.list
echo "davidgis.fr" > ~/.dsh/group/davidgis

On lance un test même si celui-ci est retreint à une seule machine

export LD_LIBRARY_PATH=$HOME/dsh/lib:$LD_LIBRARY_PATH
$HOME/dsh/bin/dsh -g davidgis -- 'uname -a'
Linux olivia 2.6.20-15-lowlatency #2 SMP PREEMPT Sun Apr 15 07:39:03 UTC 2007 i686 GNU/Linux

jeudi 15 janvier 2009

[Qmail/awk] Petit programme awk pour avoir les expéditeurs de la journée

Un petit script assez sympathique quand on a qmail et qu'on veut afficher la liste des expéditeurs de la journée.

root@olivia:~# cat qmail-log.sh 
#!/bin/sh

QMAIL_LOG="/service/qmail/log/main/current";

cat "${QMAIL_LOG}" | tai64nlocal | grep -e 'from' | grep -e "$(date '+%Y-%m-%d')"|  awk \
'
BEGIN { 	
	iter=0;
}

{
	iter = iter +1;
	expediteurtmp = $9;
	expediteur = substr(expediteurtmp,2,length(expediteurtmp)-2);
	date = $1;
	heuretmp = $2;
	heure = substr(heuretmp,1,8);
	if ( length(expediteur)>6 )
	{
		printf("* %s  %s......................%s\n",date,heure,expediteur);
	}
} 

END {
      printf("Resume: %d messges.\n",iter);
}
';

Ce qui donnera par exemple

root@olivia:~# ./qmail-log.sh 
* 2009-01-15  00:28:48......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  01:10:42......................XXXXXXXXXXXXXXXXXXXXXXXXX
* 2009-01-15  01:10:54......................XXXXXXXXXXXXXXXXXXXXXXXXX
* 2009-01-15  01:37:27......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  01:52:48......................XXXXXXXXXXXXXXXXXXXXXXXXX
* 2009-01-15  05:17:57......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  06:44:31......................actu@b.linternaute.com
* 2009-01-15  08:04:59......................missions@freelance-info.fr
* 2009-01-15  08:48:58......................lc.parada@neuf.fr
* 2009-01-15  09:45:56......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  10:22:00......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  11:55:17......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  12:06:38......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  14:58:57......................XXXXXXXXXXXXXXXXXXXXXXXXX
* 2009-01-15  17:51:25......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  18:04:01......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  18:42:20......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  18:53:10......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  20:42:41......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  21:04:42......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  21:08:57......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  21:13:50......................postgis-users-bounces@postgis.refractions.net
* 2009-01-15  21:33:42......................XXXXXXXXXXXXXXXXXXXXXXXXX
Resume: 25 messges.
		

mardi 6 janvier 2009

[PostgreSQL/API C de libPQ]Petit programme permettant de lister toutes les bases PostGIS d'un serveur

A la sortie du boulot ce soir, comme il n'y avait rien à la TV (malgré la première soirée de France Télévision sans Pub), j'ai passé ma soirée à réviser mes connaissances en compilation avec les autotools de GNU/Linux (autoconf, automake, aclocal etc....).

Faisant suite à un programme que j'avais commencé cet été, je l'ai donc repris et me suis mis à faire de la compilation séparée. Le programme est disponible à http://www.davidgis.fr/download/check_gis_db-1.0.tar.gz

Mise à jour du billet le 2009-01-12 J'ai ajouté le support pour le choix du port du serveur (=option pour le programme). Cette version estampillée 1.1 est disponible à http://www.davidgis.fr/download/check_gis_db-1.1.tar.gz

0.Téléchargement

Le téléchargement a lieu en faisant

wget http://www.davidgis.fr/download/check_gis_db-1.0.tar.gz
tar xvzf check_gis_db-1.0.tar.gz

Fichiers importants

En premier lieu le programme repose sur deux requêtes

  • La première "SELECT datname FROM pg_database" se trouve dans src/check_gis_db.c et permet de lister l'ensemble des bases.
  • La seconde requête permet de savoir si le base contient la fonctionnalité postgis_full_version(). Elle se trouve dans src/funcs.c au niveau de la fonction IsADbGIS. Je ne l'affiche pas ici car elle est assez longue.

En second lieu, il y a configure.ac dont le contenu est

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.61)
AC_INIT(check_gis_db, 1.0, david.techer@davidgis.fr)
AC_CONFIG_SRCDIR([src/check_gis_db.c])
AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE(1.6)

# Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
# Checks for libraries.

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(stdlib.h getopt.h string.h)
# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.


AC_SUBST(PGCONFIG)
if test -z "$PGCONFIG"; then
        AC_PATH_PROG([PGCONFIG], [pg_config])
fi
if test -z "$PGCONFIG"; then
        AC_MSG_ERROR([pg_config n'est pas present dans votre PATH]);
fi

AC_OUTPUT(Makefile src/Makefile)

On remarque que la ligne AC_CHECK_HEADERS(stdlib.h getopt.h string.h) est importante par rapport au début du fichier src/check_gis_db.c - début correspondant à -

#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <string.h>

La ligne AC_OUTPUT(Makefile src/Makefile) est aussi à prendre en considération pour savoir quels makefile générés relativement à check_gis_db-1.0/Makefile.am et check_gis_db-1.0/src/Makefile.am

Pour la partie relative à pg_config, là je me suis basé sur le code du configure.in des sources de PostGIS.

Le contenu du fichier src/Makefile.am quant à lui est

bin_PROGRAMS = check_gis_db
check_gis_db_SOURCES = check_gis_db.c funcs.c funcs.h
AM_CFLAGS=-I`${PGCONFIG} --includedir`
AM_LDFLAGS=-L`${PGCONFIG} --libdir` -lpq

2.a Compilation sans pg_config dans le PATH

On modifie légèrement le PATH

root@olivia:~/check_gis_db-1.0# export PATH=/var/qmail/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@olivia:~/check_gis_db-1.0# ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for a BSD-compatible install... /usr/bin/install -c
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdlib.h... (cached) yes
checking getopt.h usability... yes
checking getopt.h presence... yes
checking for getopt.h... yes
checking for string.h... (cached) yes
checking for pg_config... no
configure: error: pg_config n'est pas present dans votre PATH

2.a Compilation avec pg_config dans le PATH

root@olivia:~/check_gis_db-1.0# export PATH=/usr/local/pgsql/bin/:/var/qmail/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@olivia:~/check_gis_db-1.0# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for a BSD-compatible install... /usr/bin/install -c
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdlib.h... (cached) yes
checking getopt.h usability... yes
checking getopt.h presence... yes
checking for getopt.h... yes
checking for string.h... (cached) yes
checking for pg_config... /usr/local/pgsql/bin//pg_config
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
root@olivia:~/check_gis_db-1.0# make
make  all-recursive
make[1]: entrant dans le répertoire « /root/check_gis_db-1.0 »
Making all in src
make[2]: entrant dans le répertoire « /root/check_gis_db-1.0/src »
if gcc -DHAVE_CONFIG_H -I. -I. -I..    -I`/usr/local/pgsql/bin//pg_config --includedir` -g -O2 -MT check_gis_db.o -MD -MP -MF ".deps/check_gis_db.Tpo" -c -o check_gis_db.o check_gis_db.c; \
	then mv -f ".deps/check_gis_db.Tpo" ".deps/check_gis_db.Po"; else rm -f ".deps/check_gis_db.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I..    -I`/usr/local/pgsql/bin//pg_config --includedir` -g -O2 -MT funcs.o -MD -MP -MF ".deps/funcs.Tpo" -c -o funcs.o funcs.c; \
	then mv -f ".deps/funcs.Tpo" ".deps/funcs.Po"; else rm -f ".deps/funcs.Tpo"; exit 1; fi
gcc -I`/usr/local/pgsql/bin//pg_config --includedir` -g -O2 -L`/usr/local/pgsql/bin//pg_config --libdir` -lpq  -o check_gis_db  check_gis_db.o funcs.o  
make[2]: quittant le répertoire « /root/check_gis_db-1.0/src »
make[2]: entrant dans le répertoire « /root/check_gis_db-1.0 »
make[2]: quittant le répertoire « /root/check_gis_db-1.0 »
make[1]: quittant le répertoire « /root/check_gis_db-1.0 »

3. Tests

Si on ne précise aucun paramètre

root@olivia:~/check_gis_db-1.0# ./src/check_gis_db
Usage: check_gis_db -h hôte -d basededonees -u utilisateur -p motdepasse

Avec des paramètres bidons

root@olivia:~/check_gis_db-1.0# ./src/check_gis_db -h toto -d template1 -u postgres -p amma
Tentative de la connexion..........................[ ECHEC ]
[ERREUR]............................................could not translate host name "toto" to address: Name or service not known

Connexion fermée.....................................[ OK ]

On fait un petit test en faisant

root@olivia:~/check_gis_db-1.0# ./src/check_gis_db -h localhost -d template1 -u postgres -p amma
Tentative de la connexion.............................[ OK ]
hote...............................................localhost
base...............................................template1
port....................................................5432
utilisateur.........................................postgres
mot de passe............................................amma
toto
testgis
osmgis
routing
routing_db
montpellier
routing_test
testrouting
Connexion fermée.....................................[ OK ]

Et on a donc la liste des base de données ayant les fonctionnalités de PostGIS. Le programme n'a pas été poussé dans toutes ses possibilités car je ne fais que tester la présence de la fonctionnalité postgis_full_version() alors qu'il faudrait faire des tests plus poussés.

4. Rappels

A chaque modification du fichier configure.ac, il est nécessaire de se retaper

aclocal
autoconf
automake

Pour la génération de la distrib, il y a la commande qui va générer le fichier check_gis_db-1.0.tar.gz en fonction du numéro de version fourni dans configure.ac (ici version=1.0)

make dist

4. sources pour la rédaction de ce billet

samedi 3 janvier 2009

Torrent pour les WAD intégrales de Doom...

Ce torrent contient pas mal de WAD intéressant: doom.wad (ultimate doom version intégrale), doom2.wad, zdoom et bien plus encore...Le torrent en question est le suivant

http://torrents.thepiratebay.org/3829662/Doom_Doom_2_Plutonia_TNT_Zdoom_files_and_WADS.3829662.TPB.torrent