Pagina 1 di 1

Slackpkg: mi serve qualche delucidazione...

Inviato: mar 26 mag 2009, 21:41
da vheon
Salve a tutti... sono qui a chiedere il vostro aiuto per il programmino in oggetto... allora parto con la cosa che io non ne conoscevo l'esistenza, anche perchè prima di installare slackware mi sono un pò informato, e tutti dicevano che slackware era brutto e cattivo perchè non aveva un gestore dei pacchetti come apt che ha un repository aggiornato, e che risolve le dipendenze da solo... ma questo non mi aveva preoccupato in quanto sicuramente se uno installa un pacchetto deve sapere cosa sta facendo e deve sapere cosa gli serve per quella determinata cosa... ma a quanto ho visto ora non è così in quanto da quello che ho capito, con questo strumento, che non ho trovato ne sul libro ufficiale (tradotto) di slackware ne su s4d, fa tutto ciò che fa apt tranne il fatto che usiamo dei repository non ufficiali della distribuzione, e che le dipendenze vengono soddisfatte dal repository (penso che ogni pacchetto sul repository sia già con le dipendenze soddisfatte o simile) e non lo stesso programma... ho capito bene?

Re: Slackpkg: mi serve qualche delucidazione...

Inviato: mer 27 mag 2009, 0:32
da joe
Intanto: http://www.slackpkg.org/documentation.html

L'ultima volta che ho usato slackpkg emi pare dalla documentazione che non sia cambiato nulla:

- non supporta la risoluzione automatica delle dipendenze
- si appoggia unicamente al repository ufficiale o ad un suo mirror (solo http o ftp).

Quindi: la gestione delle dipendenze su slackware è tradizionlamente demandata all'utente.
Apt, pacman, yum ecc ecc che gestiscono i pacchetti su altre distribuzioni supportano la risoluzione automatica delle dipendenze.
La differenza sta nel come sono fatti i pacchetti slackware:
ufficialmente tali pacchetti non contengono alcuna informazione circa le dipendenze necessarie per far girare il software che siinstalla.
Invece i pacchetti .deb o .rpm prevedono questa caratteristica.

Su slackware puoi installare tutto quelleo che vuoi, salvo poi scoprire che un software non gira perchè magari gli manca qualche libreria installata.
Slackpkg non fa eccezione, non aggiunge nulla ai pkgtools ufficiali e di fatti penso che si il tool quanto più vicino ai dettami di Pat.
Slackpkg serve solo a collegarsi ad un repo ufficiale remoto e scaricare il pacchetto, poi passa la palla ai pkgtools...

Su altre distribuzioni che prevedono la risoluzione automatica delle dipendenze, per installare un pacchetto devi installare anche le dipendenze, ricordo parecchie imprecazioni le prime volte che armeggiavo con gli rpm...poi penso cisia la possibilità di forzare il sistema, ma in quei sistemi è meglio affidarsi ai tools come yum o aptget.

Ti chiederai, ma come fa un nuvo arrivato ad usare slackware. Semplice:
se lanci un eseguibile cche non può girare perchè manca una libreria ottieni un errore che ti dice quale file manca.
Noto il file mancante devi cercare a quale pacchetto tale file appartiene e poi installare il pacchetto.

Il comando ldd in questi casi è molto utile: preso l'eseguibile /usr/bin/pippo che non funziona perchè gli mancano diverse librerie, se dai

ldd /usr/bin/pippo

ottieni tutte le librerie che necessita pippo per funzionare, ed alcune risulteranno "not found" ovvero non presenti...sono quelle che devi installare.
Quindi per capire cosa manca basta:

ldd /usr/bin/pippo |grep not

E ottieni la lista ci ciò che manca.
Il passo successivo sta nel capire a quale pacchetto appartiene ciascun file indicato dall'output precedente.
Se il pacchetto mancante appartiene al repository ufficiale, c'è un motore di ricerca a questo indirizzo: http://packages.slackware.it/
Se il pacchetto mancante appartiene al repo slacky o a quello ufficiale, c'è un motore di ricerca messo in piedi di recente da teox99: http://www.teoxonline.com/utils/sse/
A breve direttamente su slacky.eu dovrebbe aggiunta questa possibilità al motore di ricerca.

in tali motori, tu metti il nome de flie che ti manca, e loro ti ritornano il nome del pacchetto .tgz in cui sta quel file.

C'è anche un metodo alternativo:
I files MANIFEST.bz2 presenti nei repositories (ufficiali e non) sono files di testo contenenti i nomi di tutti i files presenti nel repository (non i pacchetti, prprio i files....): quindi ti basta usare grep dopo avere scompattato tali files crcando il pattern di ricerca del tuo file mancante e trovi a quale pacchetto appartiene.

Determinato il pacchetto: lo installi e ripeti l'operazione per gli altri files macanti. Così risolvi le dipendenze a mano, senza la necessità di conoscere molto del sistema.


Detto questo, ci sono strumenti che si allontanano dalla tradizione slackware e funzionano tipo yum o apt, si tratta di slaptget e swaret...magari ce ne sono anche altri....non so. Comunque questi supportano le dipendenze ma mi pare che anche i pacchetti creati nei repo debbano essere concepiti per supportare questi tool ovvero avere al loro interno informazioni sui pacchetti da installare per soddisfare le dipendenze richieste dal programma.
Non ho mai usato programmi del genere quindi non ti so dire di più, aspetta se mai altre risposte.

Tornando a slackpkg, ha il limite che usa solo il repo ufficiale quindi se devi utilizzare pacchetti di slacky per esempio non serve.
Ho sempre trovato scomodo dovermi collegare via web al repository di slacky e cercare il pacchetto così anche perchè non ho una connessione decente e comunque lo trovo scomodo così uso uno script fatto in casa che consulta i files PACKAGES.TXT presenti nei repo e cerca un pattern di ricerca che gli dò come argomento. Da anni lo uso con soddisfazione e devo ringraziare l'aiuto che mi diede tale David Paleino che ancora frequenta il newsgroup icoli.
Più volte ho deciso di mettere mano a quello script per migliorarlo, perchè poi alla fine l'ho scritto io e ora noto alcune ineleganze. Però poi ha sempre fatto il suo lavoro e quindi non ho mai avuto l'esigenza reale di migliorarlo.

Per la questione dipendenze ti cito anche sto link ad una recente discussione:
viewtopic.php?f=4&t=28728&start=15

Re: Slackpkg: mi serve qualche delucidazione...

Inviato: mer 27 mag 2009, 2:26
da ildiama
joe ha scritto: Il passo successivo sta nel capire a quale pacchetto appartiene ciascun file indicato dall'output precedente.
questo passo lo puoi fare con slackpkg. Metti che l'output del comando precedente sia
libpluto.so.1.2.3 not found
puoi sapere a che pacchetto appartiene facendo

Codice: Seleziona tutto

slackpkg search libpluto
e slackpkg ti elenca i pacchetti in cui libpluto esiste.

PS: io uso slackpkg per aggiornare/installare/cercare i pacchetti ufficiali e devo dire che mi trovo molto bene.

Ciao

Re: Slackpkg: mi serve qualche delucidazione...

Inviato: mer 27 mag 2009, 2:32
da Blallo
io ti consiglio slackyd, leggero, funziona da console, e puoi colelgarlo sia al repo di slacky che a quello ufficiale (basta che dai uno slackyd -U e ti cerca tutti gli aggiornamenti che però poi devi installare a mano con upgradepkg)

Re: Slackpkg: mi serve qualche delucidazione...

Inviato: mer 27 mag 2009, 8:16
da Ansa89
C'è anche slapt-get (che è quello che uso io).

Re: Slackpkg: mi serve qualche delucidazione...

Inviato: mer 27 mag 2009, 11:22
da joe
ildiama ha scritto:

Codice: Seleziona tutto

slackpkg search libpluto
e slackpkg ti elenca i pacchetti in cui libpluto esiste.

PS: io uso slackpkg per aggiornare/installare/cercare i pacchetti ufficiali e devo dire che mi trovo molto bene.
Questo non lo sapevo....fammi provare un comando estremo:

Codice: Seleziona tutto

$ slackpkg lib
[....]
[ installed ] - libvorbis-1.2.0-i486-1
[uninstalled] - libwmf-0.2.8.4-i486-3
[uninstalled] - libwmf-docs-0.2.8.4-noarch-3
[uninstalled] - libwnck-2.18.3-i486-1
[uninstalled] - libwpd-0.8.14-i486-1
[ installed ] - libxml2-2.6.31-i486-2
[uninstalled] - libxslt-1.1.22-i486-1
[  upgrade  ] - lzo-2.03-i486-1sl --> lzo-2.02-i486-1
[uninstalled] - mhash-0.9.9-i486-1
[uninstalled] - mm-1.4.2-i486-2
[uninstalled] - mpfr-2.3.1-i486-1
[ installed ] - ncurses-5.6-i486-3
[ installed ] - neon-0.26.4-i486-1
[uninstalled] - netpbm-10.35.22-i486-1
[ installed ] - pango-1.20.0-i486-1
[uninstalled] - pcre-7.6-i486-1
[uninstalled] - pilot-link-0.12.3-i486-2
[...]
bello... :D
indica le librerie installate, aggiornate e non presenti....non lo spaevo.
Sarebbe interessante, prendere slackpkg "as is" e adeguarlo anche ad altri repositories, però non so sarà scritto in C (e chi cicapisce...). Lo script che uso io cerca solo i pacchetti non i singoli files e non verfica che un paccetto sia presente o meno... tuttavia avendolo scritto di pugno praticamente personalmente mi da una certa sicurezza, perchè ho la possibilità di mettervi mano facilmente avendone una certa confidenza.
Di slackyd ne avevo sbirciato una discussione sul forum, ma non lo conosco....vista la community da cui proviene direi che potrebbe essere il caso di dargli un'occhiata.

Re: Slackpkg: mi serve qualche delucidazione...

Inviato: mer 27 mag 2009, 11:28
da conraid
joe ha scritto: Sarebbe interessante, prendere slackpkg "as is" e adeguarlo anche ad altri repositories, però non so sarà scritto in C
è scritto in bash

Re: Slackpkg: mi serve qualche delucidazione...

Inviato: mer 27 mag 2009, 15:35
da vheon
Grazie Joe, e grazie a tutti... devo solo provare ora... certo a pensare che ho scoperto slackpkg nel topic per installare kde 4.2 è da ridere...

Re: Slackpkg: mi serve qualche delucidazione...

Inviato: mer 27 mag 2009, 15:54
da joe
Ah, grazie dell'info... :D
Dando un'occhiata di sfuggita all'eseguibile, ci siaccorge che l'update del repository avviene attraverso una funzione chiamata "updatefilelist", tale funzione è definita in un file chiamato /usr/libexec/slackpackg/core-functions.sh.

Questa funzione scarica il Changelog.txt e valuta se è il caso di eseguire l'update.
Eventualmente scarica i files MANIFEST FILELIST.TXT CECKSUMS.md5 PACKAGES.TXT.

Quindi alla fine il tool si basa su questi Files per reperire informazioni generli sui pacchetti e sui files presenti sul repo.
Non so se è così semplice adeguare il tool al repo di slacky o ad altri e poi visto che vi è anche slackyd, per quanto riguarda slacky non vi è necessità direi.

Comunque resta il fatto che essendo uno script, ha il vantaggio di essere comprensibile anche a chi non conosce linguaggi più imporanti...
Questo è un fatto rilevante per chi volesse mettere mano alla creazione di uno script simile.
A presto :)