Compilando o p7zip-desktop no Ubuntu e Linux Mint

O grande interesse de ensinar a compilar o p7zip-desktop e gerar o pacote deb é o fato do p7zip ser uma ferramenta com alto nível de compressão e de não ter muitos pacotes pré-compilados para a interface gráfica dele. Por isso, estou disponibilizando a oportunidade para quem se interessar em trabalhar com a ferramenta, tendo acesso aos recursos com a interface gráfica.

[ Hits: 5.368 ]

Por: Mauricio Ferrari em 23/06/2020 | Blog: https://www.youtube.com/@LinuxDicasPro


Gerando os pacotes e Finalizando



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.
Linux: Compilando o p7zip-desktop no Ubuntu e Linux Mint

Referências


Página anterior    

Páginas do artigo
   1. Introdução
   2. Analisando a Estrutura dos Pacotes
   3. Compilando o p7zip
   4. Gerando os pacotes e Finalizando
Outros artigos deste autor

Liberando Memória ajustando o Tamanho das Strings em C

Compilando o QMPlay2 20.07.04 no Linux Mint 20 e Gerando o Pacote para Instalar

Placas de vídeo que já perderam o suporte no Linux

C# no Slackware

Aplicativos do Windows que já tiveram suporte no Linux

Leitura recomendada

Avaliação da interface do sistema operacional Linux

Automatizando relatórios GLPI usando PHP e Shell Script

Mono - Por que usá-lo?

Lançamento do GFP Open (Gerenciador Financeiro Pessoal) versão 0.0.1.2

Automação livre e seus profissionais

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts