PHP 7

A versão current do Slackware passou a usar o PHP7. Depois de fazer a atualização para o PHP7, passei a receber a mensagem seguinte, sempre que arrancava com o Apache:

httpd: Syntax error on line 654 of /etc/httpd/httpd.conf: Syntax error on line 6 of /etc/httpdmod_php.conf: Cannot load lib64/httpd/modules/libphp5.so into server: /usr/lib64/httpd/modules/libphp5.so: cannot open shared object file: No such file or directory

Enviei uma mensagem ao Patrick e ele respondeu o seguinte:

The new file won't copy over your old one.
Try: mv /etc/httpd/mod_php.conf.example /etc/httpd/mod_php.conf
Take care,
Pat

e acrescentou

I will add better handling of this file in the next build.
Thanks,
Pat

dovecot

O Slackware está a usar um novo servidor de IMAP/POP. À conta disto, fiquei sem email durante 3 dias. Não consegui logo configurá-lo e tive que voltar ao anterior. Desistalei o dovecot, fui buscar o pacote do Slackware 14.2, imapd-2.20-x86_64-2.txz, e instalei-o de novo. Mas continuei com alguns problemas. Neste momento não consigo enviar emails, apenas receber.

Decidi, então, tentar configurar o dovecot. Na pasta /etc/dovecot há um ficheiro README que diz que é necessário criar um certificado SSL/TLS e que há um script para criar um certificado autogerado.

O script está na pasta /usr/doc/dovecot-2.* (o * é a versão) e chama-se mkcert.sh.

Mas antes, é necessário configurar o ficheiro dovecot-openssl.cnf que está na mesma pasta. É um ficheiro com os dados para o certificado: nome e morada da empresa, endereço do sítio, etc.

O script mkcert.sh cria o certificado e coloca-o no local seguinte: /etc/ssl/private/dovecot.pem.

É, também, conveniente editar o ficheiro /etc/dovecot/conf.d/10-auth.conf e descomentar a linha:
#disable_plaintext_auth = yes

Por fim, é necessário indicar, no ficheiro /etc/dovecot/dovecot.conf, quais os protocolos a usar:
protocols = imap

Para lançar o dovecot, executar /etc/rc.d/rc.dovecot start.

Mailbox cheia

Comecei a receber umas mensagens do tipo:

Cannot Update Mailbox /var/mail/root For User Root. Error Writing Message: File Too Large

Encontrei a solução aqui.

Se executar postconf -n verifico que não está definido um limite para a caixa, o que faz assumir o limite por omissão de 51200000 bytes ou aproximadamente 50MB. Para aumentar para 500MB, usei:

postconf -e mailbox_size_limit=512000000

Kernel 4.14.2 e VirtualBox 5.2.2

Estou a atualizar as máquinas para o Kernel 4.14.2 do Linux. Vou também atualizar o VirtualBox nos dois hosts de máquinas virtuais. Eis os comandos:

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.2.2-119230-Linux_amd64.run
./VirtualBox-5.2.2-119230-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.2-119230.vbox-extpack
cd /root
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.14.2 -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

Módulos do PERL

Nas últimas atualizações do kernel do Linux, o meu sistema de alertas deixou de perceber qual o último kernel instalado.

Na máquina que faz o gateway para a DMZ, tenho um script em PERL que acede a uma BD para atualizar os números das versões dos vários pacotes de software instalados, incluindo o kernel. Nenhum deles estava a ser atualizado.

Esse script corre, normalmente, a partir do crontab, de foram automática. Corri esse script manualmente e recebi uma mensagem que dizia haver um conflito entre o PERL e um módulo. Só estava a usar o DBI, para acesso a uma BD, por isso atualizei-o da seguinte forma:

# cpan
cpan> upgrade DBI

Kernel 4.9.38 e VirtualBox 5.1.26

Estou a atualizar as máquinas para o Kernel 4.9.38 do Linux. Vou também atualizar o VirtualBox nos dois hosts de máquinas virtuais. Eis os comandos:

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.1.26-117224-Linux_amd64.run
./VirtualBox-5.1.26-117224-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.26-117224.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.9.38 -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.9.31 e manter o VirtualBox 5.1.12

Estou a atualizar as máquinas para o Kernel 4.9.31 do Linux. Eis os comandos:

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.1.12-112440-Linux_amd64.run
./VirtualBox-5.1.12-112440-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.12-112440.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.9.31 -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

lftp – Making data connection…

Uso o lftp para manter uma cópia (mirror) do Slackware. Há cerca de uma semana atrás – quando fiz a última atualização da máquina do mirror – o lftp deixou de sincronizar. Hoje percebi que havia novos ficheiros, no Changelog do Slackware, que não tinham sido copiados para a minha cópia.

Ao fazer debug no lftp, descobri que ele pendurava sempre que eu tentava ler dados no servidor ftp remoto. Por exemplo, listar uma diretoria, ou copiar um ficheiro. A mensagem que o lftp emite antes de pendurar é

[Making data connection...]

Procurei na net@ e encontrei várias curas para o problema, mas nem todas funcionaram. Aliás, a única que funcionou foi edtar o ficheiro /etc/lftp.conf e colocar lá a linha

set ftp:passive-mode off

Criar e remover utilizadores

Às vezes isto é uma dor de cabeça. Funciona uma vez, e depois nunca mais. Mas parece que agora encontrei os comandos certos. O que eu pretendo são comandos de baixo nível, em consola, para poder automatizá-los, se necessário.

Criar utilizador

useradd myuser -m -d /home/myuser -s /bin/bash -G users
passwd myuser

Remover utilizador

userdel myuser
rm -r /home/myuser
rm -r /usr/spool/mail/myuser

Kernel 4.4.38 e VirtualBox 5.1.12

Estou a atualizar as máquinas para o Kernel 4.4.38 do Linux. Vou também atualizar o VirtualBox nos dois hosts de máquinas virtuais. Eis os comandos:

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.1.12-112440-Linux_amd64.run
./VirtualBox-5.1.12-112440-Linux_amd64.run
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.12-112440.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.38 -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