Journal dir2rpm: créer des rpm facilement

Posté par  (site web personnel) .
Étiquettes : aucune
19
7
sept.
2009
J'avais un problème: pouvoir installer et surtout facilement désinstaller des logiciels que j'ai compilé depuis des sources dans /usr/local.

Problème: certains projets (git par exemple) ne proposent pas de make uninstall. Comment faire ? Créer un package.

Les solutions existantes:
- checkinstall: je n'aime pas trop, il essaie de détecter ce qui est installer, sans garantie qu'il y arrive complètement. Et en plus il n'est plus maintenu et n'est pas dans les dépôts Fedora.
- alien: pareil, pas dans les dépôts. Et il faut créer une archite tar.gz avant (enfin je suppose qu'il arrive a convertir, je n'ai pas vraiment essayé).

Donc, j'ai fait un petit script zsh qui va tout faire tout seul. Il crée un fichier .spec et lance rpmbuild dessus pour créer un paquet rpm.

Bien sûr, le paquet rpm n'aura aucune dépendance, sera très mal fait, minimaliste ... mais je m'en fous, je veux juste pouvoir le désinstaller à la fin, proprement. Je ne cherche pas a publier le paquet.

Un petit exemple:

$ make prefix=/usr/local all doc info
$ make prefix=/usr/local DESTDIR=root install install-doc install-html install-info


J'ai maintenant git installé dans ./root/usr/local
Je veux créer un paquet:

$ dir2rpm.sh root local-git-1.6.4.2
...
...
rpmbuild -bb --rcfile root.rc --define '_topdir /usr/local/src/git-1.6.4.2/root.rpmbuild' root.spec
...
...

Created local-git-1.6.4.2-1.i686.rpm


Il ne reste plus qu'a l'installer:

$ sudo rpm -ivh local-git-1.6.4.2-1.i686.rpm
Preparing... ########################################### [100%]
1:local-git ########################################### [100%]


Si ça vous intéresse, le script se trouve par là: http://gitorious.org/dir2rpm

Si vous avez des alternatives, ça m'intéresse aussi.

Mildred
  • # slackware

    Posté par  . Évalué à 4.

    Ce petit programme, ça me fait penser à slackware. Un paquet qui s'installe, se désinstalle. Et c'est tout.
    • [^] # Re: slackware

      Posté par  . Évalué à 4.

      nope, c'est pas tout : on peut aussi ajouter un script post-install' et... une description du paquet ;)
    • [^] # Re: slackware

      Posté par  (site web personnel) . Évalué à 4.

      Avant, j'utilisais ArchLinux, et créer un paquet était simplissime. Il suffisait de créer un script shell PKGBUILD qui souvent est très court et de lancer makepkg ... et c'est bon.

      Finalement, j'utilise Fedora, il y a d'autres aspects que j'apprécie (entre autre le fait qu'ils sont en avance sur certains projets, qu'on dispose de PackageKit, de NetworkManager 0.7 ...).

      Pendant un temps, j'ai essayé de créer des paquets pour tous les programmes dont j'avais besoin et qui n'étaient pas packagés. Mais c'était long ... difficile. Donc j'ai abandonné, et je n'utilise plus vraiment d'applications non packagées.

      Jusqu'à ce que je décide d'installer la dernière version de git.

      J'espère que ça pourra être utile. Pour ma part, je pense que je ne vais pas me priver d'utiliser ce script.
      • [^] # Re: slackware

        Posté par  . Évalué à 2.

        C'est drôle ça j'ai le même parcours (Arch -> Fedora).
        J'ai récemment voulu retourner sous Arch pour voir, mais il n'y a pas moyen : Fedora est la distro qui me convient. Quand au gestionnaire de paquet, il n'y a pas photo : pacman est bien supérieur à yum ! Et faire un rpm c'est loin d'être immédiat. Mais je m'y suis fait ... Et la qualité des paquets est un vrai plus chez Fedora.
        • [^] # Re: slackware

          Posté par  (site web personnel) . Évalué à 3.

          Les paquets Arch sont super pratiques, ils sont faciles à faire, un peu rudimentaires certes.

          Par contre du coté RPM, on a des signatures GPG, une distinction paquet source - plusieurs paquets binaires. la philosophie est clairement différente. Pacman ne pourrait pas convenir à une distribution comme Fedora, ce n'est pas assez sécurisé, et pas assez poussé sur certains points.

          J'espère pouvoir dans le futur améliorer cet outil pour qu'on puisse faire de vrais paquets, avec toutes les métadonnées. Seulement avec une approche différente de rpmbuild. J'aimerais bien avoir ça pour toutes les distributions. Du coup, un programmeur pourrait facilement créer plein de paquets dans son Makefile.
          Même si ce ne seront pas des paquets adaptés à la distribution, ce sera sûrement mieux que rien.
          • [^] # Re: slackware

            Posté par  . Évalué à 3.

            c'est marrant parce que c'est en partie grâce à toi et tes commentaires sur linuxfr que j'ai essayé Archlinux et y suis resté.

            Par rapport aux 2 projets que tu cites, je vois que sur archlinux networkmanager est en version 0.7.1 dans extra, et packagekit existe dans AUR.

            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

            • [^] # Re: slackware

              Posté par  (site web personnel) . Évalué à 1.

              A l'époque, ce n'était pas le cas.

              Enfin, il faut dire qu'a l'époque, NM 0.7 n'existait pas encore, seulement pratiquement toutes les distributions l'utilisaient déjà.
        • [^] # Re: slackware

          Posté par  (site web personnel) . Évalué à 6.

          Juste pour signaler que checkinstall est maintenu dans les dépôts mandriva. Non seulement maintenu mais en plus bien intégré à l'architecture de packaging mandriva typique. Le package de checkinstall sur mdv est vraiment très bien fait.

          Néanmoins il n'est pas mis en avant (comme le souligne le journal "pas de publication de ces rpm", pas fait pour !), mais permet exactement ce qui est décrit ici, avec en plus gestion d'adresses multiples pour les sources, gestion des dépendances, et autres fonctions sympathiques. Il n'arrive pas à se débrouiller sur certains éléments, mais est très efficace sur de nombreux.

          L'avantage est donc d'avoir un rpm pas trop sale, même assez propre, bien intégré dans une mandriva, tout en conservant par défaut l'aspect local (et pas de volonté de publications).

          Super ton script, merci bien, marrant :) Aussi pour les flemmards qui l'utiliseront pour se créer un squelette de spec initial, en fait (en faisant sauter la fin). Manque quant même la license dudit logiciel empaqueté, ainsi qu'une adresse pour les sources, pour avoir un zoli 'spec-make-template' :p
          Merci :)
  • # stow

    Posté par  (site web personnel) . Évalué à 8.

    D'habitude, j'utilise ça : http://www.gnu.org/software/stow/

    Ça permet d'installer chaque logiciel dans un dossier séparé, généralement placé dans /usr/local/stow.

Suivre le flux des commentaires

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