View previous topic :: View next topic |
Author |
Message |
Operador Nabla Apprentice
Joined: 06 Feb 2004 Posts: 176 Location: Salesópolis - SP - Brasil
|
Posted: Mon Apr 11, 2005 2:27 am Post subject: NablaUtils: meu pequeno canivete suíço |
|
|
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 . 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 . 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 .
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 |
|
|
nafre Guru
Joined: 27 Dec 2003 Posts: 388
|
Posted: Tue Apr 12, 2005 11:17 am Post subject: |
|
|
Gostei do teu canivete.
Vou testar aqui _________________ Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil |
|
Back to top |
|
|
nafre Guru
Joined: 27 Dec 2003 Posts: 388
|
Posted: Tue Apr 12, 2005 11:21 am Post subject: |
|
|
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 |
|
|
nafre Guru
Joined: 27 Dec 2003 Posts: 388
|
Posted: Tue Apr 12, 2005 11:49 am Post subject: |
|
|
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 |
|
|
Operador Nabla Apprentice
Joined: 06 Feb 2004 Posts: 176 Location: Salesópolis - SP - Brasil
|
Posted: Tue Apr 12, 2005 5:12 pm Post subject: |
|
|
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 |
|
|
nafre Guru
Joined: 27 Dec 2003 Posts: 388
|
Posted: Tue Apr 12, 2005 5:19 pm Post subject: |
|
|
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 |
|
|
coffeeman Tux's lil' helper
Joined: 18 Jul 2003 Posts: 96 Location: Brasil
|
Posted: Tue Apr 12, 2005 6:27 pm Post subject: |
|
|
Gostei mesmo... vai me quebrar um galho danado... |
|
Back to top |
|
|
Kobal Guru
Joined: 12 Feb 2004 Posts: 323 Location: Brasil / Brazil / Brésil / Brasilien / el Brasil
|
Posted: Tue Apr 12, 2005 7:35 pm Post subject: |
|
|
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 |
|
|
Operador Nabla Apprentice
Joined: 06 Feb 2004 Posts: 176 Location: Salesópolis - SP - Brasil
|
Posted: Wed Apr 13, 2005 1:10 am Post subject: |
|
|
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 |
|
|
Kobal Guru
Joined: 12 Feb 2004 Posts: 323 Location: Brasil / Brazil / Brésil / Brasilien / el Brasil
|
Posted: Wed Apr 13, 2005 4:59 pm Post subject: |
|
|
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 |
|
|
nafre Guru
Joined: 27 Dec 2003 Posts: 388
|
Posted: Wed Apr 13, 2005 8:12 pm Post subject: |
|
|
eu so a favor do background preto por padrao nos textos colorido. _________________ Nome- Felipe
Nick- Nafre
Idade- 25
Salvador - Bahia - Brasil |
|
Back to top |
|
|
AngusYoung Retired Dev
Joined: 20 Dec 2002 Posts: 473 Location: Czech Republic
|
Posted: Wed Apr 13, 2005 8:54 pm Post subject: |
|
|
Legal seu programa Nabla
Para os preguiçosos como eu, eu fiz um ebuild. _________________ My blog
Twitter |
|
Back to top |
|
|
Operador Nabla Apprentice
Joined: 06 Feb 2004 Posts: 176 Location: Salesópolis - SP - Brasil
|
Posted: Sat Apr 16, 2005 11:05 pm Post subject: |
|
|
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:
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 ).
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 |
|
|
Operador Nabla Apprentice
Joined: 06 Feb 2004 Posts: 176 Location: Salesópolis - SP - Brasil
|
Posted: Sun May 01, 2005 5:33 pm Post subject: |
|
|
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 |
|
|
|