Saturday, September 09, 2006

Improve performance in Ubuntu - Part I

How To Compile the Kernel in Ubuntu

1. Install needed utilities to configure the kernel
sudo apt-get install build-essential bin86 kernel-package
2. Now we are going to move the kernel and unpack it.
sudo cp linux-2.6.16.tar.bz2 /usr/src

3. Now we are going to move to /usr/src: cd /usr/src
4. Now unpack it: sudo tar -xvjf linux-2.6.16.tar.bz2

5. Rename the folder: ONLY needed for 2.6.16 kernel ! You don't need to do this.
sudo mv linux-2.6.16/ linux-2.6.16ck12

6. Now we are going to remove the link to the linux directory:
sudo rm -rf linux

7. Make a new link to the new kernel:
sudo ln -s /usr/src/linux-2.6.16ck12 linux

8. Move to the Linux directory:
cd /usr/src/linux

9. Make yourself root:
sudo -s -H

10. Apply the performance patch: Don't use if you are not patching the 2.6.16 kernel !
bzcat /home/$USER/patch-2.6.16-ck12.bz2| patch -p1

11. Now we are going to import your current kernel configuration:
uname -r

12. Now import it: Make sure to replace the kernel version in this following command from the one from uname -r.
sudo cp /boot/config-2.6.14-ck1 .config

13.Configure the kernel:
make menuconfig

et's build the kernel: Make sure that you are in /usr/src/linux with full root access. Make sure that you are. This will build a debian file that you can install.

Now, in terminal do the following:

Quote:
make-kpkg clean

make-kpkg -initrd --revision=ck12 kernel_image kernel_headers modules_image
Note: You can replace "ck12" with anything you want. Like "k7" or "686."
15. Install the .deb fine in /usr/src. In terminal do

Quote:
sudo dpkg -i

Now reboot and you will have a much faster system !

Friday, September 08, 2006

Criando pacotes Debian

O sistema de pacotes do Debian é simples e eficiênte.

Para criar um pacote .deb faça:

1. Crie um diretório com o nome do pacote
2. Crie, no novo diretório, toda a estrutura de diretórios do seu pacote
3. Crie o diretório de nome "DEBIAN" dentro do diretório debian criado
previamente. No diretório DEBIAN, estarão os arquivos com as informações
de controle do pacote.
4. Dentro do diretório DEBIAN, crie um arquivo de texto chamado control.
Este arquivo conterá as informações de controle do pacote Debian.
Basicamente, os seguintes campos descrevem as informações do arquivo
control:

Package: nome do pacote com o nome da versão;

Priority: grau de prioridade do pacote. Indica se o pacote é estritamente essencial para o funcionamento do sistema ou não;

Version: número de versão. Modifique este campo toda vez que for criado uma nova versão do programa correspondente ao pacote sendo criado;

Architecture: arquitetura de hardware para a qual o programa foi desenvolvido (por exemplo, i386 para processadores);

Mantainer: nome e e-mail do responsável pela manutenção do pacote;

Depends: listagem com os nomes de outros pacotes Debian, dos quais o pacote sendo construído depende. Caso haja mais de uma dependência, separe cada uma com uma vírgula. Pode-se ainda especificar quais versões das dependências são aplicáveis ao pacote sendo construído. Para tanto, depois do nome de uma dependência, defina entre parênteses um operador de relação (operadores possíveis: <<, <=, =, >= and >>) e o número de versão da dependência.

Description: breve descrição do pacote.

5.Depois de preencher este arquivo /DEBIAN/control e verificar se todos os arquivos estão nos lugares corretos, use o comando "dpkg-deb -b" para gerar o pacote. Basta fornecer o diretório onde estão os arquivos do pacote e o nome do arquivo que será criado

Criando pacotes Debian

O sistema de pacotes do Debian é simples e eficiênte.

Para criar um pacote .deb faça:

1. Crie um diretório com o nome do pacote
2. Crie, no novo diretório, toda a estrutura de diretórios do seu pacote
3. Crie o diretório de nome "DEBIAN" dentro do diretório debian criado
previamente. No diretório DEBIAN, estarão os arquivos com as informações
de controle do pacote.
4. Dentro do diretório DEBIAN, crie um arquivo de texto chamado control.
Este arquivo conterá as informações de controle do pacote Debian.
Basicamente, os seguintes campos descrevem as informações do arquivo
control:

Package: nome do pacote com o nome da versão;

Priority: grau de prioridade do pacote. Indica se o pacote é estritamente essencial para o funcionamento do sistema ou não;

Version: número de versão. Modifique este campo toda vez que for criado uma nova versão do programa correspondente ao pacote sendo criado;

Architecture: arquitetura de hardware para a qual o programa foi desenvolvido (por exemplo, i386 para processadores);

Mantainer: nome e e-mail do responsável pela manutenção do pacote;

Depends: listagem com os nomes de outros pacotes Debian, dos quais o pacote sendo construído depende. Caso haja mais de uma dependência, separe cada uma com uma vírgula. Pode-se ainda especificar quais versões das dependências são aplicáveis ao pacote sendo construído. Para tanto, depois do nome de uma dependência, defina entre parênteses um operador de relação (operadores possíveis: <<, <=, =, >= and >>) e o número de versão da dependência.

Description: breve descrição do pacote.

Wednesday, September 06, 2006

Convertendo arquivos UTF-8 em ISO-8859-1

iconv -f codificacao_de_origem -t codificacao_de_saida arquivo

Assim para converter UTF-8 para ISO-8859-1 temos:

iconv -f utf-8 -t iso-8859-1 arquivo

Para o contrário utilizamos:

iconv -f iso-8859-1 -t utf-8 arquivo

É necessário redirecionar a saida de arquivo para algum lugar, algo como:

iconv -f utf-8 -t iso-8859-1 arquivo > novo_arquivo

Sendo assim, eu acrescentei ao meu ~/.bashrc* as seguintes linhas

alias iso2utf='iconv -f iso-8859-1 -t utf-8'
alias utf2iso='iconv -f utf-8 -t iso-8859-1'

Agora quando eu quiser converter um tipo de arquivo em outro, eu só preciso usar o iso2utf ou o utf2iso

Saturday, August 26, 2006

Instalando o Java no Drapper

Ok, a pedido de Ronualdo, melhor programador em Java que
eu conheço. Vou colocar aqui como se faz para instalar o
Java na sua máquina. E pasmem a versão mais nova do bicho.

Primeiramente, vamos baixar o arquivo .bin do qual iremos
gerar o .deb para instalar. Então entre no site da sun e pege
o binário para a sua máquina. Feito isso vamos iniciar a
brincadeira ;)
  1. enomeie-o retirando a porção do nome onde se
    lê a data de geração do arquivo. Isto é necessário
    devido à padronização do nome adotada no script
    que vai gerar o pacote".deb" a partir do ".bin".
    Exemplo:

    mv jdk-6-beta2-bin-b82-linux-i586-27_apr_2006.bin
    jdk-6-beta2-bin-b82-linux-i586.bin

  2. Agora devemos partir para outra tarefa, ou seja,
    instalar os arquivos necessários para gerar um
    pacote ".deb" a partir do ".bin" baixado. Sendo
    assim, precisamos instalar os pacotes "fakeroot"
    e "java-package". O pacote "java-package" pelo que
    pude constatar não estará presente nos repositórios
    listados no sources.list instalado com o Dapper.
    Para instalar o "java-package", é necessário editar o
    arquivo "/etc/apt/sources.list" e acrescentaras linhas
    seguintes ao final do arquivo:

    deb http://us.archive.ubuntu.com/ubuntu dapper
    universe multiverse
    deb-src http://us.archive.ubuntu.com/ubuntu dapper
    universe multiverse


  3. Atualize a sua base de dados
    sud apt-get update
    sudo apt-get install fakeroot java-package
  4. Geração do pacote ".deb", instalação
    do Java SE 6 e configuração final
    Gerar o pacote ".deb" a partir do ".bin" foi realmente
    um processo indolor. Para executar o procedimento,
    siga ao diretório onde encontra-se o arquivo de
    instalação do Java SE 6 e use o seguinte comando
    adaptando para o seu build.
    fakeroot make-jpkg jdk-6-beta2-bin-b82-linux-i586.bin

    No terminal serão apresentados dados como os que seguem
    abaixo:Detected product:
    Java(TM) Software Development Kit (J2SDK)
    Standard Edition, Version 1.6.0+beta82
    Sun Microsystems(TM), Inc.
    Is this correct [Y/n]:

    Pressione a tecla Y para confirmar. Logo em seguida
    você será informado de que é necessário aceitar os
    termos de utilização do Java SE 6. Para tanto,
    simplesmente pressione a tecla "Enter". Continue a
    pressionar a tecla "Enter" até que a opção
    de "Do you agree to the above license terms? [yes or no]".
    Simplesmente digite "yes" e tecle novamente "Enter".
    Feito isto, o pacote binário será descompactado e,
    em seguida o novo pacote ".deb" será criado
    automaticamente.

    Ao ser terminado o processo, no diretório
    onde havia o arquivo
    jdk-6-beta2-bin-b82-linux-i586.bin há também
    agora o arquivo "sun-j2sdk1.6_1.6.0+beta82_i386.deb".
    E este último arquivo citado será aquele que
    utilizaremos para instalar o Java SE 6 no sistema.

  5. Para instalar, simplesmente utilize o seguinte
    comando:

    % sudo dpkg -i sun-j2sdk1.6_1.6.0+beta82_i386.deb
    A partir do instante que a instalação é efetivada.
    Precisaremos apenas configurar o Java SE 6 como
    a plataforma Java padrão no sistema, para que
    assim possa ser reconhecido pelas aplicações
    baseadas em Java.

    % sudo update-alternatives --config java
    Selecione o número associado na linha onde se lê
    "/usr/lib/j2sdk1.6-sun/bin/java" e pressione "Enter".
    Para confirmar que o Java SE 6 está corretamente
    configurado no sistema, simplesmente use o
    seguinte comando:

    % java -version
    Um conjunto de mensagens como o que coloco
    abaixo deve ser apresentado no terminal:

    java version "1.6.0-beta2"
    Java(TM) SE Runtime Environment (build 1.6.0-beta2-b82)
    Java HotSpot(TM) Client VM (build 1.6.0-beta2-b82,
    mixed mode, sharing)


    Estando tudo "ok", o Java SE 6 está devidamente
    instalado e configurado como plataforma Java
    padrão no sistema.

    Nota: caso queira fazer o mesmo com jar,
    javac, javadoc, javah, javap e javaws:

    % sudo update-alternatives --config jar


    Para fazer com que aplicações java
    comuns (instaladas usando pacotes .deb)
    rodem sob a JVM de tua escolha, certifique-se
    de editar o respctivo arquivo de configuração:

    % sudo vi /etc/jvm


    e adicione a seguinte linha (coloque como a
    primeira linha entre as JVMs listadas):

    /usr/lib/j2sdk1.6-sun


    Certos pacotes acionam a primeira JVM
    listada nesse arquivo. Sendo assim, eu coloco
    a linha referente ao Java SE 6 como a primeira
    linha entre as JVMs listadas. Veja o exemplo a seguir:

    cat /etc/jvm

    /usr/lib/j2sdk1.6-sun
    /usr/lib/jvm/java-gcj
    /usr/lib/jvm/ia32-java-1.5.0-sun
    /usr/lib/jvm/java-1.5.0-sun
    /usr


Thursday, August 24, 2006

Finalizando todos os processos de um usuário

Para matar um programa com o comando kill é preciso do número PID do processo, para conseguir o número PID, ou você usa pidof programa ou lista todos os processos e olha o PID do programa que te interessa. E se você quiser finalizar todos os processos de um determinado usuário ? E se tiver mais de um número de PID referente aquele processo (como o apache) ?

Uma solução vem do comando abaixo:

ps auxww | grep "mitre" | awk '{print $2}'

Com ele, nós listamos todos os PID do usuario mitre. Ainda podemos com a modificação do comando abaixo:

ps auxww | grep "apache" | awk '{print $2}'

listar todos os processos que contenham a expressão regular "apache".

Essencialmente, podemos listar todos os PIDs de qualquer processo que possa ser
identificado por uma expressão regular apropriada como argumento do comando intermediário "grep".

DokuWiki: Um Wiki para documentação

Um Wiki para documentação tem que ter as seguintes características:
  • suporte ao LaTeX, usado pela maioria dos cientistas da computação
  • arquivos em modo texto, para os hackers poderem usar o editor que quiserem
  • distribuição de textos em seções
  • facilidade de utilizar tabelas, pelo menos CSV
  • suporte ao GNUplot
  • suporte simples para galeria de imagens
O Dokuwiki. é um exempo de Wiki que atende as restrições acima. Ele tem pacote Debian/Ubuntu disponível, ou seja, basta fazer um dpkg e tudo estará pronto para o uso. O DokuWiki tem o poder do MediaWiki (segundo este site).
Uma característica importante do Dokuwiki é fato de que ele não utiliza SQL, uma vez que, isso limitaria a velocidade de busca em Wikis enormes como a Wikipédia.