appler mes programmes à partir d'un seul répertoire de travail

appler mes programmes à partir d'un seul répertoire de travail - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 10-08-2013 à 18:42:55    

Bonjour, je cherche comment faire sur Gnu/Linux (Debian) pour que mes programme utilise toujours le même répertoire de travail malgré la diversité des répertoire d'appel possible sur un Gnu fs ?

Reply

Marsh Posté le 10-08-2013 à 18:42:55   

Reply

Marsh Posté le 10-08-2013 à 19:02:44    

Tu peux ré-expliquer, STP ?


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 10-08-2013 à 19:09:27    

Fork Bomb a écrit :

Tu peux ré-expliquer, STP ?


Généralement quand tu lances un éxécutable, les opérations sur les fichiers prennent le répertoire d'où tu lances le programme. Je suppose que par défaut les soft utilise $PATH pour les chemins relatifs.
 
Si j'ai compris son soucis, il voudrait que par défaut, les softs utilisent un répertoire unique, genre ~/ pour ces opérations
 


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 10-08-2013 à 19:12:27    

o'gure a écrit :


Généralement quand tu lances un éxécutable, les opérations sur les fichiers prennent le répertoire d'où tu lances le programme. Je suppose que par défaut les soft utilise $PATH pour les chemins relatifs.
 
Si j'ai compris son soucis, il voudrait que par défaut, les softs utilisent un répertoire unique, genre ~/ pour ces opérations
 


Oh.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 10-08-2013 à 19:14:41    

Presque.
Merci.
 
J'utilise des programme qui créent des fichier dont je ne contrôle pas le path, des fichier partagé avec Ada, qui utilise le répertoire courant comme répertoire de travail.
Je voudrais que les appels des divers user passe par un mécanisme qui fait que le répertoire de travail sera toujours, le répertoire de travail du propriétaire des programmes.
 
Je suis en train de créer group et user pour voir ce que je peux faire, mais je sais pas.
Encore merci.

Reply

Marsh Posté le 10-08-2013 à 19:28:10    

Tu as essayé de faire simplement un script qui fait va aller dans le répertoire de travail voulu puis lancer le soft demander ?
le user n'aurait qu'à lancer le script

Message cité 2 fois
Message édité par o'gure le 10-08-2013 à 19:28:46

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 10-08-2013 à 20:29:22    

o'gure a écrit :

Tu as essayé de faire simplement un script qui fait va aller dans le répertoire de travail voulu puis lancer le soft demander ?
le user n'aurait qu'à lancer le script


Effectivement, ça fonctionne.
J'ai écrit 3 fichier à l'image de celui-ci :

Code :
  1. #!/bin/bash
  2. cd /usr/local/share/Adam/0.0.0alpha;
  3. /usr/local/bin/Adam/0.0.0alpha/Adam-mkproject;


 
Ca marche, y a pas mieux à faire ?
 
 
 
 
 
 
Après, je sais pas si je suis bien organisé. J'ai installé le truc dans /usr/local.
Dans le répertoire src, les sources et le Makefile qui va avec.
Dans lib, les lib
Dans share, mes fichier partager que je veux pas que on en crée d'autre.
Dans bin les script à l'image de ci-dessus + le répertoir Adam/version/ avec les exécutables.
Si vous pouvier regarder tout ce qui s'appelle Adam.
 

~$ find /usr/local -iname "adam*" -ls
1081073    4 drwxr-sr-x   3 root     staff        4096 août 10 19:28 /usr/local/share/Adam
1081050    4 -rw-r--r--   1 manuel   manuel        256 août 10 19:57 /usr/local/share/Adam/0.0.0alpha/adam.systemic.passwd
1081067    4 -rw-r--r--   1 manuel   manuel          4 août 10 19:58 /usr/local/share/Adam/0.0.0alpha/adam.systemic.last_project
1081057    4 -rw-r--r--   1 manuel   manuel       2282 août 10 18:29 /usr/local/share/Adam/0.0.0alpha/src/lib/adam-systemic.adb
1081054    4 -rw-r--r--   1 manuel   manuel       1352 août 10 14:56 /usr/local/share/Adam/0.0.0alpha/src/lib/adam.ads
1081060    4 -rw-r--r--   1 manuel   manuel        962 août 10 18:16 /usr/local/share/Adam/0.0.0alpha/src/lib/adam-systemic.ads
1081055    4 -rw-r--r--   1 manuel   manuel        987 août 10 16:19 /usr/local/share/Adam/0.0.0alpha/src/lib/adam-project_manager.adb
1081056    4 -rw-r--r--   1 manuel   manuel       1096 août 10 18:21 /usr/local/share/Adam/0.0.0alpha/src/lib/adam-systemic-admin.adb
1081059    4 -rw-r--r--   1 manuel   manuel        622 août 10 18:21 /usr/local/share/Adam/0.0.0alpha/src/lib/adam-systemic-admin.ads
1081058    4 -rw-r--r--   1 manuel   manuel        665 août 10 17:56 /usr/local/share/Adam/0.0.0alpha/src/lib/adam-project_manager.ads
1081065    4 -rw-r--r--   1 manuel   manuel          1 août 10 19:57 /usr/local/share/Adam/0.0.0alpha/adam.systemic.initialized
1081048   36 -rw-r--r--   1 manuel   manuel      34432 août 10 20:11 /usr/local/share/Adam/0.0.0alpha/adam.systemic.project_set
1081079    4 drwxr-sr-x   3 root     staff        4096 août 10 19:31 /usr/local/share/man/Adam
1081076    4 drwxr-sr-x   3 root     staff        4096 août 10 19:31 /usr/local/games/Adam
1081080    4 drwxr-sr-x   3 root     staff        4096 août 10 19:31 /usr/local/sbin/Adam
1081078    4 drwxr-sr-x   3 adam     adam         4096 août 10 19:31 /usr/local/lib/Adam
279467    4 -rw-r--r--   1 adam     adam         2375 août 10 20:07 /usr/local/lib/Adam/0.0.0alpha/adam-project_manager.ali
279466    4 -rw-r--r--   1 adam     adam         2010 août 10 20:07 /usr/local/lib/Adam/0.0.0alpha/adam.ali
279493    4 -rw-r--r--   1 adam     adam         1692 août 10 20:07 /usr/local/lib/Adam/0.0.0alpha/adam-project_manager.o
279495    4 -rw-r--r--   1 adam     adam         2920 août 10 20:07 /usr/local/lib/Adam/0.0.0alpha/adam-systemic-admin.o
279469    4 -rw-r--r--   1 adam     adam         4020 août 10 20:07 /usr/local/lib/Adam/0.0.0alpha/adam-systemic.ali
279494   12 -rw-r--r--   1 adam     adam         9072 août 10 20:07 /usr/local/lib/Adam/0.0.0alpha/adam-systemic.o
279468    4 -rw-r--r--   1 adam     adam         2439 août 10 20:07 /usr/local/lib/Adam/0.0.0alpha/adam-systemic-admin.ali
279492    8 -rw-r--r--   1 adam     adam         4800 août 10 20:07 /usr/local/lib/Adam/0.0.0alpha/adam.o
1081074    4 drwxr-sr-x   3 root     manuel       4096 août 10 19:34 /usr/local/Documentations/Adam
1081068    4 -rwxr-xr-x   1 root     staff         103 août 10 19:55 /usr/local/bin/Adam-init.sh
279473    4 drwxr-sr-x   3 adam     adam         4096 août 10 19:41 /usr/local/bin/Adam
279504   36 -rwxr-xr-x   1 adam     adam        36389 août 10 20:09 /usr/local/bin/Adam/0.0.0alpha/Adam-rmproject
279500   36 -rwxr-xr-x   1 adam     adam        36158 août 10 20:09 /usr/local/bin/Adam/0.0.0alpha/Adam-init
279502   36 -rwxr-xr-x   1 adam     adam        35779 août 10 20:09 /usr/local/bin/Adam/0.0.0alpha/Adam-mkproject
1081049    4 -rwxr-xr-x   1 root     staff         108 août 10 19:53 /usr/local/bin/Adam-rmproject.sh
1081066    4 -rwxr-xr-x   1 root     staff         108 août 10 19:55 /usr/local/bin/Adam-mkproject.sh
1081077    4 drwxr-sr-x   3 root     staff        4096 août 10 19:31 /usr/local/include/Adam
1081081    4 drwxr-sr-x   3 adam     adam         4096 août 10 19:31 /usr/local/src/Adam
279483    4 -rw-r--r--   1 adam     adam         2282 août 10 18:29 /usr/local/src/Adam/0.0.0alpha/lib/adam-systemic.adb
279484    4 -rw-r--r--   1 adam     adam         1352 août 10 14:56 /usr/local/src/Adam/0.0.0alpha/lib/adam.ads
279485    4 -rw-r--r--   1 adam     adam          962 août 10 18:16 /usr/local/src/Adam/0.0.0alpha/lib/adam-systemic.ads
279486    4 -rw-r--r--   1 adam     adam          987 août 10 16:19 /usr/local/src/Adam/0.0.0alpha/lib/adam-project_manager.adb
279487    4 -rw-r--r--   1 adam     adam         1096 août 10 18:21 /usr/local/src/Adam/0.0.0alpha/lib/adam-systemic-admin.adb
279488    4 -rw-r--r--   1 adam     adam          622 août 10 18:21 /usr/local/src/Adam/0.0.0alpha/lib/adam-systemic-admin.ads
279489    4 -rw-r--r--   1 adam     adam          665 août 10 17:56 /usr/local/src/Adam/0.0.0alpha/lib/adam-project_manager.ads
1081075    4 drwxr-sr-x   3 root     staff        4096 août 10 19:31 /usr/local/etc/Adam

Reply

Marsh Posté le 10-08-2013 à 20:34:02    

Ah ben non ça va pas parce que les fichier partager sont la propriété de l'utilisateur.
Je voudrais que ce soit la propriété du programme, j'au créer un utilisateur adam, et un group adam, Comment je fais ?
S'il vous plaît ?
 
Merci désolé pour la liste àa reste unbitable ces truc.

Reply

Marsh Posté le 10-08-2013 à 20:49:11    

sudo dans ton script ?


Message édité par o'gure le 10-08-2013 à 20:49:41

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 10-08-2013 à 21:02:48    

j'aime pas.
 
 
J'ai trouvé pour le propriétaire, maintenant je cherche pour les accès.
Je suis manuel, j'accède à des fichier d'adam mais j'ai pas le droit d'écrire malgrès que j'appartienne au group adam.
Je sèche.
 
 
Merci pour ta réponse o'gure. T'as pas autre chose ?

Reply

Marsh Posté le 10-08-2013 à 21:02:48   

Reply

Marsh Posté le 10-08-2013 à 21:04:15    

Pourquoi tu n'aimes pas ?
C'est exactement conçu pour exécuter des softs avec des privilèges d'un autre user et controler correctement via le fichier sudoers.


Message édité par o'gure le 10-08-2013 à 21:07:37

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 10-08-2013 à 21:06:48    

sinon http://fr.wikipedia.org/wiki/Setuid sur ton programme


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 10-08-2013 à 21:08:49    

parce que pour faire un su il faut le mot de passe et si je donne le mot de passe c'est pas la peine d'en avoir un.
Mais ça marche finalement, je sais pas ce que j'ai fait avant mais je viens de retester ça fonctionne comme je veux.
 
Merci.  :jap:  :jap:

Reply

Marsh Posté le 10-08-2013 à 21:09:59    


Je ne te parles pas d'un su mais de sudo et lis la doc de sudo pour apprendre à t'en servir parce que là t'es à côté du sujet :D


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 10-08-2013 à 21:13:44    

J'y penserait quand j'en aurais peut-être besoin  :whistle:  
 

Reply

Marsh Posté le 10-08-2013 à 22:38:16    

Bonsoir, ...  :D  
 
Je reviens pour un service à demander à un Gnu/Linuxien,
 
Est-ce que vous pourriez télécharger mon projet : et le tester chez vous pour voir si quelque chose de plus est nécessaire.
 
c'estici Ada manufacture by jovalise.
 
Faut ce placer dans le répertoire local et détarer l'archive.
Aprés faut faire :
- Adam-init.sh
- Adam-mkproject.sh
- Adam-list.
il y a Adam-rmproject.sh aussi.
 
ces 4 petit bout de code vous permet de maintenir une list de 128 projet avec qui comporte un nom et une version.
Ecrit avec Ada, vous pouvez utiliser la bibliothèque partagé directement dans le même langage.
Normalement 4 fichiers sont créés dans le répertoire /usr/local/share/Adam/0.0.0alpha et c'est tout.
Les divers programme peuvent en revanche vous demander des information sur les projets et vous même.
 
Donc, la s'agit de détarer l'archive et tester si ça s'exécute correctement.
Merci.

Reply

Marsh Posté le 12-08-2013 à 18:26:57    

Bonjour,
 
 
Bon, en fait je viens voir ce que vous pensez de ma configuration - procédure d'installation ?
 
La procédure d'install :

To install Ada manufacture :
copy archive in to your prefered directory
unzip untar archive
change directory to prefered/adamanufacture-"version"
do su command
execute ./configure.sh
make all
execute ./install.sh
exit su status.
add prefered/adamanufacture directory at your PATH.


 
 
Voici mes scipts
 
./configure.sh

Code :
  1. #!/bin/bash
  2. declare work_dir=/usr/local
  3. declare project=adamanufacture
  4. declare version=0.0.4alpha
  5. declare bin_dir=$work_dir/bin/${project}-${version}
  6. declare lib_dir=./lib
  7. declare obj_dir=$work_dir/lib/${project}-${version}
  8. declare src_dir=.
  9. declare shared_dir=$work_dir/share/${project}-${version}
  10. if [ -L $work_dir/$project ]; then
  11.    rm $work_dir/$project;
  12. fi;
  13. ln -s $bin_dir $work_dir/$project
  14. mkdir -p $bin_dir/bin;
  15. mkdir -p $obj_dir;
  16. mkdir -p $shared_dir;


 
 
Le Makefile :

flags="-largs -static -bargs -static"
project=adamanufacture
version=0.0.4alpha
compiler=gnatmake
work_dir=/usr/local
bin_dir=${work_dir}/bin/${project}-${version}/bin
lib_dir=src/lib
obj_dir=${work_dir}/lib/${project}-${version}
src_dir=src
default:
        @echo by default, nothing to be done.
 
all: init mkproject rmproject list reset upproject strip
 
init:
        ${compiler} -o ${bin_dir}/${project}-$@ -D ${obj_dir} -aI${lib_dir} ${src_dir}/$@.adb ${falgs}
 
mkproject:
        ${compiler} -o ${bin_dir}/${project}-$@ -D ${obj_dir} -aI${lib_dir} ${src_dir}/$@.adb ${falgs}
 
rmproject:
        ${compiler} -o ${bin_dir}/${project}-$@ -D ${obj_dir} -aI${lib_dir} ${src_dir}/$@.adb ${falgs}
 
list:
        ${compiler} -o ${bin_dir}/${project}-$@ -D ${obj_dir} -aI${lib_dir} ${src_dir}/$@.adb ${falgs}
 
reset:
        ${compiler} -o ${bin_dir}/${project}-$@ -D ${obj_dir} -aI${lib_dir} ${src_dir}/$@.adb ${falgs}
 
upproject:
        ${compiler} -o ${bin_dir}/${project}-$@ -D ${obj_dir} -aI${lib_dir} ${src_dir}/$@.adb ${falgs}
 
strip:
        strip ${bin_dir}/${project}-init ${bin_dir}/${project}-mkproject ${bin_dir}/${project}-rmproject \
        ${bin_dir}/${project}-list ${bin_dir}/${project}-reset ${bin_dir}/${project}-upproject
 
mrproper:
        rm ${obj_dir}/*.ali
 
clean:
        rm ${obj_dir}/*.o
        rm ${bin_dir}/*


 
Le ./install.sh

Code :
  1. #!/bin/bash
  2. declare work_dir=/usr/local
  3. # # creating new user adamufacture with group adamanufacture
  4. adduser adamanufacture
  5.  
  6. #admin the rights of usr/local sub directory
  7. chown -R adamanufacture.adamanufacture $work_dir/share
  8. chmod 775 $work_dir/bin
  9.  
  10. # Construct the four script to call Ada manufacture from only one directory.
  11. project=adamanufacture
  12. version=0.0.4alpha
  13. declare -a objects=(${project}-init ${project}-mkproject ${project}-rmproject ${project}-list ${project}-reset ${project}-upproject)
  14. echo "installing sh ..."
  15.  
  16. declare sh_dir=$work_dir/bin/${project}-${version}
  17. declare bin_dir=$work_dir/bin/${project}-${version}/bin
  18. declare lib_dir=$work_dir/src/lib
  19. declare obj_dir=$work_dir/lib/${project}-${version}
  20. declare shared_dir=$work_dir/share/${project}-${version}
  21.  
  22.  
  23. for i in ${!objects[*]}; do
  24.    echo "${objects[i]}";
  25.    chmod 4775 $bin_dir/${objects[i]}
  26.    echo "#!/bin/bash" > $sh_dir/${objects[i]}.sh
  27.    echo "declare work_dir=/usr/local" >> $sh_dir/${objects[i]}.sh
  28.    echo "declare bin_dir=$work_dir/bin/${project}-${version}" >> $sh_dir/${objects[i]}.sh
  29.    echo "declare lib_dir=$work_dir/src/lib" >> $sh_dir/${objects[i]}.sh
  30.    echo "declare obj_dir=$work_dir/lib/${project}-${version}" >> $sh_dir/${objects[i]}.sh
  31.    echo "declare shared_dir=$work_dir/share/${project}-${version}" >> $sh_dir/${objects[i]}.sh
  32.    echo "cd ${shared_dir}" >> $sh_dir/${objects[i]}.sh
  33.    echo "$bin_dir/${objects[i]}" >>  $sh_dir/${objects[i]}.sh    
  34.    chmod a+x $sh_dir/${objects[i]}.sh;


 
 
En fait j'ai un problème, c'est a changement de version, je doit modifier la version dans trois fichiers à chaque fois, c'est un peu lourd, sans plus je vais pas mourir de suite.  :D

Reply

Marsh Posté le 12-08-2013 à 19:39:01    

Re-  
 
 
 
Bon, ben, j'ai un autre problème, je pense que c'est du à ce que j'ai fait là :
 

#admin the rights of usr/local sub directory
chown -R adamanufacture.adamanufacture $work_dir/share
chmod 775 $work_dir/bin


 
Je cherche comment permettre au utilisateur qui appartiennent au group adamanufacture de modifier les fichier dans /usr/local/share/adamanufacture-version
J'y arrive pas.
 
S'il vous plaît ? Si vous avez la soluce ?
 
 
Du coup, je suis en train de modifier mon fichier install.sh.
 

Code :
  1. #!/bin/bash                                                                                                                                                                                                        
  2. declare work_dir=/usr/local
  3. # # creating new user adamufacture with group adamanufacture                                                                                                                                                        
  4. adduser adamanufacture
  5.  
  6. project=adamanufacture
  7. version=0.0.4alpha
  8.  
  9. # Construct the four script to call Ada manufacture from only one directory.                                                                                                                                        
  10. declare -a objects=(${project}-init ${project}-mkproject ${project}-rmproject ${project}-list ${project}-reset ${project}-upproject)
  11. echo "installing sh ..."
  12.  
  13. declare sh_dir=$work_dir/bin/${project}-${version}
  14. declare bin_dir=$work_dir/bin/${project}-${version}/bin
  15. declare lib_dir=$work_dir/src/lib
  16. declare obj_dir=$work_dir/lib/${project}-${version}
  17. declare shared_dir=$work_dir/share/${project}-${version}
  18.  
  19. #admin the rights of usr/local sub directory                                                                                                                                                                        
  20. chown -R adamanufacture.adamanufacture $bin_dir
  21. chown -R adamanufacture.adamanufacture $shared_dir
  22.  
  23. for i in ${!objects[*]}; do
  24.    echo "${objects[i]}";
  25.  
  26.    chmod 4755 $bin_dir/${objects[i]}
  27.    echo "#!/bin/bash" > $sh_dir/${objects[i]}.sh
  28.    echo "declare work_dir=/usr/local" >> $sh_dir/${objects[i]}.sh
  29.    echo "declare bin_dir=$work_dir/bin/${project}-${version}" >> $sh_dir/${objects[i]}.sh
  30.    echo "declare lib_dir=$work_dir/src/lib" >> $sh_dir/${objects[i]}.sh
  31.    echo "declare obj_dir=$work_dir/lib/${project}-${version}" >> $sh_dir/${objects[i]}.sh
  32.    echo "declare shared_dir=$work_dir/share/${project}-${version}" >> $sh_dir/${objects[i]}.sh
  33.    echo "cd ${shared_dir}" >> $sh_dir/${objects[i]}.sh
  34.    echo "$bin_dir/${objects[i]}" >>  $sh_dir/${objects[i]}.sh
  35.    chmod a+x $sh_dir/${objects[i]}.sh;
  36.  
  37. done;


 

Reply

Marsh Posté le 13-08-2013 à 21:43:11    

o'gure a écrit :

Tu as essayé de faire simplement un script qui fait va aller dans le répertoire de travail voulu puis lancer le soft demander ?
le user n'aurait qu'à lancer le script


 
Comment je passe les argument de ligne de commande à mon programme ?
 
Svp ? Merci.

Reply

Marsh Posté le 13-08-2013 à 22:04:29    

J'ai trouvé.
 
Merci, désolé.  :whistle:

Reply

Marsh Posté le 14-08-2013 à 23:47:04    

Bonsoir,
Je reviens avec ce que j'espère être le dernier problème de ma premiere vesion beta.
 
J'ai un script bash avec une variable contenant une espace, c'est une chaîne.
Je veux la récupéré sur Gnu/Linux sous Ada avec Getops paramerter me renvoie que le premier mot de ma chaîne.
Comment je peux faire ?
S'il vous plaît, Merci.
 
 
En réalité j'ai un script Bash qui déclare la variable, qui la passe à un second qui la passe à Ada.


Message édité par Profil supprimé le 15-08-2013 à 00:01:16
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed