Logo Hardware.com.br
The Pretender
The Pretende... Zumbi Registrado
8.5K Mensagens 82 Curtidas

Criação de pacote DEB com CheckInstall

#1 Por The Pretende... 13/09/2016 - 11:37
Bom dia pessoal


Estou tentando criar um pcote DEB para distribuição com o checkinstall, e não tenho obtido êxito.

Vamos por partes

- O que é: O pacote é um software que não tem a versão atualizada para UBUNTU/Debian, como estou criando um curso sobre este software, achei interessante gerar um DEB atualizado dele. O software em questão é o Magic VLSI.

- Fontes/compilação: Consigo instalar ele perfeitamente "na mão"
- CheckInstall: O CheckInstall faz todo o processo e gera o .deb. O que acontece é que ele não copia uma biblioteca junto para a pasta do Software (magictcl.so, que deveria estar em /usr/lib/magic/tcl. O arquivo em si está na pasta do source, compilado.

A pergunta é: Tem como abrir o arquivo DEB e incluir esta biblioteca manualmente? Pois copiando "na mão" do SRC para a pasta em questão o aplicativo funciona perfeitamente.




Falow!!!!!!!!!!!!!!!!
twr70
twr70 Zumbi Registrado
3.9K Mensagens 729 Curtidas
#2 Por twr70
13/09/2016 - 15:32
Através do dpkg é possível criar/editar pacotes *.Deb com facilidade.

https://www.hardware.com.br/livros/ferramentas-linux/criando-seus-proprios-pacotes-deb.html
https://www.hardware.com.br/artigos/criando-deb/

No Kuruma existia um script "criar-deb", bons tempos...
#!/bin/sh
# Script de instalação dos ícones mágicos
# Escrito por Carlos E. Morimoto

export XDIALOG_HIGH_DIALOG_COMPAT=1
DIALOG=Xdialog
DIA=Xdialog

$DIALOG --title "Ícones mágicos" \
--backtitle " Criar pacote .deb " \
--radiolist "O sistema de pacotes do Debian é extremamente versátil como você pode perceber rapidamente usando o apt-get. Instalar, remover e atualizar os pacotes são uma tarefa rotineira.\n\n
Além de serem fáceis de instalar, os pacotes .deb também podem ser criados rapidamente, usando as ferramentas incluídas na própria distribuição. Você pode incluir qualquer coisa nos pacotes, desde um ícone no iniciar até um monstro de 200 MB como o OpenOffice. Este script automatiza a tarefa de
criar um novo pacote .deb, que pode ser distribuído posteriormente.\n
" 27 70 0 \
"Criar" "Criar um novo pacote .deb" off \
"Atualizar" "Modificar um pacote anteriormente criado" off \
"Sair" "Sair sem fazer nada" off 2> /tmp/checklist.tmp.$$
retval=$?

choice=`cat /tmp/checklist.tmp.$$`
rm -f /tmp/checklist.tmp.$$

# -----------------------------------

if [ "$choice" = "Criar" ];
then

rm -f /tmp/pacotedeb1
$DIALOG --title "Criar pacote .deb" \
--backtitle "Criar pacote .deb" \
--ok-label "Continuar" --cancel-label "Sair" \
--inputbox "Antes de mais nada você deve dar um nome para o deu pacote. Este nome será usado para a descrição e o nome do
arquivo. Ele não deve ser longo nem conter espaços. Algo do tipo: meu-pacote-1.2
" 15 80 'meu-pacote' > /dev/null 2> /tmp/pacotedeb1
retval=$?

nomepacote=`cat /tmp/pacotedeb1`
rm -f /tmp/pacotedeb1

rm -f /tmp/pacotedeb2
$DIALOG --title "Criar pacote .deb" \
--backtitle "Criar pacote .deb" \
--ok-label "Continuar" --cancel-label "Sair" \
--inputbox "Qual pasta você deseja usar para guardar os arquivos e gerar o pacote no final do processo?
" 15 80 '/tmp' > /dev/null 2> /tmp/pacotedeb2
retval=$?

pasta=`cat /tmp/pacotedeb2`
rm -f /tmp/pacotedeb2

BT="Ícones mágicos"
T1="Criar pacote .deb"
M1="O pacote é criado a partir dos arquivos de uma pasta, que criarei a seguir. Se você quiser que o pacote ao ser instalado copie um arquivo binário para a pasta /usr/local/bin e um ícone para a pasta /usr/share/applnk/ você criaria as duas pastas dentro do diretório do pacote e colocaria seus arquivos dentro delas, mantendo toda a estrutura de sub pastas a partir do diretório raiz.\n\n
No final você teria por exemplo as pastas /usr/local/bin/arquivo.sh e /usr/share/applnk/icone.desktop dentro do diretório do novo pacote. \n\n
Ao ser instalado o pacote simplesmente copiará os arquivos, mantendo a estrutura de diretórios da pasta. Ao pressionar OK vou abrir a pasta
para que você possa adicionar os arquivos dentro."
$DIALOG --backtitle "$BT" --title "$T1" --msgbox "$M1" 22 80

mkdir $pasta/$nomepacote

echo 'Delete este texto antes de fachar a janela, ele é apenas um aviso ;-)' >> $pasta/$nomepacote/coloque_os_arquivos_aqui

konqueror $pasta/$nomepacote

mkdir $pasta/$nomepacote/DEBIAN/

echo 'Package: Meu-pacote' >> $pasta/$nomepacote/DEBIAN/control
echo 'Priority: optional' >> $pasta/$nomepacote/DEBIAN/control
echo 'Version: 1.0' >> $pasta/$nomepacote/DEBIAN/control
echo 'Architecture: i386' >> $pasta/$nomepacote/DEBIAN/control
echo 'Maintainer: foo <foo@bar.com>' >> $pasta/$nomepacote/DEBIAN/control
echo 'Depends:' >> $pasta/$nomepacote/DEBIAN/control
echo 'Description: Mais um pacote deb' >> $pasta/$nomepacote/DEBIAN/control

BT="Ícones mágicos"
T1="Criar pacote .deb"
M1="Dentro do pacote vai um arquivo chamado control, onde vão as informações de controle do pacote. Este é um arquivo de texto que abrirei na janela a seguir. Você deve editá-lo colocando os detalhes sobre o pacote que está criando. Este arquivo fica disponível para consulta por parte dos usuários.\n\n
No campo Package vai o nome do pacote, seguido pela prioridade (optional significa que o pacote não é necessário para o funcionamento normal do sistema, é apenas um add-on). Importante: O nome do pacote não deve conter espaços nem caracteres especiais. Você deve usar apenas letras, numeros e o -. \n
O campo "version" é um dos campos importantes, pois é por ele que o apt-get vai se orientar na hora de instalar o pacote. Se você lançar uma atualização do pacote mais tarde, o campo deve ser alterado.\n
Caso o seu pacote precise de outros pacotes com bibliotecas ou programas para funcionar, você deve informá-los no campo "Depends", assim o apt cuidará de checar as dependências e instalá-las se necessário. "
$DIALOG --backtitle "$BT" --title "$T1" --msgbox "$M1" 33 80

kedit $pasta/$nomepacote/DEBIAN/control

BT="Ícones mágicos"
T1="Criar pacote .deb"
M1="Se você fez tudo direitinho até aqui seu pacote já está pronto para ser criado. Vou gerar um arquivo .deb na pasta escolhida. Este pacote pode ser instalado em outros micros usando o comando: dpgk -i pacote.deb\n\n
Daqui em diante você tem a responsabilidade de manter este pacote, atualizando-o quando necessário e distribuindo as novas versões para as pessoas que o utilizarem."
$DIALOG --backtitle "$BT" --title "$T1" --msgbox "$M1" 18 80

cd $pasta

echo "Executando comando:"
echo "dpkg-deb -b $pasta/$nomepacote/ $pasta/$nomepacote.deb"
echo " "
dpkg-deb -b $pasta/$nomepacote/ $pasta/$nomepacote.deb
sleep 3
echo " "
echo "Pressione Enter para continuar"
read pausa

konqueror $pasta

fi

# -----------------------------------

if [ "$choice" = "Atualizar" ];
then

rm -f /tmp/pacotedeb3
$DIALOG --title "Criar pacote .deb" \
--backtitle "Selecione o diretório do pacote que será editado:" \
--ok-label "Continuar" --cancel-label "Sair" \
--dselect "/home/$USER" 28 78 00 > /dev/null 2> /tmp/pacotedeb3
retval=$?

diretorio=`cat /tmp/pacotedeb3`
rm -f /tmp/pacotedeb3

echo $diretorio

konqueror $diretorio
kedit $diretorio/DEBIAN/control

rm -f /tmp/pacotedeb1
$DIALOG --title "Criar pacote .deb" \
--backtitle "Criar pacote .deb" \
--ok-label "Continuar" --cancel-label "Sair" \
--inputbox "Qual o nome do pacote que será gerado? O nome não deve ser longo nem conter espaços. Algo do tipo: meu-pacote-1.2
" 15 80 'meu-pacote' > /dev/null 2> /tmp/pacotedeb1
retval=$?

nomepacote=`cat /tmp/pacotedeb1`
rm -f /tmp/pacotedeb1

cd $diretorio
cd ../

echo "Executando comando:"
echo "dpkg-deb -b $diretorio $nomepacote.deb"
echo " "
dpkg-deb -b $diretorio $nomepacote.deb
sleep 3
echo " "
echo "Pressione Enter para continuar"
read pausa

konqueror ./

fi

# -----------------------------------

if [ "$choice" = "Sair" ];
then

exit 0

fi

exit 0


Em algum lugar, tenho uma versão revisada que criei deste script, que roda graficamente em Gnome e KDE, se encontrar eu posto.

[]'s
"Nenhuma herança é tão rica quanto a honestidade". Loir Dreveck

Se der tudo de si, já saíra ganhando!
The Pretender
The Pretende... Zumbi Registrado
8.5K Mensagens 82 Curtidas
#3 Por The Pretende...
14/09/2016 - 08:08
Obrigado pela dica

Vou dar uma analisada no script e adaptar, pois estou rodando em uma VM sem ambiente gráfico.


Quando obtiver algum resultado retorno aqui.



Falow!!!!!!!!!!!!!!!!!!!!
-->Blog Pessoal - Um pianista "desajeitado" <--
-->Eletrônica no YouTube - Bobsien P&D <--


- Sound Blaster Live 5.1! Digital e 3DFX Voodoo 4 4500PCI - Minhas relíquias!
The Pretender
The Pretende... Zumbi Registrado
8.5K Mensagens 82 Curtidas
#4 Por The Pretende...
14/09/2016 - 12:58
Show twr70
Consegui criar o arquivo, e está funcionando.


Alguma dica de onde posso colocar este arquivo para que outras pessoas possam utilizar?



Falow!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


twr70 disse:
Através do dpkg é possível criar/editar pacotes *.Deb com facilidade.

https://www.hardware.com.br/livros/ferramentas-linux/criando-seus-proprios-pacotes-deb.html
https://www.hardware.com.br/artigos/criando-deb/

No Kuruma existia um script "criar-deb", bons tempos...
#!/bin/sh
# Script de instalação dos ícones mágicos
# Escrito por Carlos E. Morimoto

export XDIALOG_HIGH_DIALOG_COMPAT=1
DIALOG=Xdialog
DIA=Xdialog

$DIALOG --title "Ícones mágicos" \
--backtitle " Criar pacote .deb " \
--radiolist "O sistema de pacotes do Debian é extremamente versátil como você pode perceber rapidamente usando o apt-get. Instalar, remover e atualizar os pacotes são uma tarefa rotineira.\n\n
Além de serem fáceis de instalar, os pacotes .deb também podem ser criados rapidamente, usando as ferramentas incluídas na própria distribuição. Você pode incluir qualquer coisa nos pacotes, desde um ícone no iniciar até um monstro de 200 MB como o OpenOffice. Este script automatiza a tarefa de
criar um novo pacote .deb, que pode ser distribuído posteriormente.\n
" 27 70 0 \
"Criar" "Criar um novo pacote .deb" off \
"Atualizar" "Modificar um pacote anteriormente criado" off \
"Sair" "Sair sem fazer nada" off 2> /tmp/checklist.tmp.$$
retval=$?

choice=`cat /tmp/checklist.tmp.$$`
rm -f /tmp/checklist.tmp.$$

# -----------------------------------

if [ "$choice" = "Criar" ];
then

rm -f /tmp/pacotedeb1
$DIALOG --title "Criar pacote .deb" \
--backtitle "Criar pacote .deb" \
--ok-label "Continuar" --cancel-label "Sair" \
--inputbox "Antes de mais nada você deve dar um nome para o deu pacote. Este nome será usado para a descrição e o nome do
arquivo. Ele não deve ser longo nem conter espaços. Algo do tipo: meu-pacote-1.2
" 15 80 'meu-pacote' > /dev/null 2> /tmp/pacotedeb1
retval=$?

nomepacote=`cat /tmp/pacotedeb1`
rm -f /tmp/pacotedeb1

rm -f /tmp/pacotedeb2
$DIALOG --title "Criar pacote .deb" \
--backtitle "Criar pacote .deb" \
--ok-label "Continuar" --cancel-label "Sair" \
--inputbox "Qual pasta você deseja usar para guardar os arquivos e gerar o pacote no final do processo?
" 15 80 '/tmp' > /dev/null 2> /tmp/pacotedeb2
retval=$?

pasta=`cat /tmp/pacotedeb2`
rm -f /tmp/pacotedeb2

BT="Ícones mágicos"
T1="Criar pacote .deb"
M1="O pacote é criado a partir dos arquivos de uma pasta, que criarei a seguir. Se você quiser que o pacote ao ser instalado copie um arquivo binário para a pasta /usr/local/bin e um ícone para a pasta /usr/share/applnk/ você criaria as duas pastas dentro do diretório do pacote e colocaria seus arquivos dentro delas, mantendo toda a estrutura de sub pastas a partir do diretório raiz.\n\n
No final você teria por exemplo as pastas /usr/local/bin/arquivo.sh e /usr/share/applnk/icone.desktop dentro do diretório do novo pacote. \n\n
Ao ser instalado o pacote simplesmente copiará os arquivos, mantendo a estrutura de diretórios da pasta. Ao pressionar OK vou abrir a pasta
para que você possa adicionar os arquivos dentro."
$DIALOG --backtitle "$BT" --title "$T1" --msgbox "$M1" 22 80

mkdir $pasta/$nomepacote

echo 'Delete este texto antes de fachar a janela, ele é apenas um aviso ;-)' >> $pasta/$nomepacote/coloque_os_arquivos_aqui

konqueror $pasta/$nomepacote

mkdir $pasta/$nomepacote/DEBIAN/

echo 'Package: Meu-pacote' >> $pasta/$nomepacote/DEBIAN/control
echo 'Priority: optional' >> $pasta/$nomepacote/DEBIAN/control
echo 'Version: 1.0' >> $pasta/$nomepacote/DEBIAN/control
echo 'Architecture: i386' >> $pasta/$nomepacote/DEBIAN/control
echo 'Maintainer: foo <foo@bar.com>' >> $pasta/$nomepacote/DEBIAN/control
echo 'Depends:' >> $pasta/$nomepacote/DEBIAN/control
echo 'Description: Mais um pacote deb' >> $pasta/$nomepacote/DEBIAN/control

BT="Ícones mágicos"
T1="Criar pacote .deb"
M1="Dentro do pacote vai um arquivo chamado control, onde vão as informações de controle do pacote. Este é um arquivo de texto que abrirei na janela a seguir. Você deve editá-lo colocando os detalhes sobre o pacote que está criando. Este arquivo fica disponível para consulta por parte dos usuários.\n\n
No campo Package vai o nome do pacote, seguido pela prioridade (optional significa que o pacote não é necessário para o funcionamento normal do sistema, é apenas um add-on). Importante: O nome do pacote não deve conter espaços nem caracteres especiais. Você deve usar apenas letras, numeros e o -. \n
O campo "version" é um dos campos importantes, pois é por ele que o apt-get vai se orientar na hora de instalar o pacote. Se você lançar uma atualização do pacote mais tarde, o campo deve ser alterado.\n
Caso o seu pacote precise de outros pacotes com bibliotecas ou programas para funcionar, você deve informá-los no campo "Depends", assim o apt cuidará de checar as dependências e instalá-las se necessário. "
$DIALOG --backtitle "$BT" --title "$T1" --msgbox "$M1" 33 80

kedit $pasta/$nomepacote/DEBIAN/control

BT="Ícones mágicos"
T1="Criar pacote .deb"
M1="Se você fez tudo direitinho até aqui seu pacote já está pronto para ser criado. Vou gerar um arquivo .deb na pasta escolhida. Este pacote pode ser instalado em outros micros usando o comando: dpgk -i pacote.deb\n\n
Daqui em diante você tem a responsabilidade de manter este pacote, atualizando-o quando necessário e distribuindo as novas versões para as pessoas que o utilizarem."
$DIALOG --backtitle "$BT" --title "$T1" --msgbox "$M1" 18 80

cd $pasta

echo "Executando comando:"
echo "dpkg-deb -b $pasta/$nomepacote/ $pasta/$nomepacote.deb"
echo " "
dpkg-deb -b $pasta/$nomepacote/ $pasta/$nomepacote.deb
sleep 3
echo " "
echo "Pressione Enter para continuar"
read pausa

konqueror $pasta

fi

# -----------------------------------

if [ "$choice" = "Atualizar" ];
then

rm -f /tmp/pacotedeb3
$DIALOG --title "Criar pacote .deb" \
--backtitle "Selecione o diretório do pacote que será editado:" \
--ok-label "Continuar" --cancel-label "Sair" \
--dselect "/home/$USER" 28 78 00 > /dev/null 2> /tmp/pacotedeb3
retval=$?

diretorio=`cat /tmp/pacotedeb3`
rm -f /tmp/pacotedeb3

echo $diretorio

konqueror $diretorio
kedit $diretorio/DEBIAN/control

rm -f /tmp/pacotedeb1
$DIALOG --title "Criar pacote .deb" \
--backtitle "Criar pacote .deb" \
--ok-label "Continuar" --cancel-label "Sair" \
--inputbox "Qual o nome do pacote que será gerado? O nome não deve ser longo nem conter espaços. Algo do tipo: meu-pacote-1.2
" 15 80 'meu-pacote' > /dev/null 2> /tmp/pacotedeb1
retval=$?

nomepacote=`cat /tmp/pacotedeb1`
rm -f /tmp/pacotedeb1

cd $diretorio
cd ../

echo "Executando comando:"
echo "dpkg-deb -b $diretorio $nomepacote.deb"
echo " "
dpkg-deb -b $diretorio $nomepacote.deb
sleep 3
echo " "
echo "Pressione Enter para continuar"
read pausa

konqueror ./

fi

# -----------------------------------

if [ "$choice" = "Sair" ];
then

exit 0

fi

exit 0


Em algum lugar, tenho uma versão revisada que criei deste script, que roda graficamente em Gnome e KDE, se encontrar eu posto.

[]'s
-->Blog Pessoal - Um pianista "desajeitado" <--
-->Eletrônica no YouTube - Bobsien P&D <--


- Sound Blaster Live 5.1! Digital e 3DFX Voodoo 4 4500PCI - Minhas relíquias!
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal