quinta-feira, 11 de julho de 2013

FERRAMENTAS PARA O GERENCIAMENTO DE PACOTES E SERVIÇOS – PARTE 02

DPKG – UMA OPÇÃO AO APT-GET

Muitas vezes, para instalarmos programas, recorremos diretamente aos sites dos desenvolvedores e baixamos as instalações para Linux manualmente, antes mesmo de elas estarem disponíveis nos repositórios das versões. Nesse caso é comum encontramos arquivos com a extensão .deb, que são pacotes para as distribuições derivados do Debian.

Para a instalação de um único arquivo .deb, procedemos da seguinte forma:

# dpkg -i <<nome do pacote>>

Para a instalação do pacote chamado atividades, por exemplo, usaríamos:

# dpkg -i atividades.deb

Muitas vezes, durante a instalação de pacotes .deb diretamente, as dependências não são resolvidas, e embora os pacotes complementares estejam disponíveis, não são instalados. Para resolver esse problema é necessário, após a instalação executar o comando:

# apt-get -f install

Dessa forma o apt-get irá verificar a instalação feita e corrigir problemas de dependência que possam ter ocorrido durante a instalação. Em alguns casos, podem haver dependência por pacotes relacionados, que geralmente são encontrados no próprio site do desenvolvedor, não estando disponíveis no repositório da distribuição.

Por exemplo, vamos supor que para instalar o pacote atividades.deb, também seja necessário a instalação do pacote escola.deb. Nesse caso, necessitaríamos de instalar os dois pacotes para depois utilizarmos o apt-get -f install para resolver as dependências externas.

Há casos onde o apt-get -f install não consegue resolver as dependências externas. Nessas situações, sem os pacotes necessários para o funcionamento do aplicativo, há como saída utilizar o comando abaixo para remover os pacotes com problemas.

# apt-get -f remove

Para situações onde a instalação foi abortada na metade, por um desligamento não programado, o processo para concluir a instalação seria utilizar:

# dpkg --configure -a

Mas se você quiser concluir uma instalação que apresenta erros de dependência (o que não é aconselhável), poderá utilizar:

# dpkg -i --force-all <<pacote.deb>>

Essa operação não garante que o aplicativo irá funcionar, uma vez que suas dependências não foram satisfeitas, podendo causar os diversos problemas.

FONTES:

MORIMOTO, Carlos E. Servidores Linux: Guia Prático. Porto Alegre: Sul Editores, 2011.

terça-feira, 9 de julho de 2013

FERRAMENTAS PARA O GERENCIAMENTO DE PACOTES E SERVIÇOS – PARTE 01

A instalação de programas e serviços em distribuições Linux, embora pareça um processo complicado, torna-se trivial com a utilização de ferramentas que auxiliam nesse processo, resolvendo problemas de dependências e inconsistências durante a instalação. Mas para que esse processo seja concluído com êxito, é necessário o conhecimento das ferramentas de gerenciamento de pacotes utilizadas em cada distribuição.


CONCEITO SOBRE PACOTES E DEPENDÊNCIAS
Pacotes são conjuntos de arquivos que tem por objetivo a instalação de softwares ou serviços no mundo Linux. Ao instalar um determinado software, diversos arquivos podem ser necessários para seu funcionamento, e para isso, vários arquivos são necessários, o que é conhecido como dependência de pacotes.
Ao instalar um software suas dependências também precisam ser instaladas, para garantir que os recursos presentes no software possam funcionar corretamente. Essas dependências estão disponíveis nos chamados Repositórios, que são os locais onde são armazenados os arquivos necessários para manutenção de determinada distribuição. Poderíamos comparar as dependências com as dlls presentes no mundo Windows, que são os arquivos que contêm as bibliotecas necessárias para o funcionamento dos programas.


UTILIZANDO O APT-GET
O apt-get é o gerenciador de pacotes das distribuições derivadas no Debian como Ubuntu, Kubuntu, dentre outros. A principal função do apt-get é baixar pacotes dos repositórios oficiais das distribuições de forma a manter o sistema sempre atualizado.
Abaixo seguem alguns comandos utilizados via apt-get e um comentário sobre seu funcionamento:
Obs: Comandos precedidos pelo símbolo # podem ser executados sem privilégios de root. Já os comandos precedidos de $ necessitam que se execute como administrador.

# apt-get update

Atualiza os pacotes que puderem ser atualizados. É recomendado que se execute esse comando ao final de uma instalação, para garantir que os pacotes estejam atualizados

# apt-get install

Comando utilizado para a instalação de um programa. A sintaxe é apt-get install <<nome do pacote>>
Automaticamente serão instaladas também todas as dependências necessárias para o funcionamento do aplicativo.

No exemplo acima observamos que para a instalação do apache2 serão necessários outros pacotes (dependências) que são automaticamente selecionados para instalação. No caso temos apache2-mpm-worker apache2-utils apache2.2-common. Além disso, são sugeridos outros pacotes que podem oferecer funcionalidades extras. No exemplo temos apache2-doc apache2-suexec apache2-suexec-custom.



ATUALIZANDO UM PACOTE JÁ INSTALADO
Para atualizar um pacote já instalado, é necessário atualizar o banco de dados do apt-get, e depois proceder como se fosse instalar o pacote novamente.

#apt-get update
#apt-get install apache 2


ATUALIZANDO TODOS OS PACOTES DO SISTEMA
Se você deseja fazer uma atualização em todos os pacotes do sistema de uma só vez, utilize a opção upgrade. Essa opção instala, se disponível, uma versão mais nova de todos os pacotes já instalados. Pacotes com versões mais novas mas que possam exigir modificações de outros pacotes, não serão atualizados.

#apt-get update
#apt-get upgrade

Dependendo do quão atualizado está sua distribuição, pode ser necessário o download de uma grande quantidade de dados.
 Pode-se deixar também que o próprio apt-get cuide de todas as dependências para você, de forma a ter uma atualização menos propensa a erros.
A opção dist-upgrade já consegue atualizar pacotes que necessitem que dependências também sejam atualizadas, através de um sistema de resolução de conflitos, que buscará atualizar os pacotes mais importantes em detrimento dos menos importantes, o que poderá implicar na remoção de determinados pacotes menos utilizados.

#apt-get update
#apt-get dist-upgrade

Exemplo de uma atualização utilizando o apt-get upgrade e o apt-get dist-upgrade para um mesmo computador. Note a quantidade maior de arquivos disponíveis para atualização quando se utiliza o apt-get dist-upgrade

Atualização utilizando o apt-get upgrade

Atualização utilizando o apt-get dist-upgrade



REMOVER UM DETERMINADO PACOTE
A remoção de pacotes também pode ser feita utilizando-se o apt-get, seguido da opção remove e do nome do pacote.
Um exemplo para a remoção do pacote apache2 seria:

#apt-get remove apache2


Durante a remoção, o apt-get também pode se encarregar de remover pacotes que não serão necessários. Para isso há uma variante do remove, que também elimina os pacotes de dependências instalados e que não serão mais necessários.

#apt-get autoremove apache2


Enquanto o parâmetro remove somente se preocupa em remover o pacote, a opção autoremove desinstala também as suas dependências.



FORÇAR A REINSTALAÇÃO DE UM PACOTE
Há casos onde por motivos diversos se apaga algum arquivo de configuração, ou mesmo quando há falhas no HD que danifiquem arquivos importantes.
Para essas situação podemos forçar uma reinstalação de determinado pacote usando o parâmetro --reinstall.

#apt-get install --reinstall apache2


FONTES:
MORIMOTO, Carlos E. Servidores Linux: Guia Prático. Porto Alegre: Sul Editores, 2011.

segunda-feira, 8 de julho de 2013

DESABILITANDO OU RECONFIGURANDO O FSCK NO LINUX EDUCACIONAL

Quando por alguma razão o disco ainda continua apresentando erros, pedindo para fazer uma checagem a cada boot, ainda podemos optar por uma solução mais radical, mas não recomendada: desabilitar o utilitário fsck.
A ativação do fsck na inicialização do sistema garante que tudo estará em ordem quando o usuário se logar. Mas, dependendo da quantidade de arquivos presentes, esse processo pode durar alguns minutos, ou mesmo horas, o que pode tornar um simples reboot em uma longa espera até que o sistema se restabeleça (ou não).
Para a desativação do fsck existem basicamente 3 métodos:
  1. Edição do arquivo fstab
  2. Alteração dos parâmetros do sistema de arquivos através do tune2fs
  3. Instruir o sistema a não executar o fsck quando for reiniciar

 Vamos ver o conceito por traz de cada um deles.



1 - EDIÇÃO DO ARQUIVO FSTAB


FSTAB (File System Table) é um arquivo de texto localizado dentro do diretório etc, e que é lido a cada inicialização do sistema, informando o que montar, onde montar e os parâmetros necessários à montagem.
A montagem nada mais é do que o mapeamento de um dispositivo ou partição para que o usuário possa fazer uso de seus arquivos de forma transparente. Discos rígidos, pendrivers, CDs / DVDs, entre outros necessitam de montagem para serem utilizados.
 Para a edição do arquivo fstab, é necessário ter privilégios de root. Para isso entre no prompt e informe a senha do administrador (qwe123 ou professor)
Digite nano /etc/fstab para abrir o arquivo. Um exemplo desse arquivo é exibido abaixo:

No arquivo fstab, a última coluna indica a ordem que será feita a checagem da integridade dos dados no disco, ou seja, partições que apontam para a raiz do sistema (geralmente /) tem valor 1, e outras partições e sistemas de arquivos tem valor 2. Caso queira desabilitar a checagem para determinado sistema de arquivos ou partição, é só trocar o valor da última coluna para 0 (zero)
No exemplo acima, caso desejássemos desabilitar a checagem no ponto de montagem da partição raíz (/), montada na primeira partição do primeiro disco Sata (/dev/sda1), necessitaríamos trocar o valor da última coluna de 1 para 0. Da mesma forma procederíamos com as outras partições.
Para salvar as alterações no arquivo, pressionar CTRL + X ,e para confirmar as alterações, digitar S.
Para consultar a partição que foi modificada, utilize o comando grep /dev/sda1 /etc/fstab e analise se a última coluna possui o valor 0, conforme a imagem abaixo:

Observe que o valor da última coluna foi alterado para 0 (zero), informando que essa partição ou dispositivo não deverá ser verificada pelo utilitário fsck.



2 - ALTERAÇÃO DOS PARÂMETROS DO SISTEMA DE ARQUIVOS ATRAVÉS DO TUNE2FS
O utilitário tune2fs permite que façamos uma alteração nos parâmetros que controlam a execução do fsck.
Para ter acesso a essas informações digite no prompt:
tune2fs /dev/sda1 –l | egrep –i ‘mount count|check’
O retorno do comando deve ser algo parecido com a figura abaixo:

Para desabilitar a checagem programada, execute o comando abaixo, considerando que se deseja alterar os parâmetros da partição presente em /dev/sda2.
tune2fs –c 0 –i 0 /dev/sda2

Faça uma nova verificação do agendamento executando o comando:
tune2fs /dev/sda1 –l | egrep –i ‘mount count|check’

Observe que os parâmetros Maximum mount count (número máximo de montagens) antes de executar o fsck está desabilitado (valor -1), e o Check interval (intervalo entre checagens) está 0.
Caso deseje somente alterar os parâmetros de tempo e número de montagens para que o fsck seja ativado automaticamente, execute o comando abaixo:
tune2fs –c <<número de montagens até checagem>> –i <<tempo entre montagens (em dias)>> /dev/sda2

No exemplo, os parâmetros foram alterados número de montagens foi alterado para 150 e intervalo entre verificações foi alterado para 1 ano (360 dias)
O resultado é verificado abaixo:



3 - DESABILITAR O FSCK NA PRÓXIMA INICIALIZAÇÃO DO SISTEMA
Esse outro procedimento, ao contrário dos outros dois anteriormente comentados, somente tem efeito na próxima reinicialização do sistema, não sendo uma solução definitiva em casos mais graves.
Para desabilitar a checagem do fsck na próxima inicialização, entre no prompt e digite os comandos abaixo:
sbin/shutdown –rf now

A instrução acima informa ao sistema para ignorar a checagem do fsck (parâmetro –f) em todos os sistemas de arquivos, durante a próxima inicialização.

Embora tenhamos saídas para alterar os parâmetros e utilização do utilitário fsck, para garantir uma integridade dos dados sempre devemos fazer uma análise das estruturas do disco, tarefa essa desempenhada por esse aplicativo. Ignorar esses procedimentos pode trazer ainda mais dor de cabeça uma vez que pode trazer a falsa segurança de que os dados estão seguros e íntegros, quando na verdade podem não estar.

Fontes:

quinta-feira, 4 de julho de 2013

Resolvendo problemas de disco com o FSCK

No Linux Educacional 3.0 é comum desligarmos o computador e quando iniciamos novamente o sistema nos deparamos com uma mensagem na inicialização informando problemas no disco, e pedindo para que façamos uma checagem no disco manualmente.
Isso ocorre muitas vezes pelo desligamento inapropriado do computador (falhas de energia ou desligamento forçado do sistema), o que pode corromper arquivos do sistema de arquivos, ou até mesmo levar a erros físicos no disco. Muitas vezes essa checagem também está relacionada a rotinas de verificação do próprio Linux com relação ao sistema de arquivos. Caso em uma dessas checagens apareça um erro que não pode ser consertado automaticamente, o sistema solicita a intervenção do usuário.
Assim, durante a próxima inicialização, o usuário será apresentado a uma tela preta pedindo que digite manualmente o comando de correção, uma vez que a correção automática não obteve êxito.
Exemplo de tela com o famigerado problema



Utilizando o FSCK
O FSCK é um utilitário Linux que, assim como o scandisk do Windows, repara erros relacionados a blocos defeituosos, arquivos órfãos ou danos causados pelo desligamento inapropriado.
Para sua utilização é necessário que a partição esteja DESMONTADA, para garantir a integridade e segurança dos dados presentes no disco. Para isso, na tela preta apresentada na inicialização, insira a senha de root (qwe123) para ter acesso com privilégios administrativos do sistema e poder executar o procedimento.


MÉTODO 1
O método engloba a execução do fsck em uma partição ou disco manualmente. Para sua execução siga os passos abaixo:
  1. Digite a senha do root (qwe123 ou professor, dependendo do pregão)
  2. Execute o comando fdisk –l para listar as partições ativas. No Linux Educacional 3.0, você deverá ter uma resposta semelhante a da figura abaixo:
  3. As 3 linhas exibidas informam os dispositivos de armazenamento presentes no computador. Nesse exemplo podemos verificar que temos um dispositivo de armazenamento (sda, representando um HD Sata) , que possui 3 partições ativas (sda1, sda2 e sda3).
  4. A partição de boot do exemplo acima (que apresenta um * na frente, no caso sda2) é aquela que abriga os arquivos do sistema. A sda3 é a partição com os arquivos do usuário. (pasta home)
  5. Para desmontar a partição a ser analisada, execute o comando umont /dev/sda2, por exemplo, para desmontar a partição do sistema ou umout /dev/sda3 para a partição com os arquivos do usuário.
  6. Feito isso, execute o comando fsck –f –y /dev/sda<<partição>>. O parâmetro –f é para forçar uma análise e o –y para fazer a correção automática sem a intervenção do usuário. No caso poderia ser fsck –f –y /dev/sda2 para reparar os arquivos do sistema, ou fsck –f –y /dev/sda3 para os arquivos do usuário. Esse processo pode demorar, dependendo do tamanho e quantidade de arquivos presentes no disco.
  7. A análise irá verificar e corrigir possíveis problemas com inodes (que são as estruturas responsáveis por conter as informações básicas sobre os arquivos e pastas como permissão de acesso, dono do arquivo, data do último acesso, alterações e o ponteiro para os arquivos).
  8. É necessário reiniciar o computador para verificar se os problemas foram corrigidos. Após terminada a análise com o fsck, digite shutdown –r now para reiniciar o sistema.


MÉTODO 2
No caso do procedimento acima não funcionar, ou seja, continuar apresentando a mensagem Type Control-D to continue, siga os passos a seguir:
Digite a senha do root (qwe123 ou professor + ENTER)
Siga os comandos abaixo, sempre digitando um ENTER no final de cada linha
cd /var/log
rm –rf kern.log
rm –rf syslog
rm –rf *.gz
rm –rf *.0
rm –rf *.1
echo > message
echo > syslog
echo > wtmp