Ainda não acabou. Alguns ajustes ainda devem ser feitos antes de gerar o pacote. Começando com os arquivos dentro dos diretórios dos projetos criados.
Existem arquivos duplicados dentro dos projetos que devem ser eliminados. Outros precisam ser modificados e adicionados. Em p7zip, abra o terminal e rode esses comandos:
mkdir -p ./usr/share/man/man1
$ cp ./usr/man/man1/7zr.1 ./usr/share/man/man1/
$ rm -r ./usr/man ./usr/share/doc
$ cp /home/$USER/p7zip_16.02/contrib/gzip-like_CLI_wrapper_for_7z/p7zip ./usr/bin
O primeiro pacote está pronto. Em p7zip-full, abra o terminal e rode esses comandos:
mkdir -p ./usr/share/man/man1
$ cp ./usr/man/man1/7z.1 ./usr/share/man/man1/
$ cp ./usr/man/man1/7za.1 ./usr/share/man/man1/
$ rm -r ./usr/man ./usr/share/doc
Está quase pronto, só falta corrigir os scripts em ./usr/bin pois estão direcionando para o local errado. Edite-os com o editor de sua preferência:
vim ./usr/bin/7z
Deixe-o dessa maneira:
#! /bin/sh
"/usr/lib/p7zip/7z" "$@"
vim ./usr/bin/7za
Deixe-o dessa maneira:
#! /bin/sh
"/usr/lib/p7zip/7za" "$@"
Agora tá pronto. Vamos para o último pacote. Em p7zip-desktop, abra o terminal e rode esses comandos:
rm -r ./usr/man ./usr/share/doc ./usr/lib/p7zip/Codecs
$ rm ./usr/lib/p7zip/7z.so
$ mkdir -p ./usr/share/icons/hicolor/16x16/apps
$ mkdir -p ./usr/share/icons/hicolor/32x32/apps
$ mkdir -p ./usr/share/kservices5/ServiceMenus/
$ cp /home/$USER/p7zip_16.02/GUI/kde4/*desktop ./usr/share/kservices5/ServiceMenus/
$ cp /home/$USER/p7zip_16.02/GUI/p7zip_16.png ./usr/share/icons/hicolor/16x16/apps/p7zip.png
$ cp /home/$USER/p7zip_16.02/GUI/p7zip_32.png ./usr/share/icons/hicolor/32x32/apps/p7zip.png
Está quase pronto, só falta corrigir os scripts em ./usr/bin pois estão direcionando para o local errado. Edite-os com o editor de sua preferência:
vim ./usr/bin/7zG
Deixe-o dessa maneira:
#! /bin/sh
"/usr/lib/p7zip/7zG" "$@"
vim ./usr/bin/7zFM
Deixe-o dessa maneira:
#! /bin/sh
"/usr/lib/p7zip/7zFM" "$@"
Por fim, falta o ícone do menu de aplicativos. Vamos criar um local para o arquivo desktop:
mkdir -p ./usr/share/applications
Crie o arquivo 7zFM.desktop e insira essas informações com um editor de sua preferência:
[Desktop Entry]
Encoding=UTF-8
Name=7-Zip FM
GenericName=7-Zip File Manager
Type=Application
Categories=GTK;Utility;Archiving;Compression;
Terminal=false
Icon=p7zip
Exec=7zFM
Agora só está faltando o arquivo control nos diretórios DEBIAN. Crie os arquivos control nos diretórios DEBIAN e insira o conteúdo a seguir em seus respectivos projetos.
Para o p7zip:
Package: p7zip
Version: 16.02-1
Architecture: amd64
Maintainer: m10ferrari1200
Original-Maintainer: Mohammed Adnène Trojette
Installed-Size: 806
Depends: libc6 (>= 2.14), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
Suggests: p7zip-full
Section: utils
Priority: optional
Homepage: http://p7zip.sourceforge.net/
Description: 7z file archiver with high compression ratio
p7zip is the Unix command-line port of 7-Zip, a file archiver that
archives with high compression ratios.
.
p7zip provides:
- /usr/bin/7zr
a standalone minimal version of the 7-zip tool that only handles
7z archives. 7z compression is 30-50% better than ZIP compression.
- /usr/bin/p7zip
a gzip-like wrapper around 7zr.
.
p7zip can be used with popular compression interfaces (such as File
Roller or Nautilus).
.
p7zip-full provides 7z and 7za which support more compression formats.
Para o p7zip-full:
Package: p7zip-full
Source: p7zip
Version: 16.02-1
Architecture: amd64
Maintainer: m10ferrari1200
Original-Maintainer: Mohammed Adnène Trojette
Installed-Size: 4506
Depends: libc6 (>= 2.14), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1)
Conflicts: p7zip (<< 4.39-1)
Replaces: p7zip (<< 4.39-1)
Section: utils
Priority: optional
Homepage: http://p7zip.sourceforge.net/
Description: 7z and 7za file archivers with high compression ratio
p7zip is the Unix command-line port of 7-Zip, a file archiver that
archives with high compression ratios.
.
p7zip-full provides utilities to pack and unpack 7z archives within
a shell or using a GUI (such as Ark, File Roller or Nautilus).
.
Installing p7zip-full allows File Roller to use the very efficient 7z
compression format for packing and unpacking files and directories.
Additionally, it provides the 7z and 7za commands.
.
List of supported formats:
- Packing / unpacking: 7z, ZIP, GZIP, BZIP2, XZ and TAR
- Unpacking only: APM, ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT,
HFS, ISO, LZH, LZMA, LZMA2, MBR, MSI, MSLZ, NSIS, NTFS, RAR (only
if non-free p7zip-rar package is installed), RPM, SquashFS, UDF,
VHD, WIM, XAR and Z.
.
p7zip provides 7zr, a light version of 7za, and p7zip, a gzip-like
wrapper around 7zr.
Para o p7zip-desktop:
Package: p7zip-desktop
Source: p7zip
Version: 16.02-1
Architecture: amd64
Maintainer: m10ferrari1200
Installed-Size: 2765
Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1), p7zip, p7zip-full, libwxgtk3.0-dev
Conflicts: p7zip (<< 4.39-1)
Section: utils
Priority: optional
Homepage: http://p7zip.sourceforge.net/
Description: 7zG provides a standalone GUI 7zFM and a KDE ServiceMenu.
Em seguida, vamos corrigir as permissões. No local dos projetos, em um terminal, digite:
chmod -R 755 p7zip*
$ chmod -x p7zip/usr/share/man/man1/7zr.1
$ chmod -x p7zip-full/usr/share/man/man1/*
$ chmod -x p7zip-full/usr/lib/p7zip/7z.so
$ chmod -x p7zip-full/usr/lib/p7zip/Codecs/Rar.so
$ chmod -x p7zip-desktop/usr/lib/p7zip/Lang/*
$ chmod -x p7zip-desktop/usr/share/kservices5/ServiceMenus/*
$ chmod -x p7zip-desktop/usr/share/icons/hicolor/16x16/apps/p7zip.png
$ chmod -x p7zip-desktop/usr/share/icons/hicolor/32x32/apps/p7zip.png
Agora é só gerar os pacotes:
dpkg-deb -b p7zip/ p7zip_16.02-1_amd64.deb
$ dpkg-deb -b p7zip-full/ p7zip-full_16.02-1_amd64.deb
$ dpkg-deb -b p7zip-desktop/ p7zip-desktop_16.02-1_amd64.deb
ou se for o seu caso:
dpkg-deb -b p7zip/ p7zip_16.02-1_i386.deb
$ dpkg-deb -b p7zip-full/ p7zip-full_16.02-1_i386.deb
$ dpkg-deb -b p7zip-desktop/ p7zip-desktop_16.02-1_i386.deb
CONCLUSÃO
Compilar um pacote pode ser tarefa fácil se no final não precisar de nenhum ajuste adicional ou se o programa não está separado por vários pacotes que é o caso do p7zip. Dá um certo trabalho, mas no fim vale a experiência. Fiz vários ajustes para deixar os pacotes mais perto possível das versões anteriores pré-compiladas e por opção deixei de fora a documentação. Mas eles podem ser mantidos.
Não sei se os ajustes nas permissões se faz válido, mas fiz os ajustes por garantia. A documentação se fez muito importante para o processo de compilação e o script install.sh que veio junto ajudou muito. Quem quiser compilar em outras distribuições para fazer o teste, é só adaptar o método a distribuição que irá usar. Enfim, espero que tenham gostado.
Referências