Ao contrário de outras distribuições, os pacotes do Slackware não utilizam nenhum sistema de controle de dependências. Você poderia remover alguma peça fundamental do sistema, como o libc ou o kernel e o gerenciador de pacotes não emitiria nenhum tipo de alerta (você só perceberia o erro quando o sistema parasse de funcionar). O mesmo acontece ao instalar novos pacotes: nada impede que você instale um novo programa sem instalar junto outros pacotes com bibliotecas e componentes adicionais dos quais ele precise para funcionar, mas, por outro lado, não existe nenhuma garantia de que ele vá realmente funcionar sem eles.
Isso é ao mesmo tempo uma vantagem e uma desvantagem. Desvantagem no sentido de que é necessário muito mais conhecimento sobre as relações entre os pacotes para instalar ou remover programas sem destruir nada e vantagem por que você tem liberdade para fazer o que quiser (inclusive destruir o sistema) sem nenhum gerenciador de pacotes chato reclamando sobre dependências não satisfeitas e pacotes quebrados. Você pode aprender na prática o que acontece ao remover o pacote X ou ao instalar o pacote Y sem instalar junto o pacote Z e assim aprofundar seus conhecimentos sobre a estrutura do sistema.
Do ponto de vista do aprendizado (que, afinal, é o grande objetivo deste livro), o sistema do Slackware é interessante, pois lhe dá uma liberdade muito maior para fuçar no sistema e aprender, se necessário destruindo e reinstalando o sistema sucessivas vezes. Porém, em um micro de trabalho, a idéia não é tão boa assim.
A questão das dependências é minimizada no Slackware através de uma política de redução no número de pacotes, agrupando os componentes em pacotes maiores. Por exemplo, no Debian o Samba é composto por 5 pacotes separados: samba (o servidor), smbclient (o cliente), samba-common, samba-doc e smbfs, enquanto no Slackware existe um único pacote (o “samba”, que faz parte da categorias “N”), que agrupa todos os componentes.
A vantagem dessa abordagem é que a configuração é simplificada, evitando casos como a montagem de compartilhamentos do Samba via linha de comando no Ubuntu, que só funciona depois de instalar o pacote “smbfs”. No Slackware, você simplesmente instala o pacote principal e tem acesso a todos os componentes. A desvantagem, por outro lado, é que você perde em flexibilidade, já que não é possível instalar apenas o smbclient, sem precisar instalar junto o servidor e documentação.
Para gerenciar os pacotes instalados o Slackware conta com o pkgtool, um utilitário de modo texto que permite instalar e remover pacotes, verificar o conteúdo dos pacotes instalados e ver detalhes sobre eles. Para usá-lo, basta chamá-lo em um terminal, como root:
Na opção “Current” são mostrados os arquivos .tgz presentes no diretório a partir da onde o comando foi executado. Se você executar o pkgtool dentro de um diretório com vários pacotes, o instalador mostra o nome e descrição de cada um e vai perguntando se cada pacote deve ser instalado, assim como ao escolher a opção “Advanced” durante a instalação. A opção “Other” é similar, mas permite que você especifique manualmente o diretório onde estão os pacotes.
A opção “Remove” é provavelmente a mais usada. Ela mostra um menu com os pacotes atualmente instalados, permitindo que você marque pacotes que deseja desinstalar. Note que o gerenciador não emite nenhum aviso ao tentar remover pacotes essenciais, por isso tome nota dos pacotes que remover, para poder reinstalá-lo depois caso perceba a falta de alguma função importante depois.
Instalar e remover pacotes e ir pesquisando detalhes sobre eles é um bom exercício para entender melhor os componentes do sistema. Como comentei, o Slackware utiliza uma estrutura mais simples do que em outras distribuições, o que faz com que seja composto por um número muito menor de pacotes e seja por isso muito mais simples de entender. Você pode começar, removendo pacotes de que não vai precisar, como o kdeedu, kdetoys, e o kdevelop e a partir daí ir vasculhando a lista em busca de outros pacotes que possam ser removidos:
Desde que você mantenha uma lista dos pacotes que está removendo, não existem grandes riscos para a integridade do sistema, já que você pode instalá-los novamente usando o installpkg. Se você remover o pacote “kdebase” (que inclui as bibliotecas básicas do KDE), por exemplo, o KDE vai deixar de abrir, até que você o instale novamente 🙂
Os únicos pacotes que você realmente não pode remover, sob pena de realmente quebrar o sistema são os pacotes do Kernel e os pacotes que fazem parte da categoria “a”, que inclui os componentes básicos do sistema.
Continuando, você pode também instalar pacotes diretamente a partir da linha de comando. Para isso, acesse o diretório onde está o pacote e use o comando installpkg, seguido pelo nome do arquivo, como em:
Os nomes dos pacotes sempre são um pouco longos, pois incluem a versão, arquitetura e número de revisão. Para facilitar, use a tecla TAB para completar o comando, depois de digitar as primeiras letras.
Para remover o nome de um pacote, que você saiba o nome, use o comando removepkg, seguido pelo nome do pacote (sem a extensão), como em:
Para instalar uma versão mais recente de um pacote, atualizando a versão atualmente instalada no sistema, você usa o comando upgradepkg. Ele se encarrega de remover o pacote antigo e instalar o novo. Se, por exemplo, você baixou uma nova versão do Amarok, disponível na pasta xap/ do slackware-current, o comando para atualizar a versão atual seria:
Por não ser baseado num utilitário gráfico, o sistema de gerenciamento do Slackware parece um pouco desconfortável no início, mas com a prática ele se revela bastante fácil de usar. Por exemplo, para instalar a versão mais recente do bittorrent (que não faz parte da instalação padrão) você visitaria o http://www.slackware.com e acessaria um dos mirrors listados na página “Get Slack”, como o ftp://ftp.slackware-brasil.com.br/.
Dentro de cada mirror estão disponíveis os pacotes de várias versões, mas os que interessam são os pacotes da pasta referente à versão atual (os estáveis) ou os pacotes experimentais disponíveis na pasta slackware-current.
O pacote do bittorrent está na pasta extra/bittorrent/. Enquanto escrevo o pacote disponível é o “bittorrent-4.4.0-noarch-2.tgz”. Note que o “4.4.0” no nome corresponde à versão, é por ele que você sabe se o pacote é mais recente ou não que o que você já tem instalado.
Depois de baixar o pacote, bastaria acessar o diretório onde ele foi salvo, e dar o comando (como root):
Se por acaso amanhã aparecer uma versão mais recente no slackware-current, o “bittorrent-5.0.1-noarch-1.tgz” por exemplo, você usaria o:
… para atualizar a versão que tiver instalada, mantendo todas as configurações.
Se depois você mudar de idéia e resolver remover o pacote, é só usar o removepkg para sumir com ele do mapa:
Se você não lembrar qual era exatamente o nome do pacote, basta chamar o pkgtool, acessar a opção Remove e selecionar o pacote na lista.
Na grande maioria dos casos, o comando para chamar um programa é o próprio nome do pacote: “firefox”, “thunderbird”, “kwrite”, “konqueror” etc. A maior parte dos programas cria um ícone no iniciar (pelo menos no KDE e Gnome) ao serem instalados, mas sempre existem exceções. Nestes casos, você pode criar o ícone manualmente usando o kmenuedit, que você acessa clicando com o botão direito sobre o ícone do iniciar.
Concluindo, temos a questão da atualização do sistema. Diferente do Ubuntu e outras distribuições, onde um gerenciador fica disponível ao lado do relógio, avisando (muitas vezes de forma até irritante) quando existem atualizações disponíveis, no Slackware elas são discretamente disponibilizadas através do diretório “patches/packages/” disponível nos mirrors, de onde precisam ser baixados manualmente:
ftp://ftp.slackware-brasil.com.br/slackware-12.1/patches/packages
Dependendo da época, o diretório pode conter um bom volume de pacotes, mas você precisa se preocupar apenas com os pacotes que tem instalados no seu micro (afinal, não existe por que se preocupar com atualizações para um software que não está instalado em primeiro lugar :). Você pode simplesmente baixar todos os pacotes que vai atualizar para um diretório e instalá-los usando o installpkg:
Repositórios adicionais: O repositório principal do Slackware é bastante espartano, incluindo apenas os pacotes mais comuns. Um bom exemplo disso é que todos os pacotes do Slackware 12.1 (incluindo a pasta extras/) somam pouco mais de 2.2 GB, enquanto os repositórios oficiais do Debian Etch somam mais de 14 GB.
Devido a isso, surgiram diversos grupos de usuários e voluntários dedicados a disponibilizar pacotes adicionais para o Slackware. Os dois mais conhecidos são o Slacky e o LinuxPackages (que apesar do nome é especializado em pacotes para o Slackware:
http://www.slacky.eu/
http://www.linuxpackages.net/
Para encontrar pacotes dentro do repositório principal (e assim saber se ele inclui o que procura, ou se precisa procurar em outro lugar), uma boa opção é o localizador de pacotes do slackware.it:
http://packages.slackware.it/
Outro repositório bastante conhecido é o Dropline, que inclui pacotes para a instalação do Gnome: http://www.droplinegnome.org/
A forma mais simple de instalar os pacotes é baixar o pacote do dropline-installer, instalá-lo usando o installpkg e executá-lo (como root) usando o “dropline-installer”, deixando que ele detecte a versão do Slackware e uso e baixe os pacotes via web. Ele possui uma série de dependências, entre elas o aspell, perl e o textutils. Se algum dos pacotes não estiver instalado, ele exibe uma lista dos faltantes e pede que você os instale manualmente antes de continuar.
Outro projeto importante é o Slackbuilds, que disponibiliza scripts de compilação para diversos outros aplicativos, permitindo que você os compile diretamente na sua máquina, em vez de depender que algum grupo disponibilize um pacote pré-compilado:
http://www.slackbuilds.org/
A instalação de aplicativos através do código fonte no Slackware é bastante simples em relação a outras distribuições, já que ao marcar a categoria “D” durante a instalação quase todos os compiladores e bibliotecas necessários são instalados automaticamente, evitando que você precise ficar caçando os componentes na hora de tentar compilar cada pacote, como é comum em outros sistemas. Ao usar os scripts do Slackbuilds o processo se torna quase automático, você precisa apenas baixar o SalckBuild do pacote desejado, descompactar o arquivo, baixar o pacote com o código fonte (salvando-o na mesma pasta) e em seguida executar o script de instalação, deixando que ele se encarregue do restante da instalação.
Para instalar o SlackBuild do Ndiswrapper, disponível no:
http://www.slackbuilds.org/repository/12.1/network/ndiswrapper/
… por exemplo, os passos seriam:
a) Baixar o arquivo “ndiswrapper.tar.gz” disponível na página (contendo o SlackBuild) e descompactá-lo na pasta atual:
b) Acessar a pasta “ndiswrapper” que será criada e baixar para dentro dela o arquivo “ndiswrapper-1.53.tar.gz” (também disponível na página) que contém o código-fonte do pacote.
c) Executar, como root, o script “ndiswrapper.SlackBuild” disponível dentro da pasta:
d) Depois de feito o processo de compilação, será gerado o pacote “ndiswrapper-1.53_2.6.24.5_smp-i486-1_SBo.tgz”, salvo no diretório /tmp. Este é o pacote compilado, que pode ser instalado usando o installpkg:
Se você desmarcou a categoria “D” durante a instalação, o jeito mais prático de instalar os pacotes posteriormente é montar o DVD de instalação, acessar a pasta com os pacotes (cd /mnt/cdrom/slackware/d/) e usar o comando “installpkg *.tgz” para instalar de uma vez todos os pacotes do diretório. Outra opção é usar o pkgtool dentro do diretório, o que permite revisar a instalação de cada um:
Gerenciadores de pacotes: Embora relativamente prática, a instalação manual de pacotes no Slackware tem suas limitações. Um bom exemplo é a dificuldade em instalar o Mplayer, que devido a problemas relacionados a patentes, não vem pré-instalado no Slackware. Em outras distribuições, a instalação é feita adicionando um repositório adicional e em seguida instalando o pacote “mplayer”, deixando que o gerenciador de pacotes instale as dependências automaticamente.
No caso do Slackware, entretanto, é necessário baixar uma pequena lista de pacotes e instalá-los usando o installpkg:
jack
ffmpeg
libdvdread
libdvdcss
lame
twolame
speex
a52dec
faac
faad2
libmpcdec x264
xvidcore
Estes pacotes não fazem parte do repositório oficial, mas estão disponíveis no http://www.slacky.eu/, basta usar a pesquisa. Parte deles estão disponíveis também no http://www.linuxpackages.net/. Se o acesso estiver muito lento, você pode usar um mirror como o http://darkstar.ist.utl.pt/slackware/addon/ para baixar os pacotes, usando o site principal apenas para fazer a busca.
Como pode ver, o Mplayer é na verdade um aplicativo complexo, que depende de vários outros aplicativos e bibliotecas para funcionar. Se um deles estiver faltando, ele vai exibir uma mensagem no estilo “mplayer: error while loading shared libraries: libx264.so.59: cannot open shared object file: No such file or directory” e se recusar a abrir até que o pacote correspondente esteja instalado.
Em outras distribuições, esse problema de dependências é gerenciado automaticamente, de forma que ao pedir pelo pacote “mplayer” o gerenciador verifica de que outros pacotes ele precisa e instala todos automaticamente. A dificuldade deixa de ser baixar uma longa lista de pacotes e instalar um por um e passa a ser simplesmente adicionar o repositório apropriado nas fontes de atualização.
Embora nem sempre sejam vistos com bons olhos, já que tiram um pouco o ar de simplicidade do sistema, existem também opções de gerenciadores de pacotes para o Slackware, que facilitam a vida de quem quer usá-lo sem precisar ficar fazendo downloads manuais, nem ficar se preocupando com dependências.
Usando o Slackpkg: O Slackpkg é um gerenciador de pacotes rudimentar, que oferece uma opção mais prática de usar em relação à tradicional receita de baixar os pacotes manualmente e instalá-los usando o installpkg. Ele permite instalar ou atualizar os pacotes de forma mais prática, com o gerenciador baixando as versões mais atuais dos pacotes solicitados a partir de um mirror pré-selecionado.
Apesar da popularidade, o Slackpkg não vem instalado por padrão, nem faz parte dos CDs ou do DVD de instalação. Você pode encontrá-lo dentro da pasta “extra/slackpkg/” no diretório do Slackware. No caso do 12.1, por exemplo, a url seria:
ftp://ftp.slackware-brasil.com.br/slackware-12.1/extra/slackpkg/
Depois de baixar, instale o pacote usando o installpkg:
Ao contrário do pkgtool, que trabalha apenas com pacotes locais, o slackpkg baixa os pacotes da Internet, assim com o apt-get. O primeiro passo é editar o arquivo “/etc/slackpkg/mirrors” e descomentar a linha com o mirror que será utilizado, como em:
No arquivo você encontra uma lista com vários (muitos mesmo!) mirrors do Slackware, contendo os endereços do Slackware 12.1 (ou da versão mais recente, no momento em que estiver lendo) e também do slackware-current, onde você pode encontrar as versões de desenvolvimento (mais recentes, porém menos testadas) dos pacotes.
A limitação é que você pode escolher apenas um endereço na lista, escolhendo entre usar os pacotes da versão atual, do slackware-current ou instalar os pacotes contidos no CD-ROM. Se eventualmente o mirror escolhido estiver fora do ar, será necessário voltar ao arquivo, comentá-lo e desmarcar outro. Também não é possível usar repositórios com pacotes extras, como no apt-get.
Caso você deixe mais de uma linha descomentada, o slackpkg se recusa a funcionar, exibindo a mensagem:
/etc/slackpkg/mirrors and comment one or more lines. Two or more
mirrors uncommented isn’t valid syntax.
Depois de se entender com o arquivo, o próximo passo é fazer com que o Slackpkg baixe a lista e os checksuns dos pacotes, o que é feito usando o comando:
A partir daí, você pode usar os parâmetros install, remove, upgrade e reinstall para gerenciar os pacotes. O install faz com que ele baixe e instale o pacote, o remove e o upgrade respectivamente removem e atualizam o pacote, caso exista uma nova versão ou atualização de segurança disponível e o reinstall faz uma reinstalação forçada do pacote, subscrevendo os arquivos. Esta última opção é útil para reparar arquivos corrompidos ou instalações incompletas.
Para instalar o bittorrent, por exemplo, você usaria:
Para baixar a última versão do Firefox:
É possível também instalar ou atualizar categorias inteiras. O exemplo mais comum é o KDE, que é armazenado dentro da pasta kde/ do CD de instalação. Para instalar de uma vez todos os pacotes, o comando seria:
É possível também baixar de uma vez todas as atualizações de segurança disponíveis, usando o comando:
Se você não lembrar do nome do pacote que quer instalar, tiver apenas uma vaga idéia, é possível usar a opção “search” para procurar por pacotes, como em:
O mesmo comando pode ser usado para procurar por arquivos e bibliotecas, nas situações onde você precisa de determinado arquivo, mas não sabe de qual pacote ele faz parte.
Apesar de parecer muito complexo, o Slackpkg é na verdade um shell script, com pouco mais de 500 linhas, o “/usr/sbin/slackpkg”, que utiliza dois arquivos adicionais com funções, localizados na pasta “/usr/libexec/slaclpkg”, totalizando menos de 1000 linhas. Você você pode dar uma olhada no código e até mesmo fazer alterações usando qualquer editor de textos.
Devido à filosofia de manter o código simples, o Slackpkg não resolve muitos erros sozinho, deixando sempre a cargo do dono verificar o que está errado. Também não existe nenhum tipo de checagem de dependências. Assim como no pkgtool, nada impede que você remova qualquer componente essencial do sistema. Pelo contrário, em muitas situações o slackpkg ajuda a pregar seu caixão, como ao usar o “slackpkg remove kernel”, que gera o seguinte diálogo:
Ou seja, ele se oferece para remover não apenas o pacote com a imagem do Kernel, mas também os módulos e os headers. O default é o “OK”, de forma que se você simplesmente pressionar Enter na pergunta, ele prossegue com a operação sem pensar duas vezes.
Ao tentar fazer algo similar usando o apt-get, por exemplo, você receberia a famosa mensagem:
Para continuar digite a frase ‘Sim, faça o que eu digo!’
… onde você precisa digitar, literalmente, o ‘Sim, faça o que eu digo!’ para continuar. Ou seja, ele permite que você continue e faça o que quiser, mas a necessidade de confirmar a frase faz com que você pense duas vezes antes de quebrar o sistema.
Usando o Slapt-get: O concorrente mais tradicional do Slackpkg é o Swaret (http://freshmeat.net/projects/swaret/), um gerenciador que tenta emular a funcionalidade do apt-get e do urpmi (do Mandriva), oferecendo-se para baixar os pacotes desejados, com a opção de já verificar as famosas dependências, ou seja, se o pacote desejado precisa de outros para funcionar, com a opção de já instalar a turma toda de uma vez. O grande problema é que o projeto está inativo desde 2005, o que levou ao crescimento do Slapt-get, que oferece uma proposta similar.
Como o nome sugere, o Slapt-get se propõe a oferecer um sistema de download automático de dependências, emulando o funcionamento do apt-get e outros gerenciadores de pacotes, mas trabalhando em conjunto com os pacotes e os repositórios do Slackware. A grande vantagem sobre o Slackpkg é que ele é capaz de trabalhar com vários repositórios simultaneamente, incluindo repositórios não-oficiais como o Slacky, o que simplifica enormemente a instalação de aplicativos com muitas dependências, como o Mplayer.
Você pode baixar o Slapt-get no http://software.jaos.org/. Não existe problema em instalá-lo ou mesmo em usá-lo em conjunto com o Slackpkg ou com o installpkg/pkgtool, de forma que você pode ficar livre para testá-lo e voltar para o Slackpkg ou para o sistema manual se não gostar.
O primeiro passo é, como de praxe, baixar a versão correspondente à versão do Slackware em uso e instalar o pacote usando o installpkg, como em:
Com ele instalado, o próximo passo é especificar os repositórios que serão utilizados, editando o arquivo “/etc/slapt-get/slapt-getrc“.
Por padrão ele inclui:
EXCLUDE=^kernel-.*,^glibc.*,.*-[0-9]+dl$,^devs$,^udev$,aaa_elflibs,x86_64
SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-12.1/
SOURCE=http://software.jaos.org/slackpacks/12.1/
A primeira linha indica o diretório de trabalho, onde ele armazenará os pacotes e outras informações baixadas. A segunda é uma precaução de segurança, destinada a evitar que alguns pacotes essenciais do sistema sejam removidos ou substituídos. As duas linhas finais são o que realmente interessa, ou seja, os repositórios.
Por padrão, ele inclui apenas o repositório principal do Slackware e o endereço do mirror onde estão disponíveis atualização do próprio Slapt-get. Como o repositório raiz do Slackware é lento devido ao grande volume de tráfego, é interessante adicionar o endereço de um dos mirrors do Brasil. Você pode adicionar também um dos mirrors do Slacky ou outro repositório não-oficial, como em:
EXCLUDE=^kernel-.*,^glibc.*,.*-[0-9]+dl$,^devs$,^udev$,aaa_elflibs,x86_64
SOURCE=ftp://ftp.slackware-brasil.com.br/slackware-12.1/
SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-12.1/
SOURCE=http://software.jaos.org/slackpacks/12.1/
SOURCE=http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-12.1/
Qualquer usuário mais antigo vai lhe alertar sobre o perigo de adicionar repositórios não-oficiais à lista, já que isso abre brechas para problemas diversos relacionados às versões e a diferenças nas dependências. Entretanto, se você já baixa pacotes dos mirrors não-oficiais regularmente, o argumento perde a força, já que não existe muita diferença entre baixar os pacotes manualmente e instalar, ou adicionar o mirror no Slapt-get e baixar os pacotes a partir dele. A principal dica é sempre prestar atenção nas mensagens e não misturar repositórios com pacotes para versões diferentes do Slackware.
Depois de salvo o arquivo, o próximo passo é atualizar as listas (o que pode demorar um pouco se você adicionou muitos mirrors), o que é feito usando o:
A partir daí, você instalar novos programas usando o “slapt-get –install”, como em:
Apesar do nome não sugerir semelhança, o “httpd” nada mais é do que o pacote do Apache2. Se você ativar o serviço depois de instalado, usando os comandos:
# /etc/rc.d/rc.httpd start
… e tentar acessar o endereço IP da sua máquina a partir de outro PC da rede, usando o navegador, vai receber o “It works” do Apache, mostrando que o servidor está realmente ativo.
Para remover, use o “slapt-get –remove”, como em:
O Slapt-get tornaria a instalação do Mplayer do exemplo anterior muito mais simples. Desde que você tenha adicionado um dos mirrors do Slacky no slapt-getrc, você poderia instalá-lo diretamente, usando o:
O Slapt-get é capaz de checar as dependências e instalar junto os outros 12 pacotes:
The following NEW packages will be installed:
amrnb amrwb faac sqlite libsndfile jack-audio-connection-kit lame libmpcdec
speex twolame x264 xvidcore mplayer
0 upgraded, 13 newly installed, 0 to remove and 0 not upgraded.
Need to get 16.8MB of archives.
After unpacking 50.2MB of additional disk space will be used.
O Slapt-get é capaz também de atualizar o sistema, baixando todas as atualizações que estiverem disponíveis, o que simplifica muito a administração do sistema, já que você não precisa mais baixar e instalar os pacotes da pasta “patches/packages/” manualmente.
Para isso, rode o “slapt-get –update”, para que ele atualize as listas de pacotes e em seguida o “slapt-get –upgrade”, como em:
# slapt-get –upgrade
É possível também usar o Slapt-get para atualizar o sistema, atualizando para uma nova versão. Para isso, você precisaria editar o arquivo slapt-getrc, alterando a versão de todas as entradas da lista (de “12.0” para “12.1”, por exemplo) e em seguida rodar o “slapt-get –dist-upgrade”, como em:
# slapt-get –dist-upgrade
É possível também fazer buscas nos nomes dos pacotes usando a opção “–search“, ou ver uma lista de todos os pacotes disponíveis, usando a opção “–list” e a lista dos pacotes instalados usando a “–installed“.
Você pode ver uma lista rápida das opções disponíveis usando o “slapt-get –help” ou ver a documentação completa acessando a pasta “/usr/doc/slapt-get-$versao”
Deixe seu comentário