Como instalar Lisp no Debian

O Debian tem aproximadamente 300 pacotes de softwares relacionados direta ou indiretamente à família de linguagens de programação Lisp.

Com especificações originalmente lançadas em 1958, o Lisp é a segunda linguagem de programação mais velha (ou madura), de alto nível e largamente usada nos dias de hoje.
A primeira colocada é Fortran, com um ano a mais.
— Wikipedia.

Claro que o Lisp mudou muito, no decorrer dos anos. Durante este tempo, deu origem a inúmeros dialetos — mas os que se consolidaram como mais importantes são o Common Lisp e o Scheme
Originalmente, a linguagem foi concebida para criar programas de notação matemática mais práticos — com o tempo, e rapidamente, se tornou a favorita para a pesquisa em inteligência artificial (IA).
O nome deriva da junção das palavras “LISt Processor” (processador de listas).
Enfim… se você está aqui, é por que já sabe de tudo isso. O que quer é instalar o suporte à linguagem de programação Lisp no Debian (ou em outra distro derivada dela).

Como obter uma relação de softwares de suporte ao Lisp no Debian

Use o apt search para pesquisar nos repositórios da sua distro pelos softwares relacionados a alguma palavra:


apt search lisp | less

Ou, para ser um pouquinho mais preciso:


apt search "common lisp" | less

Você pode obter mais informações sobre qualquer pacote com o comando apt show:


apt show common-lisp-controller


Package: common-lisp-controller
Version: 7.10
Priority: optional
Section: lisp
Maintainer: Debian Common Lisp Team 
Installed-Size: 62,5 kB

(...) 

Download-Size: 36,5 kB
APT-Sources: http://ftp.br.debian.org/debian testing/main amd64 Packages
Description: gerenciador de compilador e fontes do Common Lisp
 Este pacote ajuda a instalar os fontes e o compilador do Common Lisp.
 .
 Ele cria um cache de objetos compilados por usuário. Quando uma biblioteca
 ou uma implementação é atualizada, todos os objetos compilados no cache são
 descartados. Também fornece ferramentas para recompilar todas as
 bibliotecas e para gerar pacotes Debian a partir de pacotes asdf-install.
 .
 Também inclui clc-clbuild, um envoltório para o clbuild. Por favor, veja
 http://common-lisp.net/project/clbuild/ para mais informações.
 .
 Este pacote também contém um envoltório para invocar o emacs com um
 ambiente slime fornecido pelo clbuild.

Este mesmo pacote já traz muito do que você precisa para começar a programar em Lisp. Para instalá-lo, use o apt install:


sudo apt install common-lisp-controller 

A partir daí, já é possível rodar o SBCL, uma implementação do ANSI Common Lisp:


sbcl

A shell do sbcl permite executar os comandos Lisp.
sbcl lisp shell hello world
Para saber mais sobre outros programas já instalados no seu computador, voltados para a linguagem, use o apropos:


apropos lisp


register-common-lisp-implementation (8) - internal clc commands
clc-lisp (1)         - invoke lisp with clbuild active
clc-slime (1)        - invoke lisp with clbuild active
common-lisp-controller (3) - Common Lisp system management tool
lispmtopgm (1)       - convert a Lisp Machine bitmap file into pgm format
pgmtolispm (1)       - convert a portable graymap into Lisp Machine format
register-common-lisp-source (8) - internal clc commands
sbcl (1)             - Steel Bank Common Lisp
unregister-common-lisp-implementation (8) - internal clc commands
unregister-common-lisp-source (8) - internal clc commands

… ou volte a usar o apt search, como mostrei acima, para encontrar outras opções voltadas para a linguagem.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Qual é a distribuição Linux que tem mais pacotes em seus repositórios oficiais?

A resposta curta é: OpenSUSE, na data deste post!
No decorrer deste texto vou mostrar como obter suas próprias respostas e, com certeza, mais atualizadas.
No momento em que escrevo, a distro “do camaleão” é a que tem a maior quantidade de softwares disponíveis para a instalação — se você a sincronizar com todos os seus possíveis repositórios.
Por anos, a Debian foi a distro conhecida por ter a maior quantidade de pacotes em seus repositórios. Mas estas coisas mudam com mais frequência que a gente imagina.
Portanto, se quiser saber qual a distro Linux com mais aplicativos disponíveis, vai ter que fazer uma contagem.

Há alguma maneira “racional” de contar quantos pacotes de aplicativos estão disponíveis para uma distro?

Como contar os programas disponíveis em uma distribuição Linux

Esta pergunta pode ser respondida em 2 fases:

  1. primeiro você obtém a lista e
  2. depois, se estiver em formato texto simples, com um pacote relacionado a cada linha, basta contar as linhas da lista.

Não é difícil encontrar as listas de pacotes disponíveis para as distribuições, mas precisamos prestar atenção a algumas variáveis que as influenciam:

  • Versões alfa do sistema operacional podem ter uma lista num dia e outra em outro — softwares entram e saem todos os dias nesta fase de uma distribuição.
  • Diferentes plataformas demandam softwares específicos às vezes. Portanto a lista do Arch Linux para a plataforma ARM é uma e a lista do mesmo sistema operacional para a plataforma PC 64 bit é outra.

É difícil fazer comparações objetivas entre uma distro e outra, por que precisamos levar estes e outros fatores em conta.

A lista de softwares disponíveis para uma distro vai muito além dos repositórios oficiais. Elas aumentam significativamente, ao acrescentar outros repositórios, backports, PPAs etc.

Onde encontrar a relação de softwares do Ubuntu

A relação atual de softwares disponíveis, da distribuição Ubuntu que se encontra instalada no seu computador, depende dos repositórios incluídos no arquivo de configuração /etc/apt/sources.list.
Para obter a relação use os seguintes comandos:


sudo apt update
apt list | wc -l

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

69323

O resultado, acima, se refere à minha máquina Ubuntu 16.04 Xenial Xerus, com a minha configuração atual do sources.list.
O comando responde à pergunta sobre a quantidade de softwares disponível para a instalação local e atual do Ubuntu.
É importante dizer que a lista inclui 6 linhas de cabeçalho — que precisam ser excluídas da conta, para obter um resultado exato.


E se eu não tiver o Ubuntu instalado? E se eu quiser obter o número e a relação para uma versão diferente da que tenho instalada?
Quando a lista que você deseja não está presente no seu sistema, o jeito é buscar a informação online.
A lista de pacotes disponíveis para Ubuntu pode ser encontrada a partir do site http://packages.ubuntu.com/.
site com lista de versões do Ubuntu
O site permite escolher exatamente qual distro/versão ou repositório a ser pesquisado.
Para este artigo, vou escolher a relação allpackages do Ubuntu 16.04 LTS Xenial Xerus.
Se você quiser, pode acessar a lista aqui: http://packages.ubuntu.com/xenial/allpackages?format=txt.gz.
O cabeçalho da lista tem informações importantes, como a data em que ela foi gerada — que ajuda a estabelecer se é atual.
Eu preferi baixar o arquivo compactado com o wget.
Depois de baixado, descompactei o arquivo e alterei o nome (apenas por comodidade). Veja os meus procedimentos:


wget http://packages.ubuntu.com/xenial/allpackages?format=txt.gz

gunzip allpackages?format=txt.gz

mv allpackages\?format\=txt xenial64bit-desktop.txt 

Se quiser “passear” dentro do arquivo, use o comando less:


less xenial64bit-desktop.txt

Como você pode ver, cada programa ocupa uma única linha. Basta determinar quantas linhas há no arquivo (subtraídas as 6 linhas do cabeçalho), para obter a minha resposta. Para isto, use o comando wc:

wc -l xenial64bit-desktop-allpackages.txt

69323 xenial64bit-desktop-allpackages.txt

A resposta, neste caso, é 69.317 pacotes de software no Ubuntu 16.04 LTS Desktop 64 bit — já descontadas aquelas linhas iniciais.

Como obter a relação de pacotes do Arch Linux

A lista oficial pode ser encontrada fácil no site da distribuição.
arch linux lista de pacotes do repositório
Por sorte, o site tem um contador, do lado esquerdo superior à relação.
Você encontra a informação atualizada neste link: https://aur.archlinux.org/packages/?O=0&SeB=nd&K=&SB=n&SO=a&do_Search=Go.

Como determinar a quantidade de pacotes do Debian

O procedimento para obter esta informação do Debian é semelhante ao Ubuntu.
Se você usa Debian, pode ir para o terminal e obter o número de pacotes disponíveis para instalação, de acordo com a configuração do sources.list.
No meu sistema Debian 9 Stretch, obtive o seguinte resultado:

apt list | wc -l

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

51750

Os sites contendo as relações de pacotes são https://packages.debian.org/testing/allpackages?format=txt.gz (testing) e https://packages.debian.org/stable/allpackages?format=txt.gz (stable).
Você pode salvar o conteúdo desta página, direto do seu navegador, com CTRL+S (o que te poupa o trabalho de descompactar e renomear o arquivo posteriormente).
Eu salvei a página (do stable) com o nome de Jessie.txt e executei o wc no arquivo:

wc -l jessie.txt 
57286 jessie.txt

De forma que a nossa resposta é: 57.280 pacotes — descontadas as 6 linhas do cabeçalho.
Para a lista online do Stretch, obtive o resultado seguinte:

wc -l stretch.txt 
68675 stretch.txt

… o que dá 68.669 pacotes.

Por curiosidade, fui verificar também a quantidade atual de pacotes no Sid ou unstable:

wc -l sid.txt 
103440 sid.txt

O número é expressivo mas, sabemos que nada é definitivo no unstable.

Quantos pacotes de software estão presentes no Trisquel Linux

Derivado direto do Debian, podemos usar um método semelhante para obter esta informação.
A página com a relação de pacotes do Belenos é esta: http://packages.trisquel.info/belenos/allpackages?format=txt.gz.

wc -l belenos.txt 
52753 belenos.txt

Como resultado, obtive, então 52.747 pacotes, nesta versão do Trisquel GNU/Linux.

Quantos pacotes há no Fedora?

O Fedora 26 alpha apresentava uma relação de mais de 57 mil pacotes, como é possível observar nos meus exemplos abaixo. Até o lançamento, o número deve mudar.
Na linha de comando, você pode inquirir os repositórios com o comando yum ou dnf.
fedora 26 alpha running under VirtualBox
Veja como fazer com o comando yum:


yum list | wc -l

57219

Antes de rodar o comando dnf, optei por atualizar/sincronizar o sistema com os repositórios — para obter um número mais atual, claro:


dnf update
dnf list | wc -l

57222

Como determinar a quantidade de pacotes de softwares disponíveis nos repositórios do OpenSUSE

O OpenSUSE permite o uso do yum — mas tem que ser instalado — nos mesmos moldes que já mostrei neste texto.
O ideal é usar o zypper para obter a informação.


zypper packages | wc -c

69367

Conclusão

A quantidade de softwares disponíveis para instalar e usar no seu sistema operacional é um fator de escolha importante para algumas pessoas ou empresas.
A outras, basta que tenha o que precisa ser usado (eu).
Quando temos a tarefa de indicar distribuições para outras pessoas, contudo, pode ser interessante levar em conta este número — principalmente se você não tem certeza sobre como a pessoa vai usar o computador.
Somado a isso, a lista de possibilidades é muito flexível em qualquer distro Linux.
É muito raro um aplicativo estar disponível para uma distro e “ser impossível” de instalar em outras. Se o código fonte estiver disponível, o impossível perde seu significado.
Por fim, a wikipedia tem um tópico comparativo entre as diversas distribuições e que vale a pena consultar sempre. Veja o link abaixo!

Referências

https://en.wikipedia.org/wiki/Comparison_of_Linux_distributions#Package_management_and_installation.

Ferramentas online para configurar fácil o sources.list do Debian e Ubuntu

A lista de repositórios no Ubuntu e no Debian fica em um arquivo chamado sources.list.
Não é um dos arquivos de configuração mais difíceis de se editar mas… se podemos facilitar as coisas, por que não?
sources.list
Usar um gerador online pode ser uma forma bem prática de obter um arquivo sources.list totalmente personalizado e ajustado às suas necessidades.


Se tiver interesse em conhecer melhor o sources.list e como ele pode ser editado manualmente, leia este post.
Para este post, analisei 2 dos geradores — tanto para Debian quanto para distribuições baseadas no Ubuntu. Você escolhe.

É recomendado usar estas ferramentas com cuidado.
Você pode bagunçar terrivelmente o seu sistema ao fazer escolhas erradas.
Portanto, se você não sabe o que está fazendo, é melhor não fazer.

Antes de prosseguir, faça o backup do seu repositório atual:

cp /etc/apt/sources.list ~/sources.list.bak

Gerador de sources.list online só para distribuições baseadas no Debian

Se quiser gerar rapidamente e sem complicações um sources.list para a sua distro baseada no Debian, use este aqui.
O site https://debgen.xyz é um projeto voltado para criar rapidamente uma “lista de fontes” simplificada, que serve para a maioria dos usuários.
debian.xyz sources list generator
Siga os passos:

  1. Comece escolhendo o país hospedeiro do seu espelho (mirror). O ideal é optar pelo que estiver mais próximo de você.
  2. Em seguida, selecione o release e a arquitetura atual: stable, testing ou unstable (Sid).
  3. Escolha os repositórios que te interessam entre source, contrib, non-free e security. Na dúvida, não faz mal selecionar todos.

Quando terminar a configuração, clique no botão azul “Make it go!“.
O texto, acima do botão, irá mudar para refletir as suas escolhas.
Agora substitua o conteúdo do arquivo /etc/apt/sources.list pelo texto novo.
Rode o apt:

sudo apt update

Gerador complexo para Debian

O site https://debgen.simplylinux.ch/ é “complexo” no sentido de ter (bem) mais opções.
Vai funcionar tal como eu descrevi o site anterior, com algumas diferenças.
Acompanhe o passo a passo para quem vai optar pelo repositório Debian:

  1. Desative a opção Fast Server, para obter um menu mais extenso.
    debian fast server
  2. Escolha o espelho e o release em uso.
  3. Vá rolando o site para baixo e selecionando os repositórios que te interessam
  4. Ao final, clique no botão “Generate“.

debgen simplylinux
Se você escolheu repositórios de terceiros, provavelmente terá que executar o comando “apt-key adv” indicado em uma das caixas, antes de executar o “apt update”. Fique atento a isso.

Gerador de sources.list para Ubuntu

Se você usa Ubuntu ou uma das várias distribuições Linux baseadas nele, use o gerador do site https://repogen.simplylinux.ch/ e siga os passos:

  1. Comece por selecionar o país em que se encontra hospedado o mirror que você deseja usar. Em seguida, informe o release atual do seu Ubuntu.
  2. Continue rolando a página e selecionando os repositórios desejados.
  3. Ao final, clique em “Generate
  4. A tela com o resultado tem o texto a ser copiado, em substituição ao conteúdo atual do arquivo /etc/apt/sources.list.
    Se achar melhor, apenas execute os comandos sugeridos pela página (veja as setas, na figura abaixo) — eles podem ser copiados e colados direto no terminal.
    sources.list online generator
    Um dos comandos altera o sources.list e o outro (se houver) adiciona as chaves públicas necessárias para eventualmente acessar algum repositório.

Divirta-se!

Como detalhar as atualizações de pacotes com apt, apt-get e aptitude

Sempre surge alguma curiosidade específica, sobre algum pacote de software, em particular, que está para ser atualizado no meu sistema.
Esta dica funciona no Ubuntu e no Debian e pode ser aplicada com os comandos apt, apt-get ou o aptitude.
Quem usa o Debian Testing ou o Ubuntu Alpha/Beta, pode ter que atualizar diariamente o seu sistema.
Este “incômodo” é o preço que se paga para usar software atualizado e (razoavelmente) seguro.
Claro que o processo de atualização diária do sistema sempre pode ser incluído no cron, caso seja um incômodo.
Eu gosto, contudo, de acompanhar as mudanças no software instalado em meu notebook pessoal.
Portanto, diariamente, tenho o costume de rodar o comando apt para verificar e fazer as atualizações necessárias.

Este texto é para aqueles casos em que você se pergunta “que diabos estão atualizando neste pacote, aí?”

Como detalhar atualizações de um pacote com o apt-get, apt ou aptitude

Tanto faz usar um como o outro. O resultado é o mesmo.
Com a opção ‘changelog’, é possível baixar e mostrar os relatório de atualizações dos pacotes. Veja um exemplo, envolvendo o pacote do wget:

apt-get changelog wget

O resultado exibe o log de atualizações e correções de bugs em ordem de data, a partir da mais recente:

wget (1.18-2) unstable; urgency=medium

  * added OpenSSl 1.1.0 patch from upstream git. closes: #828599

 -- Noël Köthe <noel@debian.org>  Sat, 02 Jul 2016 16:45:14 +0200

wget (1.18-1) unstable; urgency=medium

  * new upstream release from 2016-06-10
    - fixed CVE-2016-4971 closes: #827003
    - fixed segmentation fault when terminal width is small. closes: #823891
  * debian/control: updated Standards-Version, no changes needed
  * debian/changelog fixed spelling errors

 -- Noël Köthe <noel@debian.org>  Sat, 11 Jun 2016 20:30:44 +0200

wget (1.17.1-2) unstable; urgency=low

  * applied patch from Margarita Manterola. Thanks a lot:
    - Add udeb support, taken from the work done by Colin Watson for Ubuntu
      in 1.10.2-2ubuntu2 and forward.
    - Added dependency on libssl-dev for the udeb, as gnutls does not provide
      a udeb package.

...

Só pela curiosidade, é possível ver, na listagem acima, que existe trabalho da hacker argentina Margarita Manterola, na correção de bugs no wget.
Se você prefere usar o apt para realizar o trabalho, tudo funciona igual. Veja:

apt changelog systemd

Esta é uma forma de acompanhar a evolução de seus aplicativos favoritos.
Para os que preferem usar o aptitude, o procedimento é idêntico:

aptitude changelog wget

wget changelog

Os ovos de páscoa do comando apt

Ovos de páscoa ou easter eggs, em inglês, são pequenos segredinhos escondidos em programas de computador.
Eles estão ali, escondidos, prontos para serem revelados diante do procedimento certo.
Eu já havia escrito sobre os ovos de páscoa contidos nos comandos apt-get e aptitude, no Debian e no Ubuntu.
Leia mais sobre eles aqui.
Com a crescente popularização do comando apt, contudo, me senti tentado a ir descobrir se os mesmos procedimentos revelariam alguma coisa neste comando.
No decorrer dos testes, usei o Debian 9 Stretch (Testing) e o Ubuntu 16.04 LTS Xenial Xerus.
Vamos ver um por um.
apt command easter eggs
Me acompanhe:

apt | grep -i "super"
                                   Este APT tem Poderes de Super Vaca.

Aparentemente, até o momento, este é a única parte do ovo de páscoa que está traduzido, no apt.
O que segue, mostra uma imagem, em ASCII, de uma vaquinha:

apt moo
                 (__) 
                 (oo) 
           /------\/ 
          / |    ||   
         *  /\---/\ 
            ~~   ~~   
..."Have you mooed today?"...

A frase “Have you mooed today?” quer dizer “Você já mugiu hoje?”.
Se quiser ver apenas a frase, use o seguinte comando:

apt moo | grep -i today
#WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

..."Have you mooed today?"...

debian flat badge
Infelizmente, não é possível se livrar do aviso (ou warning), em inglês, que informa que a estabilidade da interface CLI do apt ainda está em desenvolvimento.
Se você quiser ver a versão atual do seu apt, basta executá-lo com a opção ‘-v’ ou ‘–version’:

apt -v
apt 1.3~pre2 (amd64)