Bonjour à tous,
Lorsque je dois installer des programmes manuellement(qui ne sont pas des paquetages) en les compilant par make, make install...., dans quel répertoire il est préférable de les installer.
Personnellement je commence toujours par décompresser le programme dans mon répertoire /home/dossier_personnelle, et il me créer un répertoire du nom du programme en question et ensuite je vais dans ce répertoire /home/dossier_personnel/mon_programme, et je tape habituellement :
./configure
make
make install
Avec le temps mon dossier_personnel devient rempli et hier j'ai commis une erreur qui fait que j'ai supprimé mon dossier_personnel mais j'avais partitionné linux en deux partition, une pour "/" et l'autre pour "/home" alors je n'ai pas à tous réinstaller linux, une bonne chose de faire 2 partition.
Même chose lorsque j'installe un programme comme firefox par exemple qui n'a pas besoin d'être compilé. J'ai tout simplement décompressé le fichier dans mon dossier_personnel et je me retrouve avec un dossier firefox et sont exécutable à l'intérieur. Par contre j'ai du réinstaller firefox puisque je l'avais perdu en supprimant mon dossier_personnel.
Finalement si j'installait mes programmes(qui ne sont pas des paquetages) dans "/home/je_ne_sais_quoi" sans déranger Linux alors je ne perdrais rien en cas de mauvaise manip comme hier.
Dans quel répertoir installer ces progs sans déranger Linux et sans alourdir ou ralentir?
Je suis sous Mandrake 10.0 sous l'environnement xfce4
Merci de votre aide.
# /usr/local
Posté par marialamie . Évalué à 1.
[^] # Re: /usr/local
Posté par Antoine Reilles (site web personnel) . Évalué à 3.
Avec stow, tu installe ton logiciel dans disons, /usr/local/stow/bidule, en passant un --prefix=/usr/local/stow/bidule au ./configure. Ensuite, tu demandes a stow de l'"activer", en fesant des liens vers /usr/local/, histoire d'avoir les executables dans le path, et la doc facile a trouver.
Pour désinstaller, il suffit de demander à stow de supprimer ces liens, et de faire rm -rf bidule, et tu as l'assurance d'avoir fait une désinstallation propre
[^] # Re: /usr/local
Posté par gtr . Évalué à 1.
Merci
# Installer à partir des sources.
Posté par Egidius . Évalué à 2.
Habituellement, on procède ainsi :
Il existe un répertoire /usr/local
On doit trouver un /usr/local/src (sinon le creer)
Generalement les installation de programme se font sous le compte root
Aller dans le repertoire d'installation
cd /usr/local/src
Vérifier le contenu de l'archive "foo"
tar -ztvf foo.tar.gz
tar -jtvf foo.tar.bz2
si l'archive contient une arborescence ( foo-v.r.n version release etc ..)
alors la decompacter
tar -zxvf foo.tar.gz tar -jxvf foo.tar.bz2
cd foo*
lire README et INSTALL
ensuite ./configure
make
make install
Par défaut la variable PREFIX contient alors le chemin /usr/local
L'installation se fera dans l'arborescence /usr/local qui contient les répertoires bin, lib, share et autre
[^] # Re: Installer à partir des sources.
Posté par gtr . Évalué à 2.
Mais si j'installer mes programmes dans le répertoire /usr/local/, il faut être en root par la suite pour pouvoir les exécuter non? J'ai essayé et il faut que je me log en root pour exécuter un prog installé dans /usr/local. Comment faire pour ne pas avoir à me loguer en root à chaque fois que je veux exécuter un prog?
Pourquoi le répertoire /usr/local/src, c'est quoi le répertoire /src/. J'installe dans /usr/local/ ou dans /usr/local/src? Je suis pas certain de comprendre ce que tu veux dire pour le répertoire /src/.
Merci de votre aide.
[^] # Re: Installer à partir des sources.
Posté par Egidius . Évalué à 1.
C'est un répertoire dans lequel on décompacte les sources de chaque programme.
Et c'est dans le répertoire propre à chaque programme qu'on compile.
la commande configure crée un fichier Makefile, c'est dans ce fichier qu'on trouve toutes les indications nécessaires à la compilation et à l'installation.
Par défaut, la variable PREFIX contient le répertoire à partir duquel seront distribué tous les fichiers produits par la compilation.
Et presque à chaque fois, PREFIX = /usr/local
Sinon on tape
./configure --prefix=/usr/local
Ainsi au moment de l'installation, les exécutable seront installés dans $PREFIX/bin
les librairies dynamiques dans $PREFIX/lib
etc...
Normalement, make install doit donner les droits d'éxecution aux programmes à d'autres utilisateurs que root.
La commande ls -l /usr/local/bin/programme donne quelque chose comme :
-rwxr-xr-x 1 root root 35624 oct 12 2003 programme
le dernier x indique que les utilisateurs autres que le créateur de programme peuvent l'utiliser.
[^] # Re: Installer à partir des sources.
Posté par Egidius . Évalué à 1.
[^] # Re: Installer à partir des sources.
Posté par gtr . Évalué à 2.
En ce moment je ne compilais pas de programme. Comme j'ai supprimer mon dossier_personnel hier avec plusieurs programmes que j'avais compilé à l'intérieur alors il me faut recommencer.
Pour l'instant j'installais seulement Firefox et Thunderbird et c'est deux programme ne se compile pas, il suffit simplement de décompresser le fichier firefox.tar par exemple et j'ai le répertoire par le suite "firefox" et l'exécutable dans ce répertoire, pas besoin de compiler. C'est pour cela que je ne peut le mettre dans le répertoire /usr/local sinon je dois être en root après pour l'exécuter.
Bon je vient d'installer le jeux Foobillard-3a dans le /usr/local.
J'ai décompacter dans /usr/local/src et j'ai compiller dans /usr/local/src/foobillard/ avec la commande :
./configure --prefix=/usr/local/
make
make install (en root)
Tous fonctionne à merveille contrairement à lorsque je l'installais dans mon dossier_personnel par la simple commande ./configure, make et make install.
De plus je vois que le peut aussi supprimer le répertoire foobillard par la suite et le programme fonctionne quande même, je vais éviter de surgarger mon dd de tous ces répertoire que je gardais toujours.
Petite question, une fois terminé l'installation d'un programme(make install), si je supprime le répertoire, est ce que je dois tou de même taper la commande "make clean" après l'installation fait avec "make install" ?
Si je n'utilise pas le prog stow comme le mentionne Antoine, comment faire pour désintaller ou supprimer un programme installe comme mentionné dans ce message?
Encore merci car là je vient d'apprendre quelques chose de vraiment bien pour moi:0)
[^] # Désinstaller
Posté par Egidius . Évalué à 1.
make clean permet d'enlever tous les fichiers générés par la compilation (commande make). On l'utilise généralement pour recommencer une compilation qui s'est terminée en erreur. C'est souvent "plus propre" de tout recompiler.
Attention !!! La destruction du répertoire des sources d'un programme ne désinstalle pas le programme.
Pour désinstaller vraiment le programme, il faut détruire tous les fichiers installés dans les différents répertoires de /usr/local par la commande make install. Encore faut-il les connaître et bien savoir ce que l'on fait !
La lecture des fichiers log d'installation donne l'information mais c'est assez austère !
Là, le conseil d'Antoire d'utiliser stow est excellent parce que cet utilitaire permettra de désinstaller sans erreur un programme que tu ne veut plus utiliser.
[^] # Re: Désinstaller
Posté par gtr . Évalué à 1.
********
* STOW *
********
L'UTILITAIRE QU'IL VOUS FAUT
Voila le principe:
** on cree un repertoire /usr/local/stow.
** Quand on veut installer (mettons) vim 5.3 a partir d'un tgz,
on cree un repertoire /usr/local/stow/vim_5.3.
on decompresse l'archive vim_5.3.tgz dans /tmp,
on fait le ./configure avec le prefix '--prefix=/usr/local/stow/vim_5.3'
on fait le make; make install.
Et oh miracle, vim5.3 s'installe dans /usr/local/stow/vim_5.3.
En fait, les binaires sont (automatiquement) dans
/usr/local/stow/vim_5.3/bin,
les doc (automatiquement) dans /usr/local/stow/vim_5.3/doc/vim, les man
dans /usr/local/stow/vim_5.3/man/man1, les fichiers share dans
/usr/local/stow/vim_5.3/share/vim.
** Et la, l'utilitaire stow rentre en jeu:
en allant dans /usr/local/stow, et en tapant 'stow vim_5.3', le
programme va automatiquement faire des liens symboliques des fichiers de
/usr/local/stow/vim_5.3/bin dans /usr/local/bin, de ceux de
/usr/local/stow/vim_5.3/doc/vim dans /usr/local/doc/vim etc.
On se retrouve donc avec tous les fichiers de vim 5.3 ranges dans un
seul repertoire mais accessible via /usr/local.
** Quand le vim 5.4 va sortir, j'effacerai le 5.3
en allant dans /usr/local/stow et en faisant 'stow -D vim_5.3'.
A partir de la, tous les liens symboliques sont effaces,
et apres un petit 'rm -Rf /usr/local/stow/vim_5.3', je serai sur que le
programme aura ete efface COMPLETEMENT de mon disque!
** Voici comme exemple mon /usr/local/stow actuel:
acroread_3 fpc_0.99.8 nedit_5.0.2 wxxt_1.66
amp_0.7.6 gd_1.3 rar_2.0 xanim_2.70.7.0
candleweb_1.1 kermit_6.0.192 snes9x xfractint_3.04
demos klyx_0.9.3 staroffice_4.0 xmame_0.34b3.1
dosemu_0.98.2 l3enc_2.72 tkdesk_1.0b5 xmp_1.1.2
dozer-0.7.2b libtermcap_1.3 tkfont_1.1 xpinguin
dumb-games linuxconf_1.13r4 vim_5.3 xpostit+_2.3
dumb_0.13.2 mp3 wine
c'est assez clean, et chaque programme est dans son sous-repertoire
propre.
Et meme si le /usr/local est un peu "bordelique", je garde toujours un
controle absolu des .tgz que j'ai installe :)
** Quand on a une distrib style RedHat ou Debian, on peut ainsi separer
l'abre /usr ou les packages rpm ou deb sont installes, de l'arbre
/usr/local ou on installe les .tgz venus du net.
Et quand j'aurai vim 5.3 dispo en package pour ma Debian, je n'aurai
qu'a desinstaller le tgz avec la manip citee plus haut et a installer le
.deb pour me retrouver avec une distrib absolument propre.
En ce moment je n'ai pas de programme à installer mais j'en trouverais un d'ici peu.
Merci
[^] # Re: Désinstaller
Posté par Egidius . Évalué à 1.
[^] # Re: Désinstaller
Posté par gtr . Évalué à 1.
Je comprend pas ce que tu veux dire Egidius!
[^] # Re: Désinstaller
Posté par Egidius . Évalué à 1.
Roulez : expression populaire en vogue à la fin du XIX eme, au moment de l'apparition de la bicyclette., signifiant que ça fonctionne bien, dynamiquement.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.