[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.
Avatar utente
N1cuz
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

[Risolto] Pacchetto slackware da rpm

Messaggio da N1cuz »

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 31 mar 2012, 18:58, modificato 1 volta in totale.

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27

Re: Pacchetto slackware da rpm

Messaggio da hashbang »

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. :)

Avatar utente
N1cuz
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

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...

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27

Re: Pacchetto slackware da rpm

Messaggio da hashbang »

la mia firma ha scritto:formerly known as atomix600
Stando alla mia firma, direi di si :D

Avatar utente
N1cuz
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

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.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

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 29 mar 2012, 23:08, modificato 1 volta in totale.

Avatar utente
N1cuz
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

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.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

è 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 -

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27

Re: Pacchetto slackware da rpm

Messaggio da hashbang »

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.

Avatar utente
N1cuz
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

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...

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27

Re: Pacchetto slackware da rpm

Messaggio da hashbang »

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 )
[/offtopic]

Avatar utente
N1cuz
Linux 2.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

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 )
[/offtopic]
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.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

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.x
Linux 2.x
Messaggi: 333
Iscritto il: lun 6 ott 2008, 0:41
Nome Cognome: Nicola Bartolomei
Slackware: 14.1
Kernel: 4.3.3
Desktop: xfce4
Località: Pieve a Nievole (PT)

Re: Pacchetto slackware da rpm

Messaggio da N1cuz »

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

hashbang
Packager
Packager
Messaggi: 2021
Iscritto il: ven 4 giu 2010, 10:27

Re: Pacchetto slackware da rpm

Messaggio da hashbang »

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.

Rispondi