sexta-feira, 29 de junho de 2012

Problema de Lógica: Razão entre netos e netas

Um avô deu R$ 2 para cada um de seus netos e netas. Após uma brincadeira, onde apostaram entre si o dinheiro ganho, cada neta terminou com R$ 5 e cada neto ficou com R$ 1. Qual a razão entre o número de netos e netas do avô?





RESPOSTA





Considerando que o número de netos = m e o número de netas = f. A equação da distribuição do dinheiro antes e após a brincadeira é:

2m + 2f = m + 5f

Simplificando a equação:

2m - m = 5f - 2f
m = 3f
m/f = 3

Portanto, a razão entre o número de netos e netas é 3.

RPM Package Manager e Yellow dog Updater Modified

O "RPM Package Manager" é um sistema de gerenciamento de pacotes para distribuições Linux desenvolvido originalmente pela Red Hat. Um sistema de gerenciamento de pacotes tem o propósito de automatizar o processo de instalação, atualização e remoção de softwares em um sistema operacional.

Um pacote serve para distribuir um software, que pode estar compilado ou não, mas um software pode ser distribuído em mais de um pacote, ou seja, não necessariamente em um único pacote. Os softwares fornecidos para o Fedora, CentOS, RHEL e descendentes são empacotados pelo RPM Package Manager e utilizam a extensão .rpm.

O arquivo de um pacote RPM possui o seguinte formato para seu nome:

<nome>-<versão>-<lançamento>.<arquitetura>.rpm

Um software sempre é compilado para determinada arquitetura, por exemplo i386, i686, x86_64 etc. Sua extensão indica para qual arquitetura ele é compatível. Por exemplo "firefox-3.6.13-1.fc13.x86_64.rpm". O código fonte de um software também pode ser distribuído em pacote RPM, sua arquitetura recebe o nome src, como "firefox-3.6.13-1.fc13.src.rpm".

Os pacotes RPM que possuem a extensão noarch.rpm referem-se a pacotes que não dependem de determinada arquitetura de computador, ou seja, podem ser instalados em qualquer uma. Por exemplo, são os pacotes com arquivos de imagens, audio etc., ou softwares que serão interpretados, scripts etc.

O pacote RPM traz, em um único arquivo, o software compactado e um rótulo com diversas informações, que incluem nome, versão e descrição. O conteúdo a seguir é o retorno do comando "rpm -qpi <pacote>":

Name        : firefox                            Relocations: (not relocatable)
Version     : 3.6.13                             Vendor: Fedora Project
Release     : 1.fc13                             Build Date: Qui 09 Dez 2010 13:04:06 BRST
Install Date: Sex 10 Dez 2010 23:42:53 BRST      Build Host: x86-17.phx2.fedoraproject.org
Group       : Applications/Internet              Source RPM: firefox-3.6.13-1.fc13.src.rpm
Size        : 18060708                           License: MPLv1.1 or GPLv2+ or LGPLv2+
Signature   : RSA/SHA256, Qui 09 Dez 2010 20:53:23 BRST, Key ID 7edc6ad6e8e40fde
Packager    : Fedora Project
URL         : http://www.mozilla.org/projects/firefox/
Summary     : Mozilla Firefox Web browser
Description :
Mozilla Firefox is an open-source web browser, designed for standards
compliance, performance and portability.



Para que um pacote possa ser instalado, o sistema deve conter os pré-requisitos para o pacote. São as dependências do pacote. Uma dependência proporciona um modo de um pacote requerer outros pacotes, instalados previamente ou simultaneamente, para ser possível sua instalação. Quando tenta-se instalar um pacote e os pré-requisitos para ele estão incompletos, o gerenciador de pacotes retorna uma mensagem e não instala o pacote.

O Fedora, o CentOS e o RHEL utilizam essencialmente duas ferramentas para gerenciar os pacotes em linha de comando, o RPM Package Manager e o YUM (Yellow dog Updater, Modified), este desenvolvido por terceiros e compatível com o sistema de gerenciamento RPM.

O RPM é uma ferramenta simples e direta, para instalar, atualizar ou remover pacotes e realizar pesquisas na base de pacotes instalados. O YUM é uma ferramenta automática, também para instalar, atualizar ou remover pacotes, porém, capaz de localizar as dependências e instalá-las quando necessário. Com o YUM é possível consultar os repositórios de softwares para procurar por determinado pacote ou até atualizar todo o sistema.

Com as ferramentas RPM e YUM podemos realizar diversas operações com os pacotes. No artigo "Guia de referência cruzada dos gerenciadores de pacotes" (http://dan-scientia.blogspot.com.br/2009/10/guia-de-referencia-cruzada-dos.html) publiquei uma tabela comparativa dos comandos entre os principais gerenciadores de pacotes, as principais operações estão listadas lá, juntamente com os comandos.

O sistema de gerenciamento de pacotes RPM mantém no sistema operacional um banco de dados dos pacotes. Este banco, local, guarda informações sobre todos os pacotes instalados no sistema. O banco de dados RPM fica armazenado no diretório "/var/lib/rpm/" e pode conter arquivos, como a listagem a seguir:

Basenames           Packages
Conflictname        Providename
__db.001            Provideversion
__db.002            Pubkeys
__db.003            Requirename
Dirnames            Requireversion
Filemd5s            Sha1header
Group               Sigmd5
Installtid          Triggername
Name

A ferramenta YUM também utiliza o banco de dados RPM, entretanto, o YUM é capaz de consultar repositórios mantidos em servidores acessados pela Internet. Através desta consulta o YUM consegue localizar os pacotes que serão instalados no sistema local, não só o pacote principal mas também suas dependências.

As configurações para acesso à repositórios ficam no arquivo "/etc/yum.conf" ou em arquivos separados, no diretório "/etc/yum.repos.d/". Uma parte do conteúdo do arquivo "/etc/yum.repos.d/fedora-updates.repo" é exibida a seguir:

[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch


Instalação, atualização ou remoção de um software no sistema Linux é extremamente simples, desde que o software esteja devidamente empacotado. Estas ferramentas são muito eficazes. Existem interfaces gráficas para estas ferramentas, facilitando ainda mais. O sistema de gerenciamento de pacotes é, talvez, uma das características que torna o Linux superior aos outros sistemas operacionais.

quarta-feira, 27 de junho de 2012

Relançamento de edições especiais da Scientific American Brasil

A revista Scientific American Brasil está relançando algumas de suas edições especiais relacionadas a cosmologia. Uma coleção reformulada na Edição Especial Física e a coleção Gênios da Ciência, todas em edição revista e atualizada. As edições abaixo já foram lançadas:


Edição Especial Física (1)
Mistérios Profundos do Tempo
Edição especial nº 46


Edição Especial Física (2)
Enigmas do Começo e do Fim do Tempo
Edição especial nº 47


Gênios da Ciência 1
Einstein, O Homem Além do Mito


Gênios da Ciência 2
Stephen Hawking, O Triunfo da Mente

A Scientific American Brasil é uma publicação da Ediouro Duetto Editorial Ltda. Veja mais em "Edições imperdíveis da Scientific American Brasil" (http://dan-scientia.blogspot.com.br/2010/11/edicoes-imperdiveis-da-scientific.html) e "Mais edições imperdíveis da Scientific American Brasil" (http://dan-scientia.blogspot.com.br/2011/09/mais-edicoes-imperdiveis-da-scientific.html)

segunda-feira, 25 de junho de 2012

Prioridades entre os repositórios no Yum

Nas distribuições Linux que usam o gerenciador de pacotes Yum, isto inclui o Fedora e o CentOS, existe um plugin para o Yum que permite ordenar em prioridade os repositórios de pacotes. Esta extensão para o Yum faz com que um pacote de repositório com baixa prioridade não substitua o pacote instalado de um repositório com alta prioridade, mesmo que seja de uma versão maior.

No CentOS este plugin passa a ser bem interessante, porque nesta distribuição são necessários muitos repositórios de terceiros para complementar a oferta de softwares e é comum o conflito de pacotes entre eles. Como a distro Fedora está bem servida com o repositório RPM Fusion, não é tão necessário mais repositórios, reduzindo o risco de conflitos. O pacote yum-plugin-priorities é fornecido pelos repositórios oficiais destas duas distros.

Para instalar o pacote deste plugin, execute o comando:

# yum install yum-plugin-priorities

A configuração do plugin se dá pelo arquivo "/etc/yum/pluginconf.d/priorities.conf", basicamente com a edição da linha "enabled = 1", onde o valor 1 habilita a ação do plugin. Em seguida é preciso editar cada arquivo .repo, localizados em "/etc/yum.repos.d/", incluindo a seguinte linha em cada seção:

priority=N

No lugar de N coloca-se um valor entre 1 (maior prioridade) a 99 (menor prioridade). Usualmente classifica-se os repositórios oficiais com prioridade maior e os repositórios de terceiros com prioridade menor. O importante é não dar a mesma prioridade para repositórios que onde ocorram conflito de pacotes, principalmente entre os repositórios de terceiros. Escolha um para prevalecer, faça uma distribuição dos valores.

Um exemplo de um trecho do arquivo "/etc/yum.repos.d/CentOS-Base.repo", editado com as linhas "priority=N":

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1

[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1

Este controle de prioridades é importante pois o Yum sempre atualiza o pacote por uma versão maior, independente de qual repositório está vindo este novo pacote. E um pacote fornecido por terceiro pode não estar plenamente compatível com os demais pacotes instalados. Por isso a prioridade deve ser dos pacotes oficiais e de repositórios não conflitantes.

quarta-feira, 20 de junho de 2012

A linha de comando do VirtualBox

O VirtualBox possui, além da sua interface gráfica, a opção de interface pela linha de comando para configuração e manutenção das máquinas virtuais. A ferramenta VBoxManage é capaz de criar, modificar e executar as VMs. Faz tudo que a interface gráfica faz e mais um pouco, pois existem comandos não possíveis de realizar graficamente. Por exemplo, a interface gráfica não possui o recurso para compactar o HD virtual.

Aqui não irei demonstrar cada um dos comandos, apenas ilustrar a interface de gerenciamento em linha de comando do VirtualBox.

Com uma sequência de comandos podemos criar uma máquina virtual, por exemplo:

$ VBoxManage createvm --name "CentOS 6.2" --register
$ VBoxManage modifyvm "CentOS 6.2" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0
$ VBoxManage createhd --filename CentOS_6.2.vdi --size 40000
$ VBoxManage storagectl "CentOS 6.2" --name "IDE Controller" --add ide
$ VBoxManage storageattach "CentOS 6.2" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium CentOS_6.2.vdi
$ VBoxManage storageattach "CentOS 6.2" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/CentOS-6.2-i386-bin-DVD1.iso

Todas as VMs criadas e registradas no VirtualBox são listadas com a execução do comando "list vms":

$ VBoxManage list vms

Caso queira executar uma VM, usa-se o comando startvm, seguido pelo nome da VM ou pelo UUID:

$ VBoxManage startvm "CentOS 6.2"

Pelo comando acima, a VM é aberta naturalmente em uma janela, que exibe o conteúdo do sistema virtualizado. Uma opção interessante é a "headless", pois inicia a VM em segundo plano sem abrir a janela da interface gráfica, além de ativar o protocolo de desktop remoto, o que possibilita visualizar a saída gráfica da VM remotamente por outra máquina. A linha de comando torna-se:

$ VBoxManage startvm "CentOS 6.2" --type headless

Desviando do assunto, o desktop remoto pode ser aberto por qualquer cliente RDP. A porta padrão é a 3389, porém se existirem mais de uma máquina virtual, cada uma deverá estar configurada para uma porta diferente. O endereço IP é o endereço do host, pois é onde o VirtualBox está sendo executado. Exemplo com o rdesktop do Linux:

$ rdesktop 192.168.1.10:3389

Todas as máquinas virtuais que estão rodando são listadas com a execução do comando "list runningvms":

$ VBoxManage list runningvms

Para desligar a máquina virtual de fora dela, ou seja, sem executar um comando interno no sistema convidado, existem alguns comandos que simulam o hardware de um computador. As funções dos botões "Power" e "Reset" até o suporte da ACPI, são simulados com, por exemplo:

$ VBoxManage controlvm "CentOS 6.2" acpipowerbutton

$ VBoxManage controlvm "CentOS 6.2" reset

$ VBoxManage controlvm "CentOS 6.2" poweroff

Sempre é possível identificar a máquina pelo nome da VM ou pelo UUID da VM. Caso o nome ou qualquer outra identificação tenha espaços, é necessário protegê-lo do interpretador de comandos. As aspas e os apóstrofos servem para isto.

$ su vboxuser -c '/usr/bin/VBoxManage startvm "CentOS 6.2" --type headless'

Desviando do assunto mais uma vez, para executar um comando interno no sistema convidado, por exemplo um comando para desligamento, estando fora da máquina virtual, podemos usar a ferramenta ssh, em algo como:

$ sshpass -p senha ssh root@192.168.1.15 "shutdown -h now"

A ferramenta VBoxManage possui dezenas e mais dezenas de comandos e opções, tornando esta interface textual bastante rica em recursos. Uma necessidade desta interface está, por exemplo, no gerenciamento de servidores remotos, quando o acesso é por um terminal remoto em modo texto. A opção "--help" exibe a lista de todos os comandos e opções existentes. É uma ajuda mas não é um manual:

$ VBoxManage --help

segunda-feira, 11 de junho de 2012

Editar o arquivo boot.ini no Windows XP

O arquivo boot.ini do Windows XP é usado pelo programa Ntldr para carregar o sistema operacional. É um arquivo de texto puro e qualquer editor de texto simples pode ser usado para editar este arquivo. É um arquivo oculto pelo sistema e está localizado na raiz do C:.

Apesar de ser possível abrí-lo diretamente com um editor ou acessá-lo pelo gerenciador de arquivos, a janela de "Inicialização e recuperação" é uma interface específica para edição do boot.ini.

A janela "Inicialização e recuperação" pode ser aberta pela janela "Propriedades do sistema" (clique com o botão direito do mouse em Meu computador e clique em Propriedades, ou, clique em Iniciar, em Executar, digite sysdm.cpl e clique em OK), na guia Avançado, clicando no botão Configurações da seção Inicialização e recuperação.

Esta janela permite a configuração rápida de alguns itens do arquivo boot.ini e também possibilita abrir o arquivo no editor de texto, com um clique no botão Editar.

É recomendável sempre fazer uma cópia de segurança do arquivo boot.ini, antes de realizar qualquer alteração. O Windows Vista e superiores não utilizam este método de boot, no lugar do boot.ini é usado o Boot Configuration Data (BCD).