Slackware Linux 14.2 – Reinstalando o VirtualBox 6.0.4 após upgrade do kernel

Slackware logo

Olá pessoal! Passando para compartilhar uma solução de contorno, que visa reparar a instalação do VirtualBox junto a Slackware Linux, após a recente atualização de segurança disponibilizada para o kernel Linux, junto a versão 14.2 da distribuição.

Após a instalação dos pacotes atualizados e tentativa de reinstalação do VirtualBox, a partir do binário disponibilizado pela Oracle junto ao site da aplicação, o mesmo afirma que a instalação foi realizada, porém apresentando erros que devem ser consultados através do arquivo de log.

Ao verificar o conteúdo do arquivo /var/log/vbox-setup.log, encontrei os seguintes erros:

$ tail -n 50 /var/log/vbox-setup.log

scripts/Makefile.build:277: recipe for target ‘/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o’ failed
make[2]: *** [/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o] Error 1
make[2]: *** Waiting for unfinished jobs….
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/r0drv/linux/memuserkernel-r0drv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/r0drv/linux/memuserkernel-r0drv-linux.o”; fi; fi;
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/r0drv/linux/assert-r0drv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/r0drv/linux/assert-r0drv-linux.o”; fi; fi;
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/r0drv/linux/alloc-r0drv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/r0drv/linux/alloc-r0drv-linux.o”; fi; fi;
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/linux/SUPDrv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/linux/SUPDrv-linux.o”; fi; fi;
if [ “-pg” = “-pg” ]; then if [ /tmp/vbox.0/r0drv/linux/mp-r0drv-linux.o != “scripts/mod/empty.o” ]; then ./scripts/recordmcount “/tmp/vbox.0/r0drv/linux/mp-r0drv-linux.o”; fi; fi;
Makefile:1436: recipe for target ‘_module_/tmp/vbox.0’ failed
make[1]: *** [_module_/tmp/vbox.0] Error 2
/tmp/vbox.0/Makefile.include.footer:106: recipe for target ‘vboxdrv’ failed
make: *** [vboxdrv] Error 2

As linhas que nos interessam são justamente as que aparecem mais acima, no log:

scripts/Makefile.build:277: recipe for target ‘/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o’ failed
make[2]: *** [/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o] Error 1
make[2]: *** Waiting for unfinished jobs….

Com base nesse erro, busquei por informações na Internet, e encontrei uma postagem em um blog, cujo autor já havia enfrentado o mesmo problema, postando a solução de contorno para o mesmo.

Para corrigir o erro, precisamos editar o arquivo referenciado, alterando a versão do kernel disponível no script:

$ vi /usr/src/vboxhost-6.0.4/vboxdrv/r0drv/linux/memobj-r0drv-linux.c

Substitua a versão destacada em vermelho, em três locais diferentes no arquivo:

if GET_USER_PAGES_API >= KERNEL_VERSION(4, 9, 0)

fWrite ? FOLL_WRITE | /* Write to memory. */

FOLL_FORCE /* force write access. */

: 0, /* Write to memory. */

Deixando com esta versão:

if GET_USER_PAGES_API >= KERNEL_VERSION(4, 4, 168)

fWrite ? FOLL_WRITE | /* Write to memory. *

/ FOLL_FORCE /* force write access. */

: 0, /* Write to memory. */

Agora basta executar o comando para configurar o VirtualBox novamente, e este compilará sem erros:

# /sbin/vboxconfig

Para acessar o artigo original, siga o link para o SlackBlogs – Unofficial Blog for Slackware Linux.

Slackware Linux e… o gerenciamento de pacotes – parte 2

Slackware logo

Continuando o primeiro artigo da série “Slackware Linux e…”, que trata sobre o gerenciamento de pacotes, iniciamos agora a segunda parte, onde veremos mais uma ferramenta para gerenciar a instalação ou atualização de pacotes, ou mesmo podendo atualizar toda a distribuição para uma nova versão, e que também está disponível por padrão na Slackware Linux.  Esta ferramenta é chamada de slackpkg e, para quem não sabe, além de ter sido idealizada, também é mantida por um brasileiro, que atende pelo apelido de Piter Punk.

Piter é um dos diversos profissionais que atuam, há bastante tempo, na contribuição para o desenvolvimento da Slackware Linux, colaborando não só com esta importante ferramenta, mas também testando novas versões, localizando, reportando, e até mesmo corrigindo bugs encontrados, durante o processo de atualização da distribuição.

Esta ferramenta desenvolvida por ele facilita bastante o gerenciamento de pacotes na distribuição, pois utiliza um conjunto de diversos scripts, que controlam as ferramentas apresentadas anteriormente, e que realiza o gerenciamento dos pacotes instalados localmente, além da verificação da disponibilidade de atualizações para os pacotes instalados, ou a possibilidade de instalação de novos pacotes, através da consulta a um servidor remoto, ou mesmo uma mídia local, que venha a provê-la com as atualizações necessárias.

Por ser disponibilizada por padrão na Slackware Linux, a slackpkg provavelmente já está instalada em seu sistema, bastando então configurá-la para utilização. Para tanto, via linha de comando, utilizando o editor de sua preferência e com permissões de administrador ( root ), acesse primeiro o arquivo encontrado no seguinte caminho:

/etc/slackpkg/mirrors

Depois de aberto, localize a seção referente à versão da Slackware Linux que você utiliza no momento, e descomente a linha que aponta para o servidor de atualização mais próximo de sua localidade. Através da imagem abaixo, mostro que a penúltima linha do arquivo foi descomentada para refletir a minha escolha, onde utilizo a versão 14.1 de 64 bits da distribuição, além de mostrar que também seria possível escolher como fontes de atualização o drive de CD/DVD, ou um caminho para um diretório que contivesse os arquivos atualizados.

Visão de parte do arquivo /etc/slackpkg/mirrors

Visão de parte do arquivo /etc/slackpkg/mirrors

Note também que a primeira linha mostrada na imagem nos diz que apenas uma linha pode ser descomentada para a utilização da ferramenta, não permitindo a utilização de mais de uma fonte de consulta para atualizações. Para lidar com mais de uma fonte de acesso a arquivos, a ferramenta dispõe de um plugin, do qual falarei na terceira parte da série “Slackware Linux e…”.

Tão logo tenha descomentado a linha desejada, salve o arquivo e comece a utilização da ferramenta ainda na linha de comando, e com o mesmo nível de privilégios ( root ). Sempre utilize a slackpkg com acesso de administrador. Como primeiro passo, vamos atualizar a base de dados a ser utilizada pela ferramenta, utilizando alguns comandos a seguir:

Para atualizar as diversas listas de pacotes consultadas pela ferramenta:

# slackpkg update

Em seguida, já podemos começar a gerenciar nossas aplicações através da ferramenta, utilizando para tal, algumas opções disponíveis, como as seguintes:

Para buscar um pacote na lista atualizada ( todos os arquivos que contiverem a expressão utilizada serão listados ):

# slackpkg search nomedoarquivo

Para buscar apenas por um arquivo específico:

# slackpkg file-search nomedoarquivo

Para instalar um pacote localizado na lista atualizada:

# slackpkg install nomedoarquivo

Ao invés do nome do arquivo, você pode também utilizar apenas uma referência, e então a ferramenta irá mostrar uma lista de arquivos que sejam compatíveis com essa referência, mostrando-lhe uma lista e pedindo que confirme a instalação, ou que desmarque os pacotes encontrados que não queira instalar. Por exemplo, caso utilize o comando:

# slackpkg install n/dhcp

Este irá mostrar que os pacotes dhcp e dhcpd foram encontrados, possibilitando a opção de instalá-los ou desmarcar o que não desejar que seja instalado. Lembrando que não é possível instalar um pacote que já esteja instalado no sistema, devendo-se, então, utilizar o comando de atualização.

Para atualizar um pacote, utilizamos o seguinte comando:

# slackpkg upgrade nomedoarquivo

Esta opção permite a re-instalação de pacotes, ou a atualização destes para versões mais recentes. Da mesma forma que a opção install não atualiza pacotes já instalados, por não ser esta a sua finalidade, a opção upgrade não instala novos pacotes no sistema, devendo-se, então, utilizar as opções específicas para cada ação desejada.

Além da opção upgrade, a opção reinstall também é fornecida para os casos em que seja necessário reinstalar algum pacote. Para tal, utilize o seguinte comando:

# slackpkg reinstall nomedoarquivo

A opção remove irá remover os pacotes que atendam ao parâmetro fornecido. Por exemplo, o comando abaixo removeria todos os pacotes que tivessem kde em seu nome:

# slackpkg remove kde

 Também há a opção de marcar pacotes para que estes não recebam atualizações, ao inseri-los em um arquivo especial, através do caminho /etc/slackpkg/blacklist. Para isso, basta adicionar os nomes destes pacotes ao arquivo e salvá-lo em seguida. A partir daí estes pacotes serão ignorados durante as atualizações, mesmo que disponham de versões mais recentes. Pode-se adicionar estes nomes ao arquivo simplesmente editando-o com o editor de linha de comando de sua preferência, ou usando o comando:

# slackpkg blacklist nomedoarquivo

Lembrando que para remover o nome de um pacote, da lista contida no arquivo blacklist, é necessário editá-lo para se obter o resultado desejado, já que o comando acima apenas acrescenta nomes de pacotes ao arquivo.

Você também pode apenas querer baixar um pacote, sem que logo em seguida este seja instalado. Para esta tarefa, utilize o comando:

# slackpkg download nomedoarquivo

Pode-se querer apenas checar as informações referentes a determinado pacote, como a sua descrição, qual seu tamanho comprimido e depois de extraído, entre outras. Para essa função, utilizamos o comando:

# slackpkg info nomedoarquivo

Depois de tanto adicionar pacotes de terceiros à distribuição, pode ser que você queira removê-los, deixando a Slackware Linux apenas com os pacotes que compõem o conjunto oficial de pacotes que acompanham a distribuição, removendo todos aqueles que sejam pacotes de terceiros, sem que seja necessário que busque cada um deles, separadamente, para a devida remoção. Para esta tarefa, utilize o comando:

# slackpkg clean-system

Vale lembrar que os pacotes que estiverem listados no arquivo blacklist não serão removidos, mesmo que não sejam parte integrante dos pacotes originais da distribuição.

Para instalar novos pacotes, que sejam parte integrante da distribuição, mas que não tenham sido instalados no momento em que realizou a instalação, utilizamos o comando:

# slackpkg install-new

Este comando listará todos os pacotes que não estejam instalados atualmente em seu sistema, assim podendo selecionar aqueles que deseja instalar.

Para atualizar todos os pacotes com atualizações disponíveis, utilizamos o seguinte comando:

# slackpkg upgrade-all

Este comando é particularmente interessante quando queremos atualizar a distribuição para uma versão mais recente, mas necessita da utilização de um conjunto de comandos em sequência, e sobre os quais já falamos aqui, e que é o seguinte:

# slackpkg update

Tão logo atualize, verifique novamente o arquivo de configuração da ferramenta e selecione o repositório mais próximo de você, salvando-o em seguida, mas agora apontando para a versão mais recente da distribuição, e não mais a versão instalada atualmente. Feito isso execute os outros comandos a seguir:

# slackpkg install-new

# slackpkg upgrade-all

# slackpkg clean-system

Claro que é sempre recomendável verificar as recomendações disponibilizadas no changelog de uma nova versão da distribuição, antes de se realizar qualquer atualização deste porte, recebendo informações sobre possíveis problemas que possa enfrentar quando da realização do procedimento.

Já estamos quase terminando, e acho que não imaginava que houvesse tantas opções de utilização para o slackpkg não é mesmo? Vamos lá que falta pouco!

Depois de ter instalado a distribuição, você pode querer realizar uma nova instalação em um outro equipamento, utilizando as mesmas escolhas que fez para este sistema. Para esta tarefa utilizamos o recurso da criação de templates, que nada mais são que modelos a serem replicados. Para criar um template do sistema atual, utilize o comando:

# slackpkg generate-template

Tão logo o modelo seja criado, podemos utilizá-lo para replicar este modelo em outro sistema, utilizando o comando:

# slackpkg install-template

Durante uma instalação ou atualização de pacotes, alguns arquivos de configuração que tenha editado podem ser sobrescritos pelos que, por padrão, são fornecidos com o pacote instalado ou atualizado, fazendo com que sejam disponibilizados arquivos no sistema com a extensão “.new”. Para localizar e receber instruções sobre como tratá-los, execute o seguinte comando:

# slackpkg new-config

Finalmente, mas não menos importante, dispomos de um comando que verifica a disponibilidade de novas atualizações. Este comando é o:

# slackpkg check-updates

Pronto, agora sim terminamos, pelo menos por enquanto, pois no próximo artigo da série “Slackware Linux e…”, abordaremos um plugin que estende ainda mais as funcionalidades do slackpkg, mas que, devido às suas várias opções de configuração, mereceu que fosse tratado apenas na terceira parte dos artigos que falam sobre o gerenciamento de pacotes.

Para maiores detalhes sobre essa incrível ferramenta, acesse a documentação, através da linha de comando, que mostra o manual referente a ela:

# man slackpkg

Mais uma vez convido vocês a deixarem as suas opiniões e críticas, mas espero que estes artigos possam estar sendo úteis. Até breve!

Slackware Linux 14.1 – Instalando a LibreOffice 4.4.0

libreoffice

Enquanto a nova versão da distribuição Slackware Linux não é disponibilizada, nada impede que sigamos atualizando as aplicações que mais utilizamos, e uma suíte de produtividade como a LibreOffice é, com certeza, um dos pacotes de aplicativos que mais utilizamos em nosso dia a dia.

Embora a Calligra seja o pacote de aplicativos para escritório disponibilizado por padrão nesta distribuição, nada impede que adicionemos outros igualmente livres, e que sejam de nossa preferência. A disponibilização dos pacotes atualizados, gentilmente compilados por Eric Hameleers, um dos profissionais que atuam diretamente no desenvolvimento da distribuição, possibilita que instalemos a versão mais recente desta suíte de aplicativos de escritório, embora a versão estável ainda seja a 4.3.5.

Para quem desejar acessar os diretórios que disponibilizam estes pacotes diretamente, para possivelmente baixar outros pacotes de linguagens, aqui estão os links para as versões 14.1 e current, respectivamente. Se você quer apenas os pacotes para a instalação da nova versão, com suporte ao português brasileiro, para a versão 14.1, que é a mesma que estou utilizando no momento, então aqui vão os links para esses pacotes, poupando o tempo em buscá-los em meio aos outros pacotes disponíveis:

Pacote de atualização da suite office: libreoffice-4.4.0-x86_64-1alien.txz;

Pacote com o dicionário para a língua portuguesa do Brasil: libreoffice-dict-pt-BR-4.4.0-x86_64-1alien.txz ;

Pacote de integração da LibreOffice com o ambiente gráfico KDE: libreoffice-kde-integration-4.4.0-x86_64-1alien.txz ;

Pacote com a tradução da LibreOffice para a língua portuguesa do Brasil: libreoffice-l10n-pt_BR-4.4.0-x86_64-1alien.txz ;

Depois de baixados, basta realizar a instalação dos pacotes, utilizando para isso uma sessão do terminal, com privilégios de administrador, e executando o comando installpkg seguido do nome do pacote. Caso já possua uma versão anterior da LibreOffice em sua Slackare Linux, utilize então o comando upgradepkg seguido do nome do pacote, isso fará com que o pacote instalado anteriormente seja atualizado, removendo em seguida a versão antiga deste. Até a próxima!