Installation de RASPA2 sur UBUNTU 24.04

assoualayegustave Messages postés 7 Date d'inscription vendredi 3 mai 2019 Statut Membre Dernière intervention 7 mars 2025 - Modifié le 3 mars 2025 à 15:12
mamiemando Messages postés 33642 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 avril 2025 - 10 mars 2025 à 14:59

Bonjour,

Je voudrais installer RASPA2 en suivant la procédure suivante:

sudo apt install build-essential git autoconf automake libtool make
git clone https://github.com/numat/RASPA2
mkdir -vp Research/simulations
cd RASPA2/
export RASPA DIR=${HOME}/Research/simulations/
mkdir m4
aclocal
autoreconf -i
automake --add-missing
autoconf
./configure --prefix=${RASPA_DIR}
make
sudo make install

"

Cependant j'ai récemment effectué une mise à niveau vers Ubuntu 24.04. Et pendant l'installation,  quand je fais la commande

autoreconf -i

je reçois le message suivant :

configure.ac:23: warning: The macro `AC_STDC_HEADERS' is obsolete.
configure.ac:23: You should run autoupdate.
./lib/autoconf/oldnames.m4:75: AC_STDC_HEADERS is expanded from...
configure.ac:23: the top level
configure.ac:23: warning: The macro `AC_HEADER_STDC' is obsolete.
configure.ac:23: You should run autoupdate.
./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from...
./lib/autoconf/oldnames.m4:75: AC_STDC_HEADERS is expanded from...
configure.ac:23: the top level
configure.ac:31: warning: AC_OUTPUT should be used without arguments.
configure.ac:31: You should run autoupdate.

Comment faire SVP?Linux / Firefox 135.0

A voir également:

5 réponses

mamiemando Messages postés 33642 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 avril 2025 7 844
Modifié le 3 mars 2025 à 15:12

Bonjour,

As-tu installé tout le nécessaire pour compiler ?

sudo apt update
sudo apt install autoconf build-essential git libtool

Si ça ne suffit pas à débloquer ton problème, as-tu essayé d'installer comme suggéré par le message de lancer dans le dossier qui contient configure.ac :

autoupdate

Par ailleurs dans ton message initial tu écris :

export RASPA DIR=${HOME}/Research/simulations/

... mais je pense que tu as plutôt voulu écrire :

export RASPA_DIR=${HOME}/Research/simulations/

Bonne chance

0
assoualayegustave Messages postés 7 Date d'inscription vendredi 3 mai 2019 Statut Membre Dernière intervention 7 mars 2025
Modifié le 6 mars 2025 à 12:02

Merci pour votre réponse !

J'ai essayé de faire ce que vous m'avez indiqué ci-dessus, mais quand j'arrive au niveau de la commande "make" je reçois ce message

"ssoualaye@assoualaye-HP-ProBook-440-G6:~/RASPA2$ make
Making all in src
make[1] : on entre dans le répertoire « /home/assoualaye/RASPA2/src »
/bin/bash ../libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"RASPA\" -DPACKAGE_TARNAME=\"raspa\" -DPACKAGE_VERSION=\"2.0\" -DPACKAGE_STRING=\"RASPA\ 2.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"raspa\" -DVERSION=\"2.0\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_MATH_H=1 -DHAVE_STRING_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I.     -g -O2 -MT output.lo -MD -MP -MF .deps/output.Tpo -c -o output.lo output.c
libtool: compile:  gcc -DPACKAGE_NAME=\"RASPA\" -DPACKAGE_TARNAME=\"raspa\" -DPACKAGE_VERSION=\"2.0\" "-DPACKAGE_STRING=\"RASPA 2.0\"" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"raspa\" -DVERSION=\"2.0\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_MATH_H=1 -DHAVE_STRING_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -g -O2 -MT output.lo -MD -MP -MF .deps/output.Tpo -c output.c  -fPIC -DPIC -o .libs/output.o
output.c:43:10: fatal error: sys/sysctl.h: No such file or directory
   43 | #include <sys/sysctl.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:636 : output.lo] Erreur 1
make[1] : on quitte le répertoire « /home/assoualaye/RASPA2/src »
make: *** [Makefile:392 : all-recursive] Erreur 1"
0
mamiemando Messages postés 33642 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 avril 2025 7 844
Modifié le 6 mars 2025 à 12:18

Bonjour,

Explication courte

C'est une erreur classique, voir par exemple ici. Il faut remplacer :

#include <sys/sysctl.h>

par :

#include <stddef.h>
#include <linux/sysctl.h>

Explication détaillée

Quand tu inclues <sys/sysctl.h>, ton compilateur (gcc) regarde dans les dossiers standards propre à ton système d'exploitation (sous Linux : /usr/include, /usr/local/include, etc) et ceux éventuellement passés en paramètre avec l'option -I ou -isystem.

On parle ici d'un fichier "standard" donc il devrait être dans /usr/include/sys/sysctl.h. Malheureusement, sur les distributions modernes, on s'aperçoit que ce fichier n'existe pas ! Il n'est même fourni par aucun paquet !

En effet si on installe apt-file :

sudo apt update
sudo apt install apt-file
sudo apt-file update
apt-file search sysctl.h | grep include/sys/sysctl.h

... la dernière commande ci-dessus retourne par exemple :

(mando@velvet) (~) $ apt-file search sysctl.h | grep include/sys/sysctl.h
python3-pycparser: /usr/share/python3-pycparser/fake_libc_include/sys/sysctl.h

Si on modifie un peu la recherche :

(mando@velvet) (~) $ apt-file search sysctl.h | grep /usr/include | grep /sysctl.h
dietlibc-dev: /usr/include/diet/sys/sysctl.h
libell-dev: /usr/include/ell/sysctl.h
libopenafs-dev: /usr/include/afs/sysctl.h
libxen-dev: /usr/include/xen/sysctl.h
linux-libc-dev: /usr/include/linux/sysctl.h

Là, on voit quelque chose d'intéressant : la dernière ligne "fleure" le bon header, donc sous réserve que le paquet linxu-libc-dev soit installé :

sudo apt install linux-libc-dev

... on devrait avoir un fichier /usr/include/linux/sysctl.h.

Vérifions. Soit le fichier toto.c qui contient :

#include <linux/sysctl.h>

int main() {
    return 0;
}

On compile :

(mando@velvet) (~) $ gcc toto.c 
In file included from toto.c:2:
/usr/include/linux/sysctl.h:39:9: error: unknown type name ‘size_t’
   39 |         size_t *oldlenp;
      |         ^~~~~~
/usr/include/linux/sysctl.h:28:1: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’
   27 | #include <linux/types.h>
  +++ |+#include <stddef.h>
   28 | 
/usr/include/linux/sysctl.h:41:9: error: unknown type name ‘size_t’
   41 |         size_t newlen;
      |         ^~~~~~
/usr/include/linux/sysctl.h:41:9: note: ‘size_t’ is defined in header ‘<stddef.h>’; this is probably fixable by adding ‘#include <stddef.h>’

Ici le compilateur nous indique qu'il faut inclure <stddef.h> :

#include <stddef.h>
#include <linux/sysctl.h>

int main() {
    return 0;
}

Cette fois le programme compile sans erreur :-)

Bonne chance

0
assoualayegustave Messages postés 7 Date d'inscription vendredi 3 mai 2019 Statut Membre Dernière intervention 7 mars 2025
Modifié le 10 mars 2025 à 15:31

Bonjour et merci pour vos orientations!

J'ai essayé de faire comme vous m'avez indiquer, mais quand je fais :

make

... voici ce qui sort :

assoualaye@assoualaye-HP-ProBook-440-G6:~/RASPA2$ make
Making all in src
make[1] : on entre dans le répertoire « /home/assoualaye/RASPA2/src »
/bin/bash ../libtool  --tag=CC   --mode=link gcc  -g -O2   -o simulate main.o libraspa2.la
libtool: link: gcc -g -O2 -o .libs/simulate main.o  ./.libs/libraspa2.so -Wl,-rpath -Wl,/home/assoualaye/Research/simulations/lib
/usr/bin/ld: ./.libs/libraspa2.so: undefined reference to `sysctl'
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:554 : simulate] Erreur 1
make[1] : on quitte le répertoire « /home/assoualaye/RASPA2/src »
make: *** [Makefile:392 : all-recursive] Erreur 1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33642 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 avril 2025 7 844
Modifié le 10 mars 2025 à 15:28

Bonjour,

sysctl n'existe plus donc l'erreur ne me surprend pas. Mais en fait si je comprends bien ton but est d'installer raspa2. alors pourquoi ne pas essayer de l'installer directement via pip ?

Sinon j'ai regardé un peu le code de ce dépôt. sysctl n'est utilisé que dans src/output.c et ne sert qu'à afficher des métadonnées dans un fichier de sortie. Autant dire que ça ne me paraît pas fondamental, il suffirait de commenter l'inclusion et le bloc de code suivants à l'aide de /* ... */ :

/* #include <sys/sysctl.h> */

...

/*
  // get hostname and cpu-info for linux
  #if defined (__linux__)|| defined(__linux)
    len = sizeof(buffer);
    
    mib[0] = CTL_KERN;
    mib[1] = KERN_NODENAME;
    sysctl(mib, 2, &buffer, &len, NULL, 0);
    fprintf(FilePtr,"Hostname:    %s\n",buffer);
  
    mib[0] = CTL_KERN;
    mib[1] = KERN_OSTYPE;
    sysctl(mib, 2, &buffer, &len, NULL, 0);
    fprintf(FilePtr,"OS type:     %s\n",buffer);
  
    mib[0] = CTL_KERN;
    mib[1] = KERN_OSRELEASE;
    sysctl(mib, 2, &buffer, &len, NULL, 0);
    fprintf(FilePtr,"OS release:  %s\n",buffer);
  
    mib[0] = CTL_KERN;
    mib[1] = KERN_VERSION;
    sysctl(mib, 2, &buffer, &len, NULL, 0);
    fprintf(FilePtr,"OS version:  %s\n",buffer);
    
    fprintf(FilePtr,"\n");
  #endif
*/

Autres corrections à apporter car les compilateurs récents sont moins tolérants.

Dans src/mc_moves.c, il faut ajouter ajouter à la suite des #include existants :

#include "molecule.h"

Dans src/molecule.h, en fin de fichier, la ligne avant le #endif :

int numberOfReactionMoleculesForComponent(int comp);

Dans src/input.h, en fin de fichier, la ligne avant le #endif :

void bubble_sort(int list[], int n);

Dans src/run.c, corriger les déclarations des variables externes en supprimant leur initialisation, qui n'a pas de sens puisqu'on parle de variables externes :

extern bool STREAM;
extern char *INPUT_CRYSTAL;
extern char *PORE_SIZE_DISTRIBUTION_OUTPUT;
extern size_t PORE_SIZE_DISTRIBUTION_OUTPUT_SIZE;
extern char **FILE_CONTENTS;
extern size_t *FILE_SIZES;

Visiblement ce projet n'est plus trop maintenu. Donc je t'invite dans github à faire un fork et à travailler sur cette copie (nécessite un compte github). Quand tu seras parvenu à corriger toutes les erreurs, fais une pull request (PR) pour que tes corrections bénéficient à ce projet. Une fois ta PR soumise, elle devrait apparaître ici et ce sera au propriétaire du dépôt de l'accepter ou non. S'il l'accepte tu pourras détruire ton fork en toute sécurité puisque de toute façon tes modifications auront été incorporées dans le dépôt de départ.

sudo apt install build-essential git autoconf automake libtool make
git clone https://github.com/numat/RASPA2
cd RASPA2-master/
mkdir m4
aclocal
autoreconf -i
autoupdate 
automake --add-missing
autoconf
./configure
make -j4

Compilateur utilisé :

gcc --version
gcc (Debian 14.2.0-17) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Bonne chance

0