Modificare pacchetto .deb

Ho trovato un pacchetto deb non funzionante a causa di una dipendenza non soddisfatta (capita nei repository delle distribuzioni non stabili): dipende da un pacchetto che è stato rinominato mentre esso non è stato aggiornato per cercare il nuovo nome.

Per installare il pacchetto in modo semplice, modificando la lista delle dipendenze per cercare il pacchetto rinominato, si opera in questo modo:

  1. si scarica il pacchetto direttamente (via FTP o con wget) o indirettamente con gli strumenti come aptitude (ma poi i pacchetti bisogna andarli a trovare in /var/cache/apt/archives/)
  2. si procede alla modifica del pacchetto:
    • si decomprime il pacchetto in una directory che verrà creata se non esistente
      dpkg-deb -x foo.deb tmpdir
      #si estrae il file di controllo nella directory specificata
      dpkg-deb --control foo.deb tmpdir/DEBIAN

      dal manuale: “Extracts the control information files from a package archive
      into the specified directory.

      If no directory is specified then a subdirectory DEBIAN in the
      current directory is used.

      The target directory (but not its parents) will be created if
      necessary.”

    • lo si modifica
      nano tmpdir/DEBIAN/control
      #si ricostruisce il pacchetto
      dpkg -b tmpdir hacked.deb
  3. creo un repository locale:
    mkdir ~/debian/binary
    #e vi copio il file deb appena creato
    cp hacked.deb ~/debian/binary
    #creo il file Packages.gz
    cd ~/debian
    apt-ftparchive packages binary | gzip -9c > binary/Packages.gz
  4. creo un file binary/Release per configurare il repository:
    lo copio dal repository ufficiale di Debian e lo modifico

    Origin: myrepo
    Label: Local Repo
    Suite: testing
    Codename: jessie
    #Date: Mon, 09 Sep 2013 14:48:38 UTC
    #Valid-Until: Mon, 16 Sep 2013 14:48:38 UTC
    Architectures: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc
    Components: main
    Description: Repository creato per installare hacked
  5. configuro apt per vedere il nuovo repo:
    nano /etc/apt/sources.list.d/hacked.list
    deb file:///home/username/debian binary/
    # notare lo slash dopo binary
  6. ora basta solo aggiornare aptitude e installare il pacchetto: le dipendenze verranno gestite da aptitude come al solito

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.