• [^] # Re: Rpm mal fichu?

    Posté par . En réponse à la dépêche RPM va enfin de l'avant avec la version 4.6. Évalué à 4.

    > Relis mon poste, je parles des informations en plus qu'a un rpm (numéro de version, dépendances, etc) et que toutes ces informations pourraient être stockées dans un fichier.

    Oui elles pourraient (être exportées dans un fichier). Mais ce n'est pas le cas.
    Je n'ai pas dit qu'il y avait des raisons techniques à ça. C'est simplement car ça ne colle pas à l'usage de rpm.
    Si tu veux faire un outils qui exporte/importe en fichiers (avec un __META__/* pour tous les trucs qui ne sont pas des fichiers) , n'hésites pas.
    Pourquoi ça n'a pas encore été fait ?
    Parce que quasiment tout le monde s'en fout.
    En passant, il y a rpm2cpio qui n'extrait que les fichiers (pour les fichiers spéciaux il faut être root).
    Il y a "rpm -q --dump" pour avoir les attributs des fichiers (mode, doc/config, etc).
    Il y a "rpm -q --scripts" pour avoir les scripts.
    Il y a "rpm -q --triggers" pour avoir les triggers.
    Il y a "rpm -q --requires", "rpm -q --provides" et "rpm -q --conflits" pour les dépendances.
    Pour les attributs du paquet (version, licences, date de création, etc), il suffit d'utiliser "rpm --querytags" pour avoir les noms des champs et "rpm -q --queryformat" pour avoir les valeurs.
    Tu rassembles tout ça, le passe à la moulinet, et crée un fichier .spec pour... recréer le fichier .src.rpm pour... finir comme tout le monde par utiliser rpmbuild (m'enfin tu n'auras pas besoin de recompiler le paquet).

    > 1) Ca te parait simple comme manipulation?

    Si tu en es à vouloir modifier un paquet, alors tu ne fais pas un truc simple. Dans ce cas, oui c'est assez simple de modifier le src.rpm. Ça peut par contre bouffer du temps et de l'espace disque.

    > Meme quand il s'agit de changer un fichier de données/script inchangé entre le rpm et le src.rpm?

    Et ?
    Oui parfois on refait un paquet depuis le src.rpm seulement pour un ligne ou car il y a un typo dans ligne.
    Mais c'est quoi rpm ? C'est quoi l'objectif ?
    C'est, entre autre, d'avoir toutes la procedure de création du paquet. Si tu fais des "bidouilles" avec le paquet à installer, tu perds ça.
    Si tu veux bidouiller, utilise un bon vieux "./configure && make ..."

    > 2)Et pourquoi faire une différence entre un src.rpm et un rpm?

    Ce n'est pas la même chose, la même fonction. Un src.rpm ne s'installe pas, il n'est pas dans base rpm (dans /var/lib/rpm). Un src.rpm n'a pas de dépendance, n'a pas de scripts a exécuter à l'installation, ne demande pas le compte root pour être installé, etc. Bref, sa fonction est bien différente, c'est seulement un conteneur (comme un tar/cpio).

    Un paquet rpm est un truc construit par le programme rpm (en fait rpmbuild qui fait aussi divers contrôle) pour être installé sur un système (vérification des dépences, des conflits entre fichiers, définit le propriétaire de fichier (donc doit être root), etc). Le src.rpm est aussi construit par rpmbuild, mais il ne fait rien d'autres que d'"empiler" des fichiers dans un src.rpm. rpm exige d'être root, on peut construire un .rpm sans être root.
    D'ailleur on peut faire des rpm depuis un fichier tar (il doit avoir un fichier .spec dedans). Suffit de faire rpmbuild -tb toto.tar. Donc les fichiers sources des rpm pourrait très bien être des tar, pas de problème à ça sauf petites bricoles (pas de signature, etc).

    > Pour moi, les deux devraient avoir une structure identique et juste être différent au niveau du contenu

    C'est le cas. C'est le même outils pour faire un src.rpm et un rpm.

    > modifier un src.rpm est simple mais pas un rpm, donc je trouve ça mal fichu..

    Ben modifie un src.rpm...
    Et après ?
    Ben fait les rpm car ton src.rpm tu ne peux pas l'installer...

    > donc je trouve ça mal fichu..

    Ben il y en a très très très très peu qui utilise rpm et ont ton "problème".
    Mais je pense que tu dois tomber à genoux devant le format .deb qui le permet...
    Suffisait de le dire. +0.00001 pour .deb.