Este caso é o que recomendo para qualquer usuário de distro, assim com o próprio gerenciador de pacotes da distro. No caso, slackpkg para o Slackware e apt-get|aptitude|dpkg para o Debian, posso facilmente retornar o estado inicial de minha distro, removendo os pacotes dos módulos que criei.
Slackware
Não irei exemplificar aqui os pacotes do Slackware, porque na verdade são templates criadas para o SlackBuilds, o empacotamento e instalação dos módulos citados podem ser vistos em meu blog:
Debian
Agora, em se tratando de Debian, trate logo de instalar os seguintes pacotes:
- build-essential;
- devscripts;
- dpkg-dev;
- equivs;
- dh-make-perl.
sudo apt-get update
sudo apt-get install build-essential devscripts dpkg-dev equivs dh-make-perl
Os sources
Aqui, tomarei como exemplo 3 extras que uso bastante em meu OpenBox (obmenu-generator, obbrowser e clyrics), por acaso todos de autoria de Daniel Șuteu, citado na introdução, ou seja, scripts perl que dependem dos seguintes módulos CPAN:
Então, direto ao que interessa, baixemos os sources e descompactemos os mesmos:
mkdir perl-packages && cd perl-packages
wget -nv https://cpan.metacpan.org/authors/id/T/TR/TRIZEN/Linux-DesktopFiles-0.09.tar.gz
wget -nv http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Data-Dump-1.22.tar.gz
wget -nv http://search.cpan.org/CPAN/authors/id/E/ET/ETHER/WWW-Mechanize-1.74.tar.gz
tar xf Linux-DesktopFiles-0.09.tar.gz
tar xf Data-Dump-1.22.tar.gz
tar xf WWW-Mechanize-1.74.tar.gz
Em seguida, usamos o "dh-make-perl" para debianizar os módulos CPAN:
dh-make-perl Linux-DesktopFiles-0.09/
dh-make-perl Data-Dump-1.22/
dh-make-perl WWW-Mechanize-1.74/
A partir desse ponto, cada módulo será tratado individualmente, comecemos pelo pacote que me levou a criar meu primeiro SlackBuild, o Linux-DesktopFiles. Entre em seu diretório e use o "dch" para modificar os campos AUTOR e EMAIL (se desejar, isso é opcional), caso queira pule para o passo seguinte.
Linux-DesktopFiles
cd Linux-DesktopFiles-0.09/
dch -e
Se não pulou o passo anterior, modifique a linha AUTOR e EMAIL, salve e feche o arquivo, daí, crie e instale o meta-pacote de dependências:
mk-build-deps
sudo dpkg -i liblinux-desktopfiles-perl-build-deps_0.09-1_all.deb
Pronto, agora basta iniciar o empacotamento:
dpkg-buildpackage -us -uc -b
Após a conclusão, instale o novo pacote:
sudo dpkg -i ../liblinux-desktopfiles-perl_0.09-1_all.deb
cd..
Data-Dump
Passemos para o 2º caso, o Data-Dump. Entre em seu diretório, modifique a linha AUTOR e EMAIL se desejar, salve e feche o arquivo, crie e instale o meta-pacote de dependências:
cd Data-Dump-1.22/
dch -e
mk-build-deps
sudo dpkg -i liblinux-desktopfiles-perl-build-deps_0.09-1_all.deb
Daí, empacote e instale o novo pacote:
dpkg-buildpackage -us -uc -b
sudo dpkg -i ../liblinux-desktopfiles-perl_0.09-1_all.deb
cd ..
WWW-Mechanize
E enfim o 3º caso, o WWW-Mechanize, tudo exatamente igual ao descrito anteriormente:
cd WWW-Mechanize-1.74/
dch -e
mk-build-deps
sudo dpkg -i libwww-mechanize-perl-build-deps_1.74-1_all.deb
dpkg-buildpackage -us -uc -b
sudo dpkg -i ../libwww-mechanize-perl_1.74-1_all.deb
cd ..
Se tudo correu bem, todos os novos pacotes ".deb" e os arquivos ".changes" estarão na raiz da pasta "perl-packages", o conteúdo desses arquivos ".changes" serão parecidos com isto:
Format: 1.8
Date: Fri, 17 Apr 2015 20:03:01 -0300
Source: liblinux-desktopfiles-perl
Binary: liblinux-desktopfiles-perl
Architecture: all
Version: 0.09-1
Distribution: unstable
Urgency: low
Maintainer: edps
Changed-By: NOME_DO_SUJEITO
Description:
liblinux-desktopfiles-perl - Get and parse the Linux desktop files.
Changes:
liblinux-desktopfiles-perl (0.09-1) unstable; urgency=low
.
* Initial Release.
Checksums-Sha1:
f119fff5d588223db82c4821f19ad1bed9ec90b9 14664 liblinux-desktopfiles-perl_0.09-1_all.deb
Checksums-Sha256:
8758f1a3249626ea11afe1288c8341bf877d606cc60981b099e3386765dc19b5 14664 liblinux-desktopfiles-perl_0.09-1_all.deb
Files:
5480fbdb54f0f78bb6982d8cfad5f02b 14664 perl optional liblinux-desktopfiles-perl_0.09-1_all.deb
(Que bunitinhu, com md5 e tudo!)
Se estiver curioso, você pode listar o que foi instalado com:
dpkg -l liblinux-desktopfiles-perl
dpkg -l libdata-dump-perl
dpkg -l libwww-mechanize-perl
Cujo resultado foi isso:
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Nome Versão Arquitectura Descrição
+++-================-=============-=============-=====================================
ii liblinux-desktop 0.09-1 all Get and parse the Linux desktop files
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Nome Versão Arquitectura Descrição
+++-================-=============-=============-=====================================
ii libdata-dump-per 1.22-1 all Pretty printing of data structures
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Nome Versão Arquitectura Descrição
+++-================-=============-=============-=====================================
ii libwww-mechanize 1.74-1 all Handy web browsing in a Perl object
Ou pode listar o conteúdo dos pacotes assim:
dpkg -L liblinux-desktopfiles-perl
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/liblinux-desktopfiles-perl
/usr/share/doc/liblinux-desktopfiles-perl/README
/usr/share/doc/liblinux-desktopfiles-perl/copyright
/usr/share/doc/liblinux-desktopfiles-perl/changelog.gz
/usr/share/doc/liblinux-desktopfiles-perl/changelog.Debian.gz
/usr/share/man
/usr/share/man/man3
/usr/share/man/man3/Linux::DesktopFiles.3pm.gz
/usr/share/perl5
/usr/share/perl5/Linux
/usr/share/perl5/Linux/DesktopFiles.pm
dpkg -L libdata-dump-perl
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libdata-dump-perl
/usr/share/doc/libdata-dump-perl/README
/usr/share/doc/libdata-dump-perl/copyright
/usr/share/doc/libdata-dump-perl/changelog.gz
/usr/share/doc/libdata-dump-perl/changelog.Debian.gz
/usr/share/man
/usr/share/man/man3
/usr/share/man/man3/Data::Dump.3pm.gz
/usr/share/man/man3/Data::Dump::Filtered.3pm.gz
/usr/share/man/man3/Data::Dump::Trace.3pm.gz
/usr/share/perl5
/usr/share/perl5/Data
/usr/share/perl5/Data/Dump
/usr/share/perl5/Data/Dump/Trace.pm
/usr/share/perl5/Data/Dump/Filtered.pm
/usr/share/perl5/Data/Dump/FilterContext.pm
/usr/share/perl5/Data/Dump.pm
dpkg -L libwww-mechanize-perl
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libwww-mechanize-perl
/usr/share/doc/libwww-mechanize-perl/copyright
/usr/share/doc/libwww-mechanize-perl/changelog.gz
/usr/share/doc/libwww-mechanize-perl/changelog.Debian.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/mech-dump.1p.gz
/usr/share/man/man3
/usr/share/man/man3/WWW::Mechanize::Examples.3pm.gz
/usr/share/man/man3/WWW::Mechanize::Image.3pm.gz
/usr/share/man/man3/WWW::Mechanize.3pm.gz
/usr/share/man/man3/WWW::Mechanize::Cookbook.3pm.gz
/usr/share/man/man3/WWW::Mechanize::FAQ.3pm.gz
/usr/share/man/man3/WWW::Mechanize::Link.3pm.gz
/usr/share/perl5
/usr/share/perl5/WWW
/usr/share/perl5/WWW/Mechanize
/usr/share/perl5/WWW/Mechanize/Cookbook.pod
/usr/share/perl5/WWW/Mechanize/Link.pm
/usr/share/perl5/WWW/Mechanize/Examples.pod
/usr/share/perl5/WWW/Mechanize/Image.pm
/usr/share/perl5/WWW/Mechanize/FAQ.pod
/usr/share/perl5/WWW/Mechanize.pm
/usr/bin
/usr/bin/mech-dump
Explicando os motivos
Diferentemente de bash scripts, scripts perl tendem em sua maioria a requerer algo, no caso módulos, que às vezes não estão incluídos na instalação padrão do Perl e visando deixar as coisas mais limpas, digamos num caso de remoção, bastaria usar o apt-get para remover todos os traços do que foi instalado e remover manualmente os scripts que uso:
sudo apt-get --purge remove liblinux-desktopfiles-perl libdata-dump-perl libwww-mechanize-perl
sudo rm -fv /usr/local/bin/clyrics
sudo rm -fv /usr/local/bin/obbrowser
sudo rm -fv /usr/local/bin/obmenu-generator
Já usando o CPAN, ou o pacote CPANminus, sei como instalar os módulos, mas não como removê-los apropriadamente pelo CPAN, assim o sistema às vezes fica "sujo", noutras corrompe o que estava funcionando bem. Como no caso do Slackware, onde o pacote sbotools deixou de funcionar.
Aos interessados em instalar os módulos acima da forma tradicional, bastaria isto:
su
# perl -MCPAN -e shell
cpan>
install Bundle::CPAN
cpan>
reload cpan
cpan>
install Data::Dump
cpan>
install Linux::DesktopFiles
cpan>
install WWW::Mechanize
cpan>
exit
# exit
exit
Ou, com o CPANminus assim:
sudo cpan install Data::Dump
sudo cpan install Linux::DesktopFiles
sudo cpan install -f WWW::Mechanize
Dos scripts que uso aqui, o "obbrowser" (que lista as pastas de sua $HOME direto do obmenu-generator, é o único que tem uma das dependências que já faz parte dos repos Debian, o pacote libfile-mimeinfo-perl, o qual só descobri após tê-lo substituído pelo pacote que criei seguindo seguindo o esquema aqui apresentado. A diferença gritante está na versão dos pacotes, enquanto que o meu é a 0.27-1, o dos repos Debian ainda é o 0.16-1, o log de todo o empacotamento (dos 4 novos pacotes) está disponível no link abaixo:
Então, vimos aqui que com um pouco de esforço e pesquisa dá para manter um sistema Debian limpo e um OpenBox confortável e de fácil uso como esse:
Referência