Journal Réinventer la roue est parfois plus simple que de réutiliser l'existant ...

Posté par (page perso) .
Tags : aucun
-5
19
août
2010
... surtout lorsque l'existant n'est pas packagé pour ma distribution favorite: Fedora.

Je m'explique: je veux créer un plugin pour le moteur de recherche de bureau Tracker qui va lire les fichiers mbox et indexer les e-mails qu'il contient. En l'occurrence ces fichiers mbox font partie d'une application intranet et je dois indexer spécialement certains en-têtes.

J'aimerais utiliser tinymail qui correspond bien à mon besoin, mais il n'est pas packagé pour ma distribution. Et je me refuse à faire un sudo make install qui va certes m'installer cette bibliothèque mais ne va me proposer aucun moyen fiable et sûr de la désinstaller.

Et comme faire un RPM est loin d'être aussi facile que créer un paquet ArchLinux (comprendre, ça prend plus de 5 minutes), je ne sais pas comment je vais faire. Il me reste les systèmes de paquets 0install, klik ou encore autopackage, mais je ne sais pas si c'est forcément adapté à mon besoin, et je vais encore devoir apprendre un nouveau système.

Autre solution, augmenter mon Makefile de toutes les commandes nécessaires pour compiler tinymail en bibliothèque statique et le lier statiquement à mon plugin. Je ne sais pas comment on fait alors j'espère que ce sera rapide.

Sinon, je réécris un mauvais parseur mbox/mime et j'espère que les e-mails que je vais parser resteront simple, en ASCII 7bits.

PS: si vous avez une idée pour faciliter l'utilisation de logiciel non packagés, je suis preneur.


tinymail: http://tinymail.org/
tracker: http://projects.gnome.org/tracker/
  • # Simple install

    Posté par . Évalué à 10.

    > PS: si vous avez une idée pour faciliter l'utilisation de logiciel non packagés, je suis preneur.

    J'installe chaque package (ou groupe de packages) dans /opt/mon_package.
    Et mon /etc/bashrc scan /opt/*/bin pour les ajouter dans le PATH automatiquement.

    Si je n'en ai plus besoin, "rm -rf" est mon ami.
    • [^] # Re: Simple install

      Posté par (page perso) . Évalué à 2.

      Exactement, je fais la même chose, avec un ajout des LD_LIBRARY_PATH pour les lib et un ajout des PKG_CONFIG_PATH pour pouvoir installer des libs aussi.

      Ça marche sans souci et c'est facile à désinstaller paquet par paquet.
  • # Forum ?

    Posté par (page perso) . Évalué à 3.

    Ce ne serait pas plutôt dans les forums qu'il faudrait poster ça ?

    Sinon si le makefile est pas mal foutu, tu dois pouvoir définir le répertoire d'installation, par exemple /opt/foo. Et donc si le makefile te permet pas une désinstallation propre, tu fais un simple rm -fr /opt/foo. Ne pas oublier de mettre à jour tes variables d'environnement en conséquence bien sûr, par exemple PATH pour qu'il trouve bar dans /opt/foo/bar.
  • # Il y a un spec dans le source

    Posté par (page perso) . Évalué à 7.

    Tu dois pouvoir pondre ton rpm sachant que tinymail fournit un fichier spec pour builder un RPM. L'as tu essayé?
    http://gitorious.org/tinymail/tinymail/blobs/master/libtinym(...)
  • # GMime

    Posté par (page perso) . Évalué à 3.

    Et sinon, tu peux utiliser libgmime. C'est packagé, et y a même des bindings vala...
  • # --prefix

    Posté par (page perso) . Évalué à 4.

    ./configure --prefix=/opt/tinymail/

    "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

    • [^] # Re: --prefix

      Posté par . Évalué à 1.

      Encore faut il que tout passe par le prefix. J'ai vu pas mal de paquet qui insistait a mettre des choses dans /etc ...

      Pour être safe il faut faire un install en étant pas root.
  • # Contribuer ?

    Posté par (page perso) . Évalué à 10.

    Sinon, tu contribues à ta distribution pour le voir inclus dans celle ci.
  • # checkinstall

    Posté par . Évalué à 5.

    L'utilitaire checkinstall est là pour créer un RPM en se substituant à l'étape du "make install" dans le classique trio de commandes "./configure; make; make install". Le logiciel nous pose quelques questions sur le package à créer (titre, auteur, licence, résumé...) et lance en arrière plan le "make install", en prenant soin de noter tous les fichiers ajoutés/modifiés. Pour désinstaller le logiciel, un "rpm -e" fera l'affaire et pour le réinstaller, il suffira d'utiliser le fichier .rpm généré par checkinstall...

    La page de checkinstall
    http://www.asic-linux.com.mx/~izto/checkinstall/

    Une courte description en français
    http://www.trustonme.net/didactels/117.html
    • [^] # Re: checkinstall

      Posté par . Évalué à 3.

      checkinstall permet aussi de créer des paquets .deb
  • # PS: si vous avez une idée pour faciliter l'utilisation de logiciel non

    Posté par . Évalué à -1.

    >PS: si vous avez une idée pour faciliter l'utilisation de logiciel non packagés, je suis preneur.

    retourner sous Archlinux, ou mieux, demander à Fedora qu'ils adoptent le système des PKGBUILD

    Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

  • # STOW

    Posté par . Évalué à 8.

    Moi j'utilise stow depuis des années. Le principe est très simple:

    Tu installes ton programme dans /usr/local/stow/mon_program

    puis, dans le répertoire '/usr/local/stow' tu lances:

    $ stow mon_program

    Stow va ensuite créer plein de lien symboliques pour chaque fichier dans mon_program pour faire un sorte que, du point de vue système, tout est dans /usr/local.

    Donc tu n'as qu'à mettre /usr/local/bin et /usr/local/lib dans les bonnes variables d'environnement.

    Si tu veux désinstaller ton programme, va dans /usr/local/stow et lance:

    $ stow -D mon_program

    S'il a été modifié, tu peux le réinstallé avec:

    $ stow -R mon_program

    Et, cerise sur le gâteau, stow vérifie s'il y a des collisions avec d'autres programmes. Comme ça, tu ne risque pas d'écraser un fichier qui existe déjà!

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.