View previous topic :: View next topic |
Author |
Message |
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Jul 14, 2005 10:44 am Post subject: [ TOOL - DISCUSSIONE ] - AuntMary dopo Unclepine |
|
|
Ho preferito creare un nuovo thread per non mischiare le 2 discussioni visto che cmq Unclepine e' sempre attivo.
Questo thread mi serve per esporre i miei dubbi e raccogliere suggerimenti (siamo oltre il GPL ).
Per chi non sa cosa sia Unclepine posso riassumere velocemente dicendo che e' un tool non ufficiale mio per lavorare con le dipendenze dirette e inverse e quindi utile per unmerge ricorsivi e pulizia del sistema.
Da tempo pensavo di riscriverlo per diversi motivi:
- pulizia codice -> alias mantenibilità
- utilizzo di funzioni di portage -> alias compattezza e supporto opzioni future
- realizzazione classe per supporto tool esterni (gtk,qt,console)
Il nome AuntMary!
Il tool sara' composto inizialmente della classe + una semplice applicazione per usarla.
Ora veniamo a noi... ai dubbi...
Unclepine al momento ha alcune limitazioni.
Alcune sono trascurabili altre no!
Ovviamente risolvere questi problemini mi comporta inevitabilmente una scelta di base:
zero limiti -> velocità ridotta,difficoltà di programmazione,complessità generale di utilizzo
alcuni limiti -> velocità accettabile,semplicità di programmazione,utilizzo intuitivo
Per alcuni forse queste 2 affermazioni non sono sempre vere (e concordo) ma in questo caso lo sono.
(e non credo che sia un caso che ancor oggi portage non abbia un suo tool ufficiale...)
Scusatemi se sono prolisso ma devo spiegarvi velocemente come lavora Unclepine (magari a qc fa anche piacere)
(spiego come si crea il suo simil-albero di dipendenze... che poi albero non e')
-recupero delle dipendenze RAW
-recupero dei pkt di system e world
-recupero delle useflags di sistema e quelle usate in compilazione
-recupero dei virtual
-risoluzione dei virtual in pkt
-semplificazione delle dipendenze in OR ( || negli ebuild)
-creazione per ogni pacchetto della lista di dipendenze risolte a pkt esistenti sul sistema
A questo punto abbiamo perso alcune informazioni!
- non sappiamo se un pacchetto era prima un virtual o meno
- leghiamo alcuni (in realtà ben pochi) pacchetti ad altri (sotto forma di dipendenza) anche se non sono strettamente necessari.
Questi sono i problemi principali.
Le dipendenze in OR in realtà sono ben poche e raramente (ma non sempre) capita di averle entrambe installate,e in ogni caso si tratterebbe di pochi pacchetti extra sul sistema.
A questo punto non so che fare.
O sbatto la testa fino a quando non trovo una struttura dati per preservare le informazioni e recuperarle e processarle in un tempo ragionevole...
...o convivo con alcune limitazioni (anche se avrei la possibilit di effettuare dei check su queste condizioni... con comandi appositi)
Il dubbio nasce dal fatto di non voler fare un tool troppo complesso (ovvero che mostra al utente informazioni per lo + incomprensibili) e dal fatto che vorrei non limitare come in passato.
Arg.. sono un po' fermo.
Tenete conto che un comportamento simile ad Unclepine e' gia' stato implementato e funziona sembra bene. (si e' molto in fase primordiale ma le funzioni base ci sono)
Voi che ne dite?
Grazie mille!
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
Cazzantonio Bodhisattva
Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Thu Jul 14, 2005 5:17 pm Post subject: |
|
|
Io, da assiduo utilizzatore di unclepine (che in pratica uso ogni aggiornamento e spesso per pulizia del sistema e informazioni varie) ti dico che da parte mia per ora unclepine ha sempre funzionato benissimo
L'unico mio dubbio te lo espressi tempo fa a proposito dei pacchetti tenuti su dalle inherited use flags da essi stesse generate ma mi pare una cosa relativamente poco importante (in ogni caso per tali eventualità si può sempre fare un controllo a mano)
Io fossi in te andrei verso un tool semplice, lo farei compatibile con portage in modo da rendere possibile una sua inclusione nei gentoolkit e rimanderei a dopo il suo completamento l'idea di tool grafici (magari esterni) visto che non penso tanta gente ne senta la necessità... (ma ovviamente se ci sono sono i benvenuti... se solo gentoo avesse un gestore di pacchetti come synaptic ) _________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Thu Jul 14, 2005 5:23 pm Post subject: |
|
|
Il giorno che capisco come funziona e come si usa lo zio potrei anche cimentarmi in una grfica gtk, quindi io propendo per iniziare dall'avere la zia facile ed efficente, e pensare in un secondo momento ad uno switch per ottenere le opzioni strane e verbose _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
|
codadilupo Advocate
Joined: 05 Aug 2003 Posts: 3135
|
Posted: Thu Jul 14, 2005 6:55 pm Post subject: |
|
|
io dico che.... un giorno mi dovrai dire dove peschi 'sti nomi
Coda |
|
Back to top |
|
|
federico Advocate
Joined: 18 Feb 2003 Posts: 3272 Location: Italy, Milano
|
Posted: Thu Jul 14, 2005 7:03 pm Post subject: |
|
|
codadilupo wrote: | io dico che.... un giorno mi dovrai dire dove peschi 'sti nomi
Coda |
Coda vendichiamoci e facciamo un programma chiamato nipoteTobia _________________ Sideralis www.sideralis.org
Pic http://blackman.amicofigo.com/gallery
Arduino http://www.arduino.cc
Chi aveva potuto aveva spaccato
2000 pezzi buttati là
Molti saluti,qualche domanda
Semplice come musica punk |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Thu Jul 14, 2005 10:13 pm Post subject: |
|
|
codadilupo wrote: | io dico che.... un giorno mi dovrai dire dove peschi 'sti nomi
Coda |
eh... la risposta non e' rassicurante...
il mio cervello
grazie a tutti per i pareri.
Penso che iniziero' a farlo semplice (si fa per dire...) e a facilitare cmq le operazioni dette da Cazzantonio e altre.
A questo punto spero di riuscire a tirare fuori qc prima di partire per le vacanze..... vedremo!
Grazie mille!
ciao
@federico: nephewToby ? _________________ while True:Gentoo() |
|
Back to top |
|
|
oRDeX Veteran
Joined: 19 Oct 2003 Posts: 1325 Location: Italy
|
Posted: Fri Jul 15, 2005 7:10 am Post subject: |
|
|
Ma sono tutti parenti? |
|
Back to top |
|
|
masterbrian Guru
Joined: 13 Feb 2004 Posts: 461
|
Posted: Fri Jul 15, 2005 7:36 am Post subject: |
|
|
Ciao,
do anche io i miei 2 cents di contributo
Premesso che non uso unclepine con la stessa dedizione di Cazzantonio, ma che lo trovo cmq un tool utilissimo, personalmente sarei per avere un'interfaccia stile mc e l'abilitazione delle funzioni minime di default, ma la possibilita', attraverso un menu' (e degli switch), di attivare tutto il resto.
In questo modo il tool sarebbe utlizzabile di base da chiunque e verrebbe conosciuto dalla maggior parte della comunita' (cosi' almeno si spera), ma soddisferebbe anche i piu' pignoli o desiderosi di features
Non so quanto peserebbe in termini di velocita', ma dal tuo post e' chiaro che non si tratta di differenze trascurabili. Ciononostante, se parte della struttura del programma, delle chiamate e delle funzioni rimangono inutulizzate con le impostazioni di default forse potresti arrivare ad un compromesso ragionevole?
Grazie infinite per il lavoro che fai su questi tool e per il tempo che dedichi alla comunita' _________________ [img:f6b0c3bcba]http://www.danasoft.com/sig/MasterBrian.jpg[/img:f6b0c3bcba] |
|
Back to top |
|
|
lavish Bodhisattva
Joined: 13 Sep 2004 Posts: 4296
|
Posted: Fri Jul 15, 2005 7:36 am Post subject: |
|
|
Grande xchris, complimentoni! Anche io sono un assiduo utilizzatore di unclepine e devo dire che si è sempre comprtato egregiamente, non ho mai notato dei limiti così restrittivi nel suo utilizzo
Anche io propendo per una scrittura "semplice" comunque
Ciao e buon lavoro! _________________ minimalblue.com | secgroup.github.io/ |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Fri Jul 15, 2005 8:31 am Post subject: |
|
|
@masterbrian:
tieni conto che di base la zia e' una classe che permette di lavorare in modo agevole sulle dipendenze...
l'applicazione sara' poi costruita ad hoc... e sara' semplice (credo) per chiunque utilizzarla e creare tool specifici.
vi faccio un esempio velocissimo
Code: |
## istanziamo
myapp=auntmary()
## leggiamo tutte le deps
myapp.scandb()
## magari lo salviamo...
myapp.savedb(name)
## o lo recuperiamo
myapp.loaddb(name)
## ora selezioniamo una lista di pacchetti dato il nome
lista=myapp.find_cpv(['media-video/mplayer','gnome','lopster'])
## lista ora contiene l'elenco di cat/app-ver
## magari si preferiva avere l'elenco di tutti quelli installati
installati=myapp.get_installed_nov()
## e magari anche con la versione
installati_versione=myapp.get_installed()
## ora impostiamo il modo local (utilizza le dipendenze da /var/db/pkg)
## e usiamo sia useflag di compilazione che quelle di systema
## e risolviamo solo mplayer
myapp.resolve('media-video/mplayer-1.0_pre6-r4','mix',local')
##e ora recuperiamo le sue dipendenze dirette
lista_deps=myapp.get_dep('media-video/mplayer-1.0_pre6-r4')
# e magari recuperiamo tutte le sue dipendenze in modo ricorsivo (comodo per creare livecd senza catalyst...)
lista_deps=myapp.get_deep_dep('media-video/mplayer-1.0_pre6-r4')
##magari si poteva risolvere l'intero db (necessario se si deve fare pulizia)
for x in myapp.get_installed():
myapp.resolve(x,'mix','local')
## vediamo una revdep - stampa tutti i pkt che necessitano di mplayer
print myapp.get_rev_deps('media-video/mplayer-1.0_pre6-r4')
|
ce ne sono altre ovviamente... lettura world,system... ecc ecc
come si puo' vedere la scrittura di altre applicazione dovrebbe risultare semplice.
Inizialmente vedro' cmq di fornire un app che rimpiazzi unclepine... ma sarebbe carino vedere altre implementazioni
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Sat Jul 16, 2005 8:30 am Post subject: |
|
|
la classe e' gia' bella funzionante...
Non pensavo di fare cosi' in fretta ma devo dire che Portage mette a disposizione molti strumenti per esplorare sia il DBtree che il PortageTree.
Secondo voi e' bene lasciarla minimale o mettere qualche funzione extra che recuperi altri tipi di informazioni (magari utili alle GUI)?
Una versione minimale di auntmary (da ora in poi li chiamero' auntmary_lib e auntmary per indicare il file contentente la classe e l'applicazione rispettivamente) e' gia' funzionante anche se mooolto grezza.
-al momento implementa Unlinked,Direct Deps,Reverse Deps
-in 10 minuti credo di fare la routine deep-unmerge
-da linea di comando si puo' specificare il modo (local,portage,mix) -> default:mix
-da linea di comando si puo' specificare l'utilizzo di useflags (System,Compile,Mix) -> default:Compile
-da linea di comando si puo' specificare l'utilizzo di RDEPEND,DEPEND,PDEPND -> default: tutte
-purtroppo gli switch per usarlo sono cambiati (colpa di optparser o mia che non lo so usare bene)
Vediamo i tempi:
- 10 secondi per creare tutto il database nelle condizioni peggiori (useflags:mix,mode=mix) (in realtà sono 2... uno risolto... uno grezzo per recuperare
altre info eventualmente)
una volta salvato il db per un particolare set di opzioni (tipicamente non si cambiano da un lancio all'altro) le operazioni sono molto veloci:
- dipendenze dirette 0.9 Secs
- dipendenze inverse 0.9 Secs
- routine unlinked (spazzatura sistema) 1,8 Secs
Chiaramente l'operazione di costruzione DB andra' fatta ad ogni cambiamento del sistema o se si vogliono opzioni diverse. (raramente uno le cambia)
E' meglio lasciare di default la costruzione ogni volta del DB (+ noob proof) o il contrario?
Qualunque commento e suggerimento e' ben accetto!
ciao
EDIT:penso per sett prox di rilasciare l'alpha1 _________________ while True:Gentoo() |
|
Back to top |
|
|
btbbass Apprentice
Joined: 15 Feb 2005 Posts: 287 Location: Asti o Torino
|
Posted: Sat Jul 16, 2005 9:15 am Post subject: |
|
|
xchris wrote: |
E' meglio lasciare di default la costruzione ogni volta del DB (+ noob proof) o il contrario?
Qualunque commento e suggerimento e' ben accetto!
ciao
|
Eh, caspita, sei davvero rapidissimo!
Complimenti!!
Senti per la questione dell'aggiornamento del db, praticamente dovrebbe essere aggiornato ogni qual volta si installa o si disinstalla un pacchetto -se ho capito bene-(grosso modo dovrebbero essere queste le azioni che comportano un cambiamento del sistema...)
Ma allora, per aggiornarlo solo quando serve, non si potrebbe controllare il log di emerge, e studiare un sistema che dica, per lo meno, se il sistema non è cambiato, con certezza... in caso di dubbio si potrebbe procedere con l'aggiornamento, mantenendo cmq elevate le prestazioni della zia... _________________ Chi dice che è impossibile non interrompa chi lo sta facendo
-Proverbio Cinese -
___________________________________ |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Sat Jul 16, 2005 9:45 am Post subject: |
|
|
si...
utilizzavo un sistema analogo con usetool.
Il punto e' che la parte onerosa e' il calcolo delle dipendenze...
e se anche non cambio il sistema (emerge.log intoccato) ma cambio le impostazioni di USEFLAGS (ovvero come le deve considerare) o il modo di recuperare le dipendenze (da Portage o da Local) cmq il calcolo deve essere fatto nuovamente.
Questo per dire che non credo valga la pena automatizzare il tutto.
Forse ha senso di default fargli rifare tutto ogni volta e per chi sa cosa sta facendo puo' fare il "load db"...
(cosi' sarebbe come Unclepine... e per chi sa cosa fa... puo' dargli una botta di velocita')
Ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
btbbass Apprentice
Joined: 15 Feb 2005 Posts: 287 Location: Asti o Torino
|
Posted: Sat Jul 16, 2005 9:57 am Post subject: |
|
|
xchris wrote: |
Questo per dire che non credo valga la pena automatizzare il tutto.
Forse ha senso di default fargli rifare tutto ogni volta e per chi sa cosa sta facendo puo' fare il "load db"...
Ciao |
Ah, è vero...
Non avevo pensato alle USE...
Si, penso che fargli rifare tutto sia la cosa migliore, in effetti...
Come dicevi tu, è + noob proof
Ciao _________________ Chi dice che è impossibile non interrompa chi lo sta facendo
-Proverbio Cinese -
___________________________________ |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Sat Jul 16, 2005 10:08 am Post subject: |
|
|
sono sempre in tempo per riconsiderare il tutto cmq..
poi cmq questa e' una cosa che va decisa nell'applicazione che userà la classe.
Sto facendo un po' di confronti con Unclepine che reputo abbastanza affidabile e sembra non sgarrare!
In + Auntmary si comporterà meglio con le SystemUse (che ziopino trattava in modo non perfetto)
Ora non so se incorporare la routine deep-unmerge direttamente nella classe....
In realta' gia' con gli strumenti base della classe e' un operazione semplice anche se magari non intuitiva.
Vedremo.
Sarebbe un metodo del genere:
deepunmerge(list_to_remove) -> elenco pacchetti rimovibili
Ci penso su..
Grazie per le osservazioni.!
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Tue Jul 19, 2005 4:04 pm Post subject: |
|
|
la classe funziona bene a quanto sembra...
non so se includere la procedura Unlinked (che restituisce i pkt zombie) nella classe o meno.
(in realta' con le info restituite dalla classe e' facile ricavarli..)
Ho provato per curiosità a fare una Gui Gtk...con wxpython (con wxglade)
Vi mostro qc ma come potete vedere i risultati sono abbstanza penosi per il momento
direi che faccio un po' schifo con le gui
http://www.xchris.net/download.php?file=screenshots/auntmary_lib_1.png
http://www.xchris.net/download.php?file=screenshots/auntmary_lib_2.png
cmq il concetto e' che e' semplice farle...se si conoscono le gui e la prg ad eventi.
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
masterbrian Guru
Joined: 13 Feb 2004 Posts: 461
|
Posted: Tue Jul 19, 2005 5:07 pm Post subject: |
|
|
Fai schifo con le gui?
Io direi che e' chiara e funzionale e poi l'hai realizzata in pochissimo tempo. Complimenti!
Riguardo all'idea di dividere il lavoro in una libreria che integra tutte le funzioni e un eseguibile che ne sfrutta solo alcune devo dire che e' ottima, cosi' hai il massimo della flessibilita' e puoi puntare anche sulla velocita'. Ancora complimenti, a mio avviso, il progetto promette molto bene. _________________ [img:f6b0c3bcba]http://www.danasoft.com/sig/MasterBrian.jpg[/img:f6b0c3bcba] |
|
Back to top |
|
|
Dhaki Guru
Joined: 16 Jun 2004 Posts: 325 Location: Ticino - CH
|
Posted: Tue Jul 19, 2005 6:17 pm Post subject: |
|
|
Dato che non sono ferrato ne in core ne in gui, volevo solo farti i miei complimenti per la tua velocità e precisione . Spero che una volta finita la zia venga inserita nel gentoolkit, secondo me te lo sei meritato ampiamente. |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Tue Jul 19, 2005 10:46 pm Post subject: |
|
|
grazie a tutti e due
la gui e' veramente provvisoria... quella finale se funzionerà al 100% sarà diversa. (ora ho qc problemino)
al momento quindi mi rimande da fare:
- sistemare la classe (poca roba inizialmente)
- finire lo script Auntmary (funzionalità simili a Unclepine)
- rifare la GUI
- scrivere un minimo di documentazione per la classe (sperando che qc si cimenti poi a provarla )
Una cosa...
credetemi che se sto facendo la Zia non è per avere l'onore di entrare in Gentoolkit.
(anche perche' sono sicuro che ci sarebbe sempre un motivo per non entrarci)
Questa cosa proprio non mi interessa affatto!
Quello che mi spinge a continuare con la Zia e' la pratica con Python (che non avevo ancora usato con le classi) ,la pratica con wxPython e la voglia di fornire qc di utile (anche se per pochi magari)
A presto!
Ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
Onip Advocate
Joined: 02 Sep 2004 Posts: 2912 Location: Parma (Italy)
|
Posted: Wed Jul 20, 2005 8:29 am Post subject: |
|
|
xchris wrote: | sperando che qc si cimenti poi a provarla |
Secondo me non farai fatica a trovare volontari.... _________________ Linux Registered User n. 373835
Titus Lucretius Carus, De Rerum Natura - Tantum religio potuit suadere malorum |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Wed Jul 20, 2005 8:38 am Post subject: |
|
|
Onip wrote: | xchris wrote: | sperando che qc si cimenti poi a provarla |
Secondo me non farai fatica a trovare volontari.... |
tu dici?
in realta' pensavo di estendere un po' la classe (in modo limitato) per ricavare info da portage in modo semplice e permettendo cosi' di fare tool in modo agevole...
secondo voi e' meglio lasciarla piccola con lo stretto necessario o mettergli poco di + per renderla + flessibile?
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
X-Drum Advocate
Joined: 24 Aug 2003 Posts: 2517 Location: ('Modica','Trieste','Ferrara') Italy
|
Posted: Wed Jul 20, 2005 9:04 am Post subject: |
|
|
xchris wrote: |
Una cosa...
credetemi che se sto facendo la Zia non è per avere l'onore di entrare in Gentoolkit.
(anche perche' sono sicuro che ci sarebbe sempre un motivo per non entrarci)
Questa cosa proprio non mi interessa affatto!
|
se cosi fosse la cosa nn mi turberebbe affatto, anzi!
riusciresti a colmare il vuoto che in questo momento esiste in portage
(inteso come portage + strumenti a suo supporto ufficiali)
il che mi renderebbe alquanto felice ^^ _________________ "...There are two sort of lies, lies and benchmarks..." |
|
Back to top |
|
|
xchris Advocate
Joined: 10 Jul 2003 Posts: 2824
|
Posted: Wed Jul 20, 2005 9:18 am Post subject: |
|
|
io ho dei dubbi forti...
io utilizzo funzioni di portage quasi per tutto ma di sicuro ci sarà qc cosa di non corretto al 100%.
Certo che se avessero documentato il tutto meglio. :S
Dopo le esperienze passate con i devel in chan Irc credetemi che non muovero' mezzo dito per entrare in gentoolkit.
(non vuole essere una critica.... quasi )
Che entri o non entri non e' affatto importante...
l'importante e' che il tutto giri per bene e tanto basta per esserne contento!
ciao _________________ while True:Gentoo() |
|
Back to top |
|
|
masterbrian Guru
Joined: 13 Feb 2004 Posts: 461
|
Posted: Wed Jul 20, 2005 5:27 pm Post subject: |
|
|
Onip wrote: | xchris wrote: | sperando che qc si cimenti poi a provarla |
Secondo me non farai fatica a trovare volontari.... |
Anzi ne hai gia' trovati _________________ [img:f6b0c3bcba]http://www.danasoft.com/sig/MasterBrian.jpg[/img:f6b0c3bcba] |
|
Back to top |
|
|
flocchini Veteran
Joined: 17 May 2003 Posts: 1124 Location: Milano, Italy
|
Posted: Thu Jul 21, 2005 12:22 am Post subject: |
|
|
io come al solito mi perdo i tuoi post... Beh dopo cozzepolenta la ziamaria non mi sorprende piu' di tanto come nome
Ottima l'idea, e' una lacuna di portage parzialmente colmata cn lo ziopino, se l'intenzione e' di farlo noob-proof speriamo riesca ad attirare nuove utenze
A disposizione per i test appena esce la prima relase _________________ ~~ Per amore della rosa si sopportano le spine... ~~ |
|
Back to top |
|
|
|