Kernel 4.4.9

Mais uma atualização do kernel no Slackware-current, desta vez para a versão 4.4.9.

No fim vou ter que reiniciar os hosts das máquinas virtuais com os comandos que usei das últimas vezes. Estes comandos são necessários para recompilar o VirtualBox para a nova versão do Kernel do Linux.

cd /root
bat/vboxes stop
cd /usr/local/
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
reboot
exit
cd /usr/local/
chmod +x ./VirtualBox-5.0.20-106931-Linux_amd64.run
./VirtualBox-5.0.20-106931-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.20-106931.vbox-extpack
cd -
bat/vboxes start

O ficheiro bat/vboxes é um ficheiro de comandos que criei para gerir as máquinas virtuais do VirtualBox.

Entretanto, se alguma das máquinas falhar, posso recuperá-la da mesma forma que já aqui foi documentada antes.

Reiniciar a máquina virtual, ligando ao leitor de CD um ISO com a última versão do sistema operativo. Depois de arrancar e escolher o layout do teclado, executar os comandos seguintes.

mount /dev/sda2 /mnt
mount -t proc proc /mnt/proc (this was the magic step)
chroot /mnt
cd /boot
mkinitrd -c -k 4.4.9 -m ext3
# No ficheiro /etc/lilo.conf colocar a linha
initrd = /boot/initrd.gz
# no fim do ficheiro, logo após a linha
root = /dev/sda2
# depois, executar os comandos:
lilo
reboot

imap e inetd

Volta e meia, após as atualizações dos sitemas, fico sem acesso aos meus servidores de email via imap. Em geral, o problema acontece quando atualizo o ficheiro /etc/inetd.conf.

vi /etc/inetd.conf

Nesse ficheiro, a linha seguinte (linha 68 ou próximo) aparece comentada e tem que ser descomentada:

imap2   stream  tcp     nowait  root    /usr/sbin/tcpd  imapd

Por fim, é necessário reiniciar o serviço inetd:

/etc/rc.d/rc.inetd restart

Nota: ainda há 3 meses atrás escrevi um artigo sobre isto. Isto está sempre a acontecer e, por vezes, não deteto logo o problema. Tenho que criar um automatismo qualquer para emitir um alerta, sempre que o imap ficar indisponível. Mais notícias em breve.

Kernel 4.4.7

O Pat congratulou-se com o surgimento da versão 4.4.7 do kernel do Linux!

Eu, pessoalmente, achei estranho que, durante meses seguidos, a versão CURRENT do Slackware tivesse tantas atualizações do kernel. Mas agora percebi. Eis a mensagem do Patrick Volkerding:

Fri Apr 15 20:37:37 UTC 2016
Finally got some fixes we were waiting for in this new kernel.

Havia bugs no kernel da versão CURRENT e foram, entretanto, resolvidos. Ainda bem, pois eu costumo atualizar, de tempos a tempos, os meus servidores para a versão CURRENT mais atual.

Então aqui vão as atualizações feitas hoje.

(sometimes it snows in april)

Não esquecer que a nova configuração do SSHD não permite o acesso de clientes à conta “root”. Para permitir, é necessário, antes do último reboot, colocar a linha seguinte no ficheiro /etc/ssh/sshd_config: PermitRootLogin yes
Ou então apagar o ficheiro /etc/ssh/sshd_config.new antes de fazer o upgrade.
Ou, sempre que o SSHD é atualizado, não fazer o overwrite desse ficheiro.

Aparentemente, quando executo o último comando para a atualização do Slackware-current (slackpkg clean-system), o Slackware desinstala o Java – tanto o jre, como o jdk – instalados a partir dos pacotes que eu criei. Nalgumas máquinas isso pode ser um problema, como no Stat.Cool.

No fim vou ter que reiniciar os hosts das máquinas virtuais com os comandos que usei das últimas vezes. Estes comandos são necessários para recompilar o VirtualBox para a nova versão do Kernel do Linux.

cd /root
bat/vboxes stop
cd /usr/local/
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
reboot
exit
cd /usr/local/
chmod +x ./VirtualBox-5.0.18-106667-Linux_amd64.run
./VirtualBox-5.0.18-106667-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.18-106667.vbox-extpack
cd -
bat/vboxes start

O ficheiro bat/vboxes é um ficheiro de comandos que criei para gerir as máquinas virtuais do VirtualBox.

Entretanto, se alguma das máquinas falhar, posso recuperá-la da mesma forma que já aqui foi documentada antes.

Reiniciar a máquina virtual, ligando ao leitor de CD um ISO com a última versão do sistema operativo. Depois de arrancar e escolher o layout do teclado, executar os comandos seguintes.

mount /dev/sda2 /mnt
mount -t proc proc /mnt/proc (this was the magic step)
chroot /mnt
cd /boot
mkinitrd -c -k 4.4.7 -m ext3
# No ficheiro /etc/lilo.conf colocar a linha
initrd = /boot/initrd.gz
# no fim do ficheiro, logo após a linha
root = /dev/sda2
# depois, executar os comandos:
lilo
reboot

Slackware 14.2 RC2

Eis a mensagem do Patrick, no dia 15 de abril:

Fri Apr 15 20:37:37 UTC 2016
Finally got some fixes we were waiting for in this new kernel.
It’s been almost a month since 14.2rc1 so we’ll call this Slackware 14.2 release candidate 2. Almost there. Get in any last-minute bug reports quickly. 🙂

Esta mensagem diz respeito ao lançamento do kernel 4.4.7 do Linux e à resolução de alguns bugs que estavam por eliminar.

Portanto, em breve devemos ter o Slackware 14.2

Kernel 4.4.6

Estou a atualizar as máquinas para o kernel 4.4.6.

Não esquecer que a nova configuração do SSHD não permite o acesso de clientes à conta “root”. Para permitir, é necessário, antes do último reboot, colocar a linha seguinte no ficheiro /etc/ssh/sshd_config: PermitRootLogin yes
Ou então apagar o ficheiro /etc/ssh/sshd_config.new antes de fazer o upgrade.
Ou, sempre que o SSHD é atualizado, não fazer o overwrite desse ficheiro.

Aparentemente, quando executo o último comando para a atualização do Slackware-current (slackpkg clean-system), o Slackware desinstala o Java – tanto o jre, como o jdk – instalados a partir dos pacotes que eu criei. Nalgumas máquinas isso pode ser um problema, como no Stat.Cool.

No fim vou ter que reiniciar os hosts das máquinas virtuais com os comandos que usei das últimas vezes. Estes comandos são necessários para recompilar o VirtualBox para a nova versão do Kernel do Linux.

cd /root
bat/vboxes stop
cd /usr/local/
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
reboot
exit
cd /usr/local/
chmod +x ./VirtualBox-5.0.16-105871-Linux_amd64.run
./VirtualBox-5.0.16-105871-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.16-105871.vbox-extpack
cd -
bat/vboxes start

O ficheiro bat/vboxes é um ficheiro de comandos que criei para gerir as máquinas virtuais do VirtualBox.

Entretanto, se alguma das máquinas falhar, posso recuperá-la da mesma forma que já aqui foi documentada antes.

Reiniciar a máquina virtual, ligando ao leitor de CD um ISO com a última versão do sistema operativo. Depois de arrancar e escolher o layout do teclado, executar os comandos seguintes.

mount /dev/sda2 /mnt
mount -t proc proc /mnt/proc (this was the magic step)
chroot /mnt
cd /boot
mkinitrd -c -k 4.4.6 -m ext3
# No ficheiro /etc/lilo.conf colocar a linha
initrd = /boot/initrd.gz
# no fim do ficheiro, logo após a linha
root = /dev/sda2
# depois, executar os comandos:
lilo
reboot

Kernel 4.4.5

Estou a atualizar as máquinas para o kernel 4.4.5.

Não esquecer que a nova configuração do SSHD não permite o acesso de clientes à conta “root”. Para permitir, é necessário, antes do último reboot, colocar a linha seguinte no ficheiro /etc/ssh/sshd_config: PermitRootLogin yes
Ou então apagar o ficheiro /etc/ssh/sshd_config.new antes de fazer o upgrade.
Ou, sempre que o SSHD é atualizado, não fazer o overwrite desse ficheiro.

Aparentemente, quando executo o último comando para a atualização do Slackware-current (slackpkg clean-system), o Slackware desinstala o Java – tanto o jre, como o jdk – instalados a partir dos pacotes que eu criei. Nalgumas máquinas isso pode ser um problema, como no Stat.Cool.

No fim vou ter que reiniciar os hosts das máquinas virtuais com os comandos que usei das últimas vezes. Estes comandos são necessários para recompilar o VirtualBox para a nova versão do Kernel do Linux.

cd /root
bat/vboxes stop
cd /usr/local/
VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
reboot
exit
cd /usr/local/
chmod +x ./VirtualBox-5.0.16-105871-Linux_amd64.run
./VirtualBox-5.0.16-105871-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.16-105871.vbox-extpack
cd -
bat/vboxes start

O ficheiro bat/vboxes é um ficheiro de comandos que criei para gerir as máquinas virtuais do VirtualBox.

Entretanto, se alguma das máquinas falhar, posso recuperá-la da mesma forma que já aqui foi documentada antes.

Reiniciar a máquina virtual, ligando ao leitor de CD um ISO com a última versão do sistema operativo. Depois de arrancar e escolher o layout do teclado, executar os comandos seguintes.

mount /dev/sda2 /mnt
mount -t proc proc /mnt/proc (this was the magic step)
chroot /mnt
cd /boot
mkinitrd -c -k 4.4.0 -m ext3
# No ficheiro /etc/lilo.conf colocar a linha
initrd = /boot/initrd.gz
# no fim do ficheiro, logo após a linha
root = /dev/sda2
# depois, executar os comandos:
lilo
reboot

Slackware 14.2 beta 2

Welcome to Slackware 14.2 beta 2. Getting closer. 🙂

Foi a mensagem do Pat no dia 3 de Fevereiro. Entretanto, no dia 8 já houve atualizações e correções.
Esta é a versão do Slackware que está a demorar mais tempo a sair. A versão 14.1 tem a data de lançamento de 2013-11-07. Já passaram 2 anos e 3 meses.

Instalem e testem, ou então, esperem mais uns dias antes de instalar em máquinas de produção.

Bom trabalho!

HTML5 e UTF8

A partir do php-5.6.8, que ficou disponível no Slackware a 21 de abril de 2015, os ficheiros de configuração deixaram de estar em /etc/httpd/ e mudaram para as diretorias /etc, /etc/php.d, e /etc/php-fpm.d.

Em particular, o php.ini passou para /etc/php.ini. Por causa disso, o PHP deixou de ler as configurações que estavam no ficheiro antigo, nomeadamente as configurações da timezone. Na altura pensei que o PHP não confiava nas definições de TIMEZONE do sistema (apesar de poderem estar bem configuradas no php.ini) e obrigava a que todos os programas que faziam uso de funções de data/hora definissem previamente a zona de tempo:

date_default_timezone_set("Europe/Lisbon");

Mas provavelmente basta editar o novo php.ini e adicionar a timezone:

[Date]
date.timezone = “Europe/Lisbon”

Por outro lado, foi necessário converter todos os ficheiros HTML e PHP, de ISO-8859-1 para UTF-8. Em alguns projetos antigos, tenho mais que 300 ficheiros e é impraticável alterá-los todos manualmente. Felizmente, em Linux é possível fazer essas conversões de uma só vez:

find . -name "*.php" -exec sh -c "iconv -f ISO-8859-1 -t UTF-8 {} > {}.utf8"  \; -exec mv "{}".utf8 "{}" \;

find . -name "*.html" -exec sh -c "iconv -f ISO-8859-1 -t UTF-8 {} > {}.utf8"  \; -exec mv "{}".utf8 "{}" \;

O maior ficheiro do disco

Eis dois comandos de Linux em consola para descobrir quais os dez maiores ficheiros e as dez maiores diretorias. (sacados do site superuser)

# To find the largest 10 files (linux/bash):
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

# To find the largest 10 directories:
find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

# Only difference is -type {d:f}

A minha intenção é aprender um pouco mais sobre comandos do bash e depois explicar melhor estas instruções; mas, por agora, ficam aqui as instruções, pela utilidade imediata.

Limpar o BOM

Fica aqui a solução que uso mais comummente, para não andar sempre à procura dela pelos históricos das máquinas. Serve para limpar o BOM dos ficheiro UTF-8 criados pelo Notepad do Windows e que são um lixo que só atrapalha as aplicações Web.

find . -depth -name "*.php" -exec sed -i 's///g' {} \;