Conforme explicado na Parte I desta série de artigos, a primeira coisa a fazer para a preparação do nosso ambiente de desenvolvimento Common Lisp é a instalação e a configuração do GNU Emacs, considerado por muitos como o melhor editor extensível de texto disponível hoje em dia. O Emacs será a base de nosso ambiente de desenvolvimento e, portanto, será instalado em primeiro lugar.
Eu demonstrarei como compilar, instalar e configurar a versão mais nova do Emacs (27.2) em um sistema Linux (Ubuntu 20.04). Alguns pressupostos que estou assumindo são:
- Você não é um usuário iniciante (caso contrário não estaria buscando um ambiente de desenvolvimento para Common Lisp, não é?);
- Você está usando uma distribuição Linux recente;
- Você sabe como instalar pacotes de sua distribuição Linux (com
apt-get
,yum
,dnf
ou outro gerenciador de pacotes); e - Você tem noções de como compilar códigos fonte ou, pelo menos, consegue identificar quando ocorre algum problema na compilação.
1. Por que compilar a versão mais nova?
Se você utiliza uma distribuição Linux razoavelmente recente, é provável que o Emacs já esteja instalado por padrão. Se o Emacs não estiver instalado é possível utilizar o gerenciador de pacotes de sua distribuição para isso.
No Ubuntu (e em outras distribuições baseadas em Debian) você pode fazer:
sudo apt install emacs
Em distribuições baseadas no Red Hat que utilizam o yum
você pode fazer:
sudo yum install emacs
Em distribuições baseadas no Red Hat que utilizam o dnf
você pode fazer:
sudo dnf install emacs
A instalação do Emacs através do gerenciador de pacotes de sua distribuição Linux é rápida e prática mas tem uma desvantagem: as versões que costumam ser instaladas não são as mais atuais e, portanto, compilar a versão mais nova a partir do código fonte é uma boa opção para nosso ambiente de desenvolvimento, e é isso que faremos nas próximas seções.
Por favor note o seguinte: este não é um tutorial genérico, aplicável a todas as situações possíveis e imagináveis nas quais diferentes versões do Emacs são instaladas em diferentes sistemas operacionais e com todas as opções comentadas e explicadas. Para isso já existe a documentação do Emacs. Meu interesse aqui é demonstrar e documentar como instalar o Emacs em um Linux recente (Ubuntu 20.04) para que, da próxima vez, eu não tenha que procurar na documentação ou na internet o encantamento correto do comando configure
.
2. Compilar e instalar
Crie um diretório temporário em seu computador e faça o download do código fonte da versão mais nova do Emacs em https://ftp.gnu.org/gnu/emacs/ dentro desse diretório. Atualmente a versão mais nova é a 27.2. Os comandos abaixo criarão o diretório temporário emacstemp
e, dentro desse diretório, farão o download do código fonte:
mkdir emacstemp cd emacstemp wget https://ftp.gnu.org/gnu/emacs/emacs-27.2.tar.gz
OPCIONAL: caso você tenha experiência com o GnuPG (GNU Privacy Guard), pode fazer o download do arquivo de assinatura do código fonte, do keyring do projeto GNU, e verificar a assinatura digital do arquivo do código fonte:
wget https://ftp.gnu.org/gnu/emacs/emacs-27.2.tar.gz.sig wget https://ftp.gnu.org/gnu/gnu-keyring.gpg gpg --verify --keyring ./gnu-keyring.gpg emacs-27.2.tar.gz.sig
Agora devemos descompactar o código fonte e entrar no subdiretório que será criado:
tar -zxvf emacs-27.2.tar.gz cd emacs-27.2
O próximo passo é configurar as opções de compilação com o comando configure
exemplificado abaixo. Por favor, note o seguinte:
- Eu gosto de instalar o Emacs dentro do diretório
/opt
e o comandoconfigure
abaixo está preparado para isso. Se esse não for o seu caso, ajuste conforme sua necessidade; - Além do diretório específico outras configurações específicas que eu gosto de utilizar estão informadas. Para saber mais sobre as opções disponíveis consulte a documentação do Emacs ou execute “
./configure --help
“; - O comando deve ser digitado em uma única linha; e
- Não entre em pânico se ocorrer algum ERRO durante a configuração da compilação! É bem possível que o comando abaixo resulte em algum erro devido à falta de pacotes de dependências que precisarão ser instalados em seu sistema. Para corrigir isso você precisa identificar o erro, instalar as dependências apontadas e rodar a configuração novamente. O Google é seu melhor amigo na busca da solução para problemas desse tipo.
./configure --prefix=/opt/emacs-27.2 --enable-checking --enable-autodepend --enable-gcc-warnings=warn-only --enable-check-lisp-object-type --with-mailutils --with-kerberos5 --with-hesiod --with-sound=yes --with-x-toolkit=gtk3 --with-imagemagick --with-xwidgets --with-x --with-gpm
OK, o que acontece quando você digita o feitiço acima? Se tiver sorte, depois de um tempo no qual mensagens do comando configure serão lançadas na tela, não irá receber nenhuma mensagem de erro e o comando terminará com sucesso.
Se ocorrer algum erro o comando será interrompido e a mensagem de erro será exibida. Nesse caso você deve identificar o que está causando o erro (na maioria absoluta das vezes o problema é a falta de algum pacote necessário para a compilação) e solucionar a questão (na maioria das vezes basta instalas os pacotes que foram listados como faltantes). Depois de solucionar o problema, rode o comando configure novamente.
Depois que o comando configure rodou e foi finalizado com sucesso, é hora de compilar o Emacs. Para isso basta digitar o comando make (a compilação demora alguns minutos):
make
Se a compilação falhar com alguma mensagem de erro você precisará investigar a mensagem e resolver o problema por conta própria (novamente apele para seu amigo Google). Para “zerar” a compilação e começar de novo, caso algum erro tenha ocorrido, execute (depois desses comandos e após resolver o problema você deverá rodar o configure novamente):
make clean make distclean
Se a compilação terminar sem nenhum erro, teste o executável do Emas com o comando:
src/emacs -Q
Se tudo ocorreu corretamente o Emacs irá iniciar e funcionar, e a interface padrão será exibida:
Agora basta instalar definitivamente o Emacs com o comando “make install”. ATENÇÃO: dependendo do diretório de instalação que você informou na configuração, a instalação deverá ser realizada como usuário root!
sudo make install
O Emacs será instalado no diretório desejado (/opt/emacs-27.2). Você pode criar um link simbólico para o diretório, do seguinte modo:
sudo ln -s /opt/emacs-27.2 /opt/emacs
Com isso você pode iniciar o Emacs com o comando:
/opt/emacs/bin/emacs
Para comodidade, crie um atalho no desktop usando as ferramentas de sua distribuição Linux ou criando o arquivo ~/Desktop/emacs.desktop
com o seguinte conteúdo:
#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Name=Emacs (GUI) GenericName=Text Editor Comment=GNU Emacs is an extensible, customizable text editor - and more MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; Exec=/opt/emacs/bin/emacs %F Icon=emacs Type=Application Terminal=false Categories= StartupWMClass=Emacs Keywords=Text;Editor; Name[en_US]=Emacs 27.2 (GUI) NoDisplay=false Hidden=false
Parabéns, o Emacs foi compilado e instalado! O próximo passo é configurar os arquivos de inicialização do Emacs e isntalar vários packages importantes para nosso ambiente de desenvolvimento Lisp. Nos vemos no próximo artigo desta série!