Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
NablaUtils: meu pequeno canivete suíço
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Portuguese
View previous topic :: View next topic  
Author Message
Operador Nabla
Apprentice
Apprentice


Joined: 06 Feb 2004
Posts: 176
Location: Salesópolis - SP - Brasil

PostPosted: Mon Apr 11, 2005 2:27 am    Post subject: NablaUtils: meu pequeno canivete suíço Reply with quote

Como eu hava dito em outro tópico, estou escrevendo um utilitário em Python que utiliza os recursos do Portage para automatizar algumas tarefas que costumo realizar com freqüência. Também prometi disponibilizar o script aqui no fórum quando estivesse começando a ficar satisfeito com os seus recursos...

Pois bem. Hoje eu concluí uma das etapas que eu mais almejava concluir e, por isso, achei que este é um bom momento para trazer o utilitário ao conhecimento de vocês.

O link para o download do script é este. O modo de uso do utilitário é o seguinte (é obrigatório indicar a opção):
Code:
nablautils.py opção pacote1 [pacote2 pacote3 ...]


Até o presente momento, as seguintes opções são suportadas:
  • -l, --list-versions: Exibe um quadro com todas as versões disponíveis para o pacote, com informações um pouco mais detalhadas sobre o masking status de cada versão.
  • -u, --unmask-package: Adiciona uma entrada referente ao pacote no arquivo /etc/portage/package.keywords.
  • -U, --unmask-depgraph: A menina dos meus olhos :D . Similar à opção -u, mas com um "pequeno" adicional: ele faz uma varredura nas dependências do(s) pacote(s), adicionando-as também ao arquivo /etc/portage/package.keywords, conforme necessário.
  • -r, --remask-package: Remove a entrada referente ao pacote do arquivo /etc/portage/package.keywords.
  • -c, --clean: Outro recurso que me cativa :D . O utilitário faz uma limpeza no arquivo /etc/portage/package.keywords, removendo entradas que se encontram em uma das seguintes situações:
    - A versão mais recente disponível para o pacote é estável.
    - Nenhuma versão estável ou ~x86 foi encontrada. Em princípio, isto dá cabo de entradas incorretas no arquivo.
  • [Nova opção] -g, --regenerate: Dê uma olhada na descrição desta opção mais abaixo!


Não se preocupem em passar na linha de comando o qualificador completo do pacote, categoria/pacote. Basta passar o nome do pacote que, em caso de ambiguidade, o utilitário lhe apresentará os possíveis qualificadores completos e solicitará quais deles você quer adicionar à sua lista de argumentos.

Vale ressaltar que, como eu comecei a desenvolver este utilitário para meu uso particular, só coloquei suporte para a arquitetura x86 (por enquanto). Além disso, os recursos de adição recursiva de pacotes e de limpeza do arquivo /etc/portage/package.keywords podem ainda não ter sido suficientemente testados (sugiro que você faça um backup do seu arquivo /etc/portage/package.keywords para o caso de algo sair errado).

Espero que gostem (quem quiser experimentar)...

PS: para os pythonmaníacos que quiserem [se atrever a] ler o script, deixo um recado: o script está muito grande, feio e mal documentado :oops: .

ERRATA: Na verdade, o script trabalha com outras arquiteturas, sim. A questão é que, até o presente momento, o script trabalha apenas com keywords do tipo ~ARCH no arquivo /etc/portage/package.keywords. Particularmente, não creio que alguém precise instalar um pacote mascarado como -x86 ou -* mas, se houver a necessidade, coloco tal suporte depois.


Last edited by Operador Nabla on Mon May 02, 2005 6:18 pm; edited 1 time in total
Back to top
View user's profile Send private message
nafre
Guru
Guru


Joined: 27 Dec 2003
Posts: 388

PostPosted: Tue Apr 12, 2005 11:17 am    Post subject: Reply with quote

Gostei do teu canivete.

Vou testar aqui :)
_________________
Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil
Back to top
View user's profile Send private message
nafre
Guru
Guru


Joined: 27 Dec 2003
Posts: 388

PostPosted: Tue Apr 12, 2005 11:21 am    Post subject: Reply with quote

Outra coisa que percebi agora antes de usar vc tera que da permissao de executacao:

Code:
#chmod +x nablautils.py


e depois de preferencia pode colocar no diretorios dos binarios:

Code:
mv nablautils.py /usr/bin


Um abraco.

Pra usar e so

Code:
./nablautils opcao ...

_________________
Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil
Back to top
View user's profile Send private message
nafre
Guru
Guru


Joined: 27 Dec 2003
Posts: 388

PostPosted: Tue Apr 12, 2005 11:49 am    Post subject: Reply with quote

depois de um tempo maquinando teu script venho a recorrer a vc:

Code:
bash-2.05b# nablautils.py -c
Traceback (most recent call last):
  File "/usr/bin/nablautils.py", line 743, in ?
    maskingManager.cleanPackageKeywordsFile()
  File "/usr/bin/nablautils.py", line 664, in cleanPackageKeywordsFile
    bestStableVersion = checker.sortByVersion( checker.availableVersions, package, '+', constraint = 'not masked' )[0]
  File "/usr/bin/nablautils.py", line 446, in sortByVersion
    if versionsDict.has_key( depend ):
AttributeError: 'str' object has no attribute 'has_key'

_________________
Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil
Back to top
View user's profile Send private message
Operador Nabla
Apprentice
Apprentice


Joined: 06 Feb 2004
Posts: 176
Location: Salesópolis - SP - Brasil

PostPosted: Tue Apr 12, 2005 5:12 pm    Post subject: Reply with quote

Eu tinha mudado a assinatura do método sortByVersion() e não tinha atualizado as invocações a este método dentro do método cleanPackageKeywordsFile().

Já fiz a correção. Baixe o script novamente e teste-o (não se esqueça de fazer um backup do seu arquivo /etc/portage/package.keywords até ter certeza de que está tudo funcionando...)
Back to top
View user's profile Send private message
nafre
Guru
Guru


Joined: 27 Dec 2003
Posts: 388

PostPosted: Tue Apr 12, 2005 5:19 pm    Post subject: Reply with quote

agora funcionou perfeitamente:

Code:
bash-2.05b# nablautils.py -c

The following entry was removed from /etc/portage/package.keywords:

    [S] x11-wm/enlightenment

[S]: the best version available for this package is "x86"-stable.

_________________
Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil
Back to top
View user's profile Send private message
coffeeman
Tux's lil' helper
Tux's lil' helper


Joined: 18 Jul 2003
Posts: 96
Location: Brasil

PostPosted: Tue Apr 12, 2005 6:27 pm    Post subject: Reply with quote

Gostei mesmo... vai me quebrar um galho danado...
Back to top
View user's profile Send private message
Kobal
Guru
Guru


Joined: 12 Feb 2004
Posts: 323
Location: Brasil / Brazil / Brésil / Brasilien / el Brasil

PostPosted: Tue Apr 12, 2005 7:35 pm    Post subject: Reply with quote

legal, não teria como mudar amarelo para outra cor ?

Um laranja, é que uso terminal branco, e fica muito ruim.



Bom script.
Back to top
View user's profile Send private message
Operador Nabla
Apprentice
Apprentice


Joined: 06 Feb 2004
Posts: 176
Location: Salesópolis - SP - Brasil

PostPosted: Wed Apr 13, 2005 1:10 am    Post subject: Reply with quote

Kobal wrote:
legal, não teria como mudar amarelo para outra cor ?

Um laranja, é que uso terminal branco, e fica muito ruim.

Fiz uma alteração "emergencial" no script, colocando background preto nos textos coloridos por padrão.
Vê se assim fica menos pior (só vou poder mexer com calma no script neste final de semana).
Back to top
View user's profile Send private message
Kobal
Guru
Guru


Joined: 12 Feb 2004
Posts: 323
Location: Brasil / Brazil / Brésil / Brasilien / el Brasil

PostPosted: Wed Apr 13, 2005 4:59 pm    Post subject: Reply with quote

Ajudou bastante, fica feio mais como provisorio ta muito bom, é so mudar o amarelo para outra cor que fica bom com fundo branco.
Back to top
View user's profile Send private message
nafre
Guru
Guru


Joined: 27 Dec 2003
Posts: 388

PostPosted: Wed Apr 13, 2005 8:12 pm    Post subject: Reply with quote

eu so a favor do background preto por padrao nos textos colorido.
_________________
Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil
Back to top
View user's profile Send private message
AngusYoung
Retired Dev
Retired Dev


Joined: 20 Dec 2002
Posts: 473
Location: Campinas, SP - Brazil

PostPosted: Wed Apr 13, 2005 8:54 pm    Post subject: Reply with quote

Legal seu programa Nabla :)
Para os preguiçosos como eu, eu fiz um ebuild.
_________________
N.U.S.: A cross platform C++ application development framework
My blog (in Portuguese)
Back to top
View user's profile Send private message
Operador Nabla
Apprentice
Apprentice


Joined: 06 Feb 2004
Posts: 176
Location: Salesópolis - SP - Brasil

PostPosted: Sat Apr 16, 2005 11:05 pm    Post subject: Reply with quote

Eu fiz uma reestruturação no script, criando objetos para os ebuilds, e adicionei uma opção nova (depois que um usuário italiano manifestou interesse por ela):
  • -g, --regenerate: Faz uma varredura em todos os pacotes instalados e adiciona-os ao arquivo /etc/portage/package.keywords conforme necessário

Suponhamos que você instalou uma série de pacotes do modo "antigo":
Code:
ACCEPT_KEYWORDS='~ARCH' emerge <lista-de-pacotes>

e agora não sabe quais deles você deve adicionar ao arquivo /etc/portage/package.keywords (para não ter problemas com downgrades indesejados). Neste caso, você pode invocar o comando:
Code:
nablautils.py -g

para que eles sejam devidamente adicionados.

Para ter uma idéia do poder deste recurso, faça a seguinte brincadeira:

1. Renomeie o seu arquivo /etc/portage/package.keywords (por exemplo, para /etc/portage/package.keywords.old).
2. Execute o comando nablautils.py -g
3. Compare o arquivo /etc/portage/package.keywords recém-gerado com o seu arquivo original:
Code:
diff /etc/portage/package.keywords.old /etc/portage/package.keywords


Você verá que, exceto em casos incomuns, o novo arquivo será muito parecido com o original (talvez por isso eu tehna batizado esta nova opção como regenerate :D ).

No momento, eu identifiquei um inconveniente: ele não funciona corretamente com pacotes obsoletos (i.e., pacotes instalados cujos ebuilds foram removidos da Portage Tree).

EDITADO: Eu alterei o esquema de cores utilizado no script, procurando algo que ficasse bom tanto em um terminal escuro como em um branco. Dêem uma olhada.
Back to top
View user's profile Send private message
Operador Nabla
Apprentice
Apprentice


Joined: 06 Feb 2004
Posts: 176
Location: Salesópolis - SP - Brasil

PostPosted: Sun May 01, 2005 5:33 pm    Post subject: Reply with quote

Gostaria de saber de quem está experimentando o script se ele está rodando bem.
É que no meu micro tá demorando muito para carregar os módulos do Portage (o que atrapalha a execução não só do meu script, como do próprio emerge). E olha que o meu micro é um Atlhon XP 1800+ com 256 MB de RAM...
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portuguese All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum