Eu já vi Descompacte facilmente DEB, editar postinst, e repack DEB - no entanto, esse não explica como alterar corretamente o número da versão .deb se eu quiser fazer algumas alterações no arquivo .deb original.
Eu estou no Ubuntu 14.04, e vamos pegar hostapd
para um exemplo:
$ mkdir /tmp/debtest
$ cd /tmp/debtest/
$ apt-get download hostapd
Get:1 http://dk.archive.ubuntu.com/ubuntu/ trusty-updates/universe hostapd amd64 1:2.1-0ubuntu1.4 [423 kB]
Fetched 423 kB in 1s (361 kB/s)
$ ls -la hostapd_1%3a2.1-0ubuntu1.4_amd64.deb
-rw-rw-r-- 1 myuser myuser 422846 Nov 10 2015 hostapd_1%3a2.1-0ubuntu1.4_amd64.deb
Agora podemos descompactar como no link acima:
$ mkdir unpack-hostapd
$ dpkg-deb -R hostapd_1%3a2.1-0ubuntu1.4_amd64.deb unpack-hostapd
$ ls -la unpack-hostapd/
total 20
drwxr-xr-x 5 myuser myuser 4096 Jan 26 11:31 .
drwxrwxr-x 3 myuser myuser 4096 Jan 26 11:31 ..
drwxr-xr-x 2 myuser myuser 4096 Nov 9 2015 DEBIAN
drwxr-xr-x 6 myuser myuser 4096 Nov 9 2015 etc
drwxr-xr-x 4 myuser myuser 4096 Nov 9 2015 usr
Digamos que eu queira fazer uma alteração trivalente, por exemplo, anexar uma linha de texto ao README.Debian:
echo "Just a test line" >> unpack-hostapd/usr/share/doc/hostapd/README.Debian
... e agora quero refazer isso como um novo .deb.
Primeira pergunta - existe uma maneira de recuperar a versão atual (antiga) do pacote do estado descompactado? Como não confio em nomes de arquivos, geralmente faço:
$ apt-cache policy hostapd
hostapd:
Installed: (none)
Candidate: 1:2.1-0ubuntu1.4
...
... e isso me diz que baixei a versão 1: 2.1-0ubuntu1.4 do pacote quando usei apt-get download...
- mas não necessariamente qual é a versão dentro do diretório unpack-hostapd
. Existe um comando que me dirá a versão do pacote do .deb de origem que foi descompactado no diretório unpack-hostapd
?
Agora, usei debchange
como dch -i
antes para incrementar automaticamente um número de versão (embora em outros projetos de origem), mas quando eu tentar aqui:
$ cd unpack-hostapd
$ pwd
/tmp/debtest/unpack-hostapd
$ dch -e
dch: fatal error at line 580:
Cannot find debian/changelog anywhere!
Are you in the source code tree?
(You could use --create if you wish to create this file.)
$ find . -name 'changelog*'
./usr/share/doc/hostapd/changelog.Debian.gz
$ dpkg -c ../hostapd_1%3a2.1-0ubuntu1.4_amd64.deb | grep changelog
-rw-r--r-- root/root 2126 2015-11-09 14:56 ./usr/share/doc/hostapd/changelog.Debian.gz
... mas não posso mudar nada disso aqui.
Então, minha segunda pergunta é: existe uma maneira fácil (como dch -i
para pacotes fonte) de alterar o número da versão do pacote .deb e possivelmente adicionar um changelog, para um desempacotado? pacote de .deb como este?
É claro que, em última análise, gostaria de reempacotar essa nova versão como um pacote .deb, para o qual o link acima sugere algo como dpkg-deb -b unpack-hostapd hostapd_1%3a2.1-0ubuntu1.4_amd64.deb
; Embora, digamos, aqui eu prefiro usar a versão 1:2.2
, então eu finalmente usaria um nome de arquivo como dpkg-deb -b unpack-hostapd hostapd_1%3a2.2_amd64.deb
- no entanto, essa versão também deve corresponder ao que está gravado dentro do .deb, e eu não sei como faça isso ...