Installation de RASPA2 sur UBUNTU 24.04
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
- Installation de RASPA2 sur UBUNTU 24.04
- Ubuntu 24.04 - Accueil - Ubuntu
- Ubuntu iso - Télécharger - Systèmes d'exploitation
- Ubuntu 32 bits - Télécharger - Systèmes d'exploitation
- Installer chromecast sur tv - Guide
- Installation windows 10 sans compte microsoft - Guide
5 réponses
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
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"
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionModifié 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