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:
- 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/)
- 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
- si decomprime il pacchetto in una directory che verrà creata se non esistente
- 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
- creo un file binary/Release per configurare il repository:
lo copio dal repository ufficiale di Debian e lo modificoOrigin: 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
- 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
- ora basta solo aggiornare aptitude e installare il pacchetto: le dipendenze verranno gestite da aptitude come al solito