Forum Linux.debian/ubuntu archive debian : le format ar

Posté par  .
Étiquettes : aucune
0
24
sept.
2005
Bonjour,
Pour pouvoir installer un paquet debian qui refuser de s'installer parceque la dépendance libc6 est "trop précise" (à mon goût, comprend pas pourquoi d'ailleurs), en effet il souhaite >= à la libc6 2.3.2.ds1-21 et sur ubuntu il y la 2.3.2.ds1-20ubuntu14, donc pb !

Face à un paquet debian pour que cela fonctionne sous une ubunutu, je m'évertue à faire :
ar x paqetdebian.deb
gunzip control.tar.gz
vi control puis correction libc6 (>= 2.3.2.ds1-21) en libc6 (>= 2.3.2))
(je fais pas le md5)
[1]tar --delete -vf control.tar ./control && tar -uvf control.tar ./control
ar rfv paqetdebian.deb control.tar.gz
dpkg -i paqetdebian.deb
Et ça marche ! !

Mais avez vous des zolies commandes debian pour faire les paquets en un tour de main ?
de la bonne doc pour enfin apprendre à faire des paquets debian


d'avance merci bcp





[1] Même si vous avez la réponse, j'aurais bien aimé savoir pourquoi cela ne MARCHE pas tar -uvf control.tar ./control ("only append files that are newer than copy in archive") pour remplacer le fichier control, car cette commande AJOUTE le fichier control (il y en deux ensuite) Merci bcp - tar (GNU tar) 1.14
  • # dpkg-repack ?

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

    DPKG-REPACK(1) DPKG-REPACK(1)

    NAME
    dpkg-repack - put an unpacked .deb file back together

    SYNOPSIS
    dpkg-repack [--root=dir] [--arch=architecture] packagename [packagename
    ...]

    DESCRIPTION
    dpkg-repack creates a .deb file out of a Debian package that has
    already been installed on your system. If any changes have been made to
    the package while it was unpacked (ie, files in /etc modified), the new
    package will inherit the changes.

    This utility can make it easy to copy packages from one computer to
    another, or to recreate packages that are installed on your system, but
    no longer available elsewhere.

    Note: dpkg-repack will place the created package in the current direc-
    tory.

    OPTIONS
    --root=dir
    Take package from filesystem rooted on . This is useful if,
    for example, you have another computer nfs mounted on /mnt, then
    you can use --root=/mnt to reassemble packages from that com-
    puter.

    --arch=architecture
    Make the package be for a different architecture. dpkg-repack
    cannot tell if an installed package is architecture all or is
    specific to the system's architecture, so by default it uses
    dpkg --print-architecture to determine the build architecture.
    If you know the package is architecture all, you can use this
    option to force dpkg-repack to use the right architecture.

    packagename
    The name of the package to attempt to repack. Multiple packages
    can be listed.

    BUGS
    This program accesses the dpkg database directly in places, querying
    for data that cannot be gotten via dpkg.

    There is a tricky situation that can occur if you dpkg-repack a package
    that has modified conffiles. The modified conffiles are packed up. Now
    if you install the package, dpkg does not realize that the conffiles in
    it are modified. So if you later upgrade to a new version of the pack-
    age, dpkg will belive that the old (repacked) package has older conf-
    files than the new version, and will silently replace the conffiles
    with those in the package you are upgrading to.

    While dpkg-repack can be run under fakeroot and will work most of the
    time, fakeroot -u must be used if any of the files to be repacked are
    owned by non-root users. Otherwise the package will have them owned by
    root. dpkg-repack will warn if you run it under fakeroot without the
    -u flag.

    AUTHOR
    Joey Hess <joeyh@debian.org>

    DEBIAN Debian Utilities DPKG-REPACK(1)
    • [^] # Re: dpkg-repack ? bah non

      Posté par  . Évalué à 2.

      dpkg-repack creates a .deb file out of a Debian package that has
      already been installed on your system.


      Dans le cas présent, le paquet n'est pas déjà installé.
      • [^] # Re: dpkg-repack ? bah non

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

        Bon ok, j'ai tiré un peu vite ...

        On va essayer ça alors :

        En supposant que tu veuilles modifier l'archive ~/paquet-original.deb en tant que ~/paquet-modifie.deb, et que tu travailles sous ~/tmp/paquet-debian,

        1. Tu crées le répertoire de travail et tu te mets dedans :
        $ mkdir ~/tmp/paquet-debian
        $ cd ~/tmp/paquet-debian

        2. Tu extrais le contenu de l'archive d'origine :
        $ dpkg-deb -x ~/paquet-original.deb .
        $ dpkg-deb -e ~/paquet-original.deb

        3. Tu modifies ce que tu veux dans le fichier DEBIAN/control

        4. Tu recrées l'archive :
        $ dpkg-deb -b . ~/paquet-modifie.deb

        Evidemment, avec cette méthode tu perds le nom complet de l'archive, mais tu peux le déduire du fichier DEBIAN/control avec un truc dans ce genre :
        $ nom_archive=$(awk -F': ' '$1=="Package" {package=$2} $1=="Version" {version=$2} $1=="Architecture" {arch=$2} END{print package"_"version"_"arch}' DEBIAN/control)

        L'étape 4 devient alors :
        $ dpkg-deb -b . ~/${nom_archive}.deb

        J'ai bon ? :-)
        • [^] # Re: dpkg-repack ? bah non

          Posté par  . Évalué à 1.

          >J'ai bon ? :-)
          Ah oui c'est nickel, merci !
          Cela me donne envie de pousser un peu plus loin pour apprendre à faire des paquets debian.

          Sinon pour la question
          [1] Même si vous avez la réponse, j'aurais bien aimé savoir pourquoi cela ne MARCHE pas tar -uvf control.tar ./control ("only append files that are newer than copy in archive") pour remplacer le fichier control, car cette commande AJOUTE le fichier control (il y en deux ensuite) Merci bcp - tar (GNU tar) 1.14

          une idée svp ?
          • [^] # Retour vers le futur ?

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

            > Sinon pour la question
            > [1] Même si vous avez la réponse, j'aurais bien aimé savoir pourquoi
            > cela ne MARCHE pas tar -uvf control.tar ./control ("only append files
            > that are newer than copy in archive") pour remplacer le fichier
            > control, car cette commande AJOUTE le fichier control (il y en deux
            > ensuite) Merci bcp - tar (GNU tar) 1.14

            Je n'ai pas réussi à reproduire le message d'erreur chez moi avec le .deb de lame (GNU tar 1.15.1).
            S'il ne s'agit pas d'un bug du tar 1.14 (rien trouvé à ce sujet sur le site web), je ne vois qu'une explication plausible, à savoir qu'il a raison de se plaindre ;-)

            Deux choses qu'il te faudrait donc vérifier :
            1. Que ton système est bien à l'heure (par heure, je pense surtout à l'année)
            2. Que le timestamp du fichier ./control présent dans l'archive control.tar de ton paquet .deb n'est pas délirant (ie que la date du fichier n'est pas postérieure à la date du jour sur ton système)

            J'espère que ça aidera ...

Suivre le flux des commentaires

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