Repository 32bit  Forum
Repository 64bit  Wiki

[Risolto] Pacchetto slackware da rpm

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[Risolto] Pacchetto slackware da rpm

Messaggioda N1cuz » gio mar 29, 2012 12:47

Volevo fare un pacchetto .txz da un .rpm, non volevo usare il tool rpm2tgz perchè l'rpm mette tutto in /usr/share ed io volevo invece mettere tutto sotto /opt, ho fatto quindi uno slackbuild usando il tool rpm2cpio ecc... non mi chiaro però come creare i link simbolici al binario in /usr/bin, le icone in /usr/share/icons ecc.. Non posso farlo direttamente nello slackbuild, devo usare un doinst.sh immagino?
Ultima modifica di N1cuz il sab mar 31, 2012 17:58, modificato 1 volta in totale.
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda hashbang » gio mar 29, 2012 13:50

I link simbolici li puoi gestire così:
Mettiamo che il file pippo.jpg andrà in /usr/share/pixmaps e dovrà essere symlinkato in /opt/share/pixmaps

Nello SlackBuild (e quindi anche direttamente da terminale) dai:
Codice: Seleziona tutto
ln -sf /usr/share/pixmaps/pippo.jpg /path/temporaneo/di/pacchettizzazione/opt/share/pixmaps/pippo.jpg


In questo modo crei un link simbolico apparentemente corrotto (in quanto punta ad un file inesistente). Quando darai il makepkg esso si renderà conto che esiste un symlink ed aggiungerà al doinst.sh (creato al momento dallo stesso makepkg) la riga
Codice: Seleziona tutto
(cd /opt/share/pixmaps; rm pippo.jpg; ln -sf /usr/share/pixmaps/pippo.jpg)


La subshell si occuperà di eliminare il symlink corrotto e di inserire quello definitivo corretto. :)
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1833
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » gio mar 29, 2012 18:46

hashbang ha scritto:I link simbolici li puoi gestire così:
Mettiamo che il file pippo.jpg andrà in /usr/share/pixmaps e dovrà essere symlinkato in /opt/share/pixmaps

Nello SlackBuild (e quindi anche direttamente da terminale) dai:
Codice: Seleziona tutto
ln -sf /usr/share/pixmaps/pippo.jpg /path/temporaneo/di/pacchettizzazione/opt/share/pixmaps/pippo.jpg


In questo modo crei un link simbolico apparentemente corrotto (in quanto punta ad un file inesistente). Quando darai il makepkg esso si renderà conto che esiste un symlink ed aggiungerà al doinst.sh (creato al momento dallo stesso makepkg) la riga
Codice: Seleziona tutto
(cd /opt/share/pixmaps; rm pippo.jpg; ln -sf /usr/share/pixmaps/pippo.jpg)


La subshell si occuperà di eliminare il symlink corrotto e di inserire quello definitivo corretto. :)


Grazie mille hash (una volta eri atomix600 per caso?) odesso provo e ti faccio sapere l'esito...
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda hashbang » gio mar 29, 2012 18:51

la mia firma ha scritto:formerly known as atomix600

Stando alla mia firma, direi di si :D
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1833
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » gio mar 29, 2012 20:27

Per quanto riguarda i symlink tutto ok, ora l'unico problema che mi rimane è che non trova lo slack-desc, perchè lo cerca in root /slack-desc...
Codice: Seleziona tutto
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

ho controllato la directory di lavoro ed è corretta
Codice: Seleziona tutto
/home/nico/linuxqq                                                                                                   
cat: /slack-desc: No such file or directory                                                                           
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » gio mar 29, 2012 22:05

risolto prendendo spunto da uno slackbuild di alienbob:
Codice: Seleziona tutto
SRCDIR=`dirname $0`
[ "${SRCDIR:0:1}" == "." ] && SRCDIR=${CWD}/${SRCDIR}


Il problema rimane la creazione dei symlink, vengono creati e poi rimossi, vengono rimossi anche i file a cui dovrebbero linkare:
Codice: Seleziona tutto

Searching for symbolic links:
opt/linuxqq/bin/qq -> /usr/bin/qq
opt/linuxqq/share/applications/linuxqq.desktop -> /usr/share/applications/linuxqq.desktop
opt/linuxqq/share/tencent/qq/qq.png -> /usr/share/icons/qq.png                           

Making symbolic link creation script:
( cd opt/linuxqq/bin ; rm -rf qq )   
( cd opt/linuxqq/bin ; ln -sf /usr/bin/qq qq )
( cd opt/linuxqq/share/applications ; rm -rf linuxqq.desktop )
( cd opt/linuxqq/share/applications ; ln -sf /usr/share/applications/linuxqq.desktop linuxqq.desktop )
( cd opt/linuxqq/share/tencent/qq ; rm -rf qq.png )                                                   
( cd opt/linuxqq/share/tencent/qq ; ln -sf /usr/share/icons/qq.png qq.png )                           

It is recommended that you make these lines your new installation script.

Would you like to make this stuff the install script for this package
and remove the symbolic links ([y]es, [n]o)? y                       


Removing symbolic links:
removed `./opt/linuxqq/bin/qq'
removed `./opt/linuxqq/share/applications/linuxqq.desktop'
removed `./opt/linuxqq/share/tencent/qq/qq.png'           

Creating your new ./install/doinst.sh...


... Ci ributto un occhio
Ultima modifica di N1cuz il gio mar 29, 2012 22:08, modificato 1 volta in totale.
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » gio mar 29, 2012 22:06

hashbang ha scritto:
la mia firma ha scritto:formerly known as atomix600

Stando alla mia firma, direi di si :D

;)
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » gio mar 29, 2012 22:42

è proprio sbagliato il symlink, mi butta in /opt/linuxqq/bin/ il link a /usr/bin invece dell'opposto, e poi rimuove l'eseguibile, adesso aono anche abbastanza cottura tra l'altro:
Codice: Seleziona tutto
# link al menù
cd $PKG/opt/$PRGNAM/share/applications
ln -sf /usr/share/applications/linuxqq.desktop linuxqq.desktop
cd -
# link al binario eseguibile
cd $PKG/opt/$PRGNAM/bin
ln -sf /usr/bin/qq qq
cd -
# link all'icona
cd $PKG/opt/$PRGNAM/share/tencent/qq/
ln -sf /usr/share/icons/qq.png qq.png
cd -
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda hashbang » ven mar 30, 2012 8:55

N1cuz ha scritto:Per quanto riguarda i symlink tutto ok, ora l'unico problema che mi rimane è che non trova lo slack-desc, perchè lo cerca in root /slack-desc...
Codice: Seleziona tutto
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

ho controllato la directory di lavoro ed è corretta
Codice: Seleziona tutto
/home/nico/linuxqq                                                                                                   
cat: /slack-desc: No such file or directory                                                                           
La variabile $CWD l'hai dichiarata? Il fatto che non riconosca $CWD, rendendo di fatto il path /slack-desc, invece di $CWD/slack-desc, mi fa pensare a questo.
Se non l'hai dichiarata, metti questa dichiarazione:
Codice: Seleziona tutto
CWD=$(pwd)


Il problema rimane la creazione dei symlink, vengono creati e poi rimossi
makepkg li rimuove quando crea il pacchetto, se il parametro -l viene settato con l'argomento "y".
man 8 makepkg ha scritto:Options
-l, --linkadd y|n
If y, add any symbolic links found to the install script (doinst.sh) and delete them. This is the recommended action. If this option is not used, makepkg will prompt if symbolic links are found.


vengono rimossi anche i file a cui dovrebbero linkare
Questo è strano. Dopo aver creato il pacchetto, dai un:
Codice: Seleziona tutto
$ tar tJvf nomepacchetto.txz

e controlla se i file sono presenti.
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1833
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » ven mar 30, 2012 13:41

hashbang ha scritto:
N1cuz ha scritto:Per quanto riguarda i symlink tutto ok, ora l'unico problema che mi rimane è che non trova lo slack-desc, perchè lo cerca in root /slack-desc...
Codice: Seleziona tutto
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

ho controllato la directory di lavoro ed è corretta
Codice: Seleziona tutto
/home/nico/linuxqq                                                                                                   
cat: /slack-desc: No such file or directory                                                                           
La variabile $CWD l'hai dichiarata? Il fatto che non riconosca $CWD, rendendo di fatto il path /slack-desc, invece di $CWD/slack-desc, mi fa pensare a questo.
Se non l'hai dichiarata, metti questa dichiarazione:
Codice: Seleziona tutto
CWD=$(pwd)


Si l'avevo dichiarata, e non ho capito come mai il path è /slack-desc, sembra che pwd restituisca / ma non è così perchè ho controllato, lavora nella directory corrente...

Il problema rimane la creazione dei symlink, vengono creati e poi rimossi
makepkg li rimuove quando crea il pacchetto, se il parametro -l viene settato con l'argomento "y".
man 8 makepkg ha scritto:Options
-l, --linkadd y|n
If y, add any symbolic links found to the install script (doinst.sh) and delete them. This is the recommended action. If this option is not used, makepkg will prompt if symbolic links are found.


vengono rimossi anche i file a cui dovrebbero linkare
Questo è strano. Dopo aver creato il pacchetto, dai un:
Codice: Seleziona tutto
$ tar tJvf nomepacchetto.txz

e controlla se i file sono presenti.


Spariscono tutti i file a cui faccio (vorrei far) puntare i symlink nelle varie /usr/bin /usr/share/icons ecc...
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda hashbang » sab mar 31, 2012 9:13

N1cuz ha scritto:è proprio sbagliato il symlink, mi butta in /opt/linuxqq/bin/ il link a /usr/bin invece dell'opposto
Rileggendo il messaggio, direi che l'errore è giusto.
Hai sbagliato la sintassi di ln(1).
Se vuoi fare un symlink in /usr da /opt, devi fare il contrario.
Codice: Seleziona tutto
ln -sf /opt/$PRGNAM/share/applications/linuxqq.desktop $PKG/usr/share/linuxqq.desktop
ln -sf ln -sf /opt/PRGNAM/bin/qq $PKG/usr/bin/qq
ln -sf /opt/$PRGNAM/share/icons/qq.png $PKG/usr/share/icons/qq.png


vengono rimossi anche i file a cui dovrebbero linkare
A questo punto penso che ciò sia derivato dal fatto che hai sovrascritto i binari con i symlink, a causa della sintassi errata.

Offtopic: Al posto di dare cd -, puoi o usare il comando diretto come ho postato io oppure usare una subshell
Codice: Seleziona tutto
( cd quellochevuoi
  comandochevuoi )
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1833
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » sab mar 31, 2012 13:04

hashbang ha scritto:
N1cuz ha scritto:è proprio sbagliato il symlink, mi butta in /opt/linuxqq/bin/ il link a /usr/bin invece dell'opposto
Rileggendo il messaggio, direi che l'errore è giusto.
Hai sbagliato la sintassi di ln(1).
Se vuoi fare un symlink in /usr da /opt, devi fare il contrario.
Codice: Seleziona tutto
ln -sf /opt/$PRGNAM/share/applications/linuxqq.desktop $PKG/usr/share/linuxqq.desktop
ln -sf ln -sf /opt/PRGNAM/bin/qq $PKG/usr/bin/qq
ln -sf /opt/$PRGNAM/share/icons/qq.png $PKG/usr/share/icons/qq.png


vengono rimossi anche i file a cui dovrebbero linkare
A questo punto penso che ciò sia derivato dal fatto che hai sovrascritto i binari con i symlink, a causa della sintassi errata.

Offtopic: Al posto di dare cd -, puoi o usare il comando diretto come ho postato io oppure usare una subshell
Codice: Seleziona tutto
( cd quellochevuoi
  comandochevuoi )

Mammamia che cerebroleso!!! Non mi ero minimamente accorto di aver invertito la sintassi...
Adesso lo slackbuild è a posto, la cosa che non mi funziona e che non capisco è che scompattando l'rpm con
Codice: Seleziona tutto
rpm2cpio *.rpm | cpio -i

non mi estrae il binario eseguibile... mi sono accorto che il file dentro la directory /usr/bin/qq non è l'eseguibile ma è un link all'eseguibile che l'rpm metterebbe in /usr/share/Tencent/qq/ e che io non ho... Sto per caso sbagliando tool???
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » sab mar 31, 2012 13:13

Lascia stare sono veramente da galera! Ti ringrazio per l'aiuto, non avevo visto che l'eseguibile è in un'altra directory correttamente estratta dal tool, ovviamente avendo copiato sotto /opt la directory sbagliata non potevo avere l'eseguibile.... Grazie mille hash per la pazienza!
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda N1cuz » sab mar 31, 2012 14:14

Sto pacchetto è maledetto, installato con rpm2tgz, mette tutto sotto /usr/share e funziona bene, facendo il pacchetto mettendo tutto sotto /opt mi da questo errore:
Codice: Seleziona tutto
(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file               

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file               

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file               

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file               

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file               

(qq:22769): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file                   

(qq:22769): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file                   

(qq:22769): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file                   

(qq:22769): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file                   

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_new_subpixbuf: assertion `GDK_IS_PIXBUF (src_pixbuf)' failed

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_scale_simple: assertion `src != NULL' failed

(qq:22769): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file                   

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file               

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file

(qq:22769): GdkPixbuf-CRITICAL **: gdk_pixbuf_add_alpha: assertion `pixbuf != NULL' failed
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file
[14:54:14][TLOG][warn]res_db: error message-> unable to open database file

(qq:22769): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
^C
Avatar utente
N1cuz
Linux 2.4
Linux 2.4
 
Messaggi: 279
Iscritto il: dom ott 05, 2008 23:41
Località: Pieve a Nievole (PT)
Nome Cognome: Nicola Bartolomei
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: kde/lxde

Re: Pacchetto slackware da rpm

Messaggioda hashbang » sab mar 31, 2012 14:36

Prova a ricostruirlo facendo un symlink di *tutti* gli elementi del pacchetto, piazzandoli nelle posizioni originarie (/usr) e lasciando il contenuto a cui faranno riferimento in /opt.
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1833
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Prossimo

Torna a Slackware

Chi c’è in linea

Visitano il forum: Google [Bot] e 2 ospiti