[Risolto] Pacchetto slackware da rpm
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.
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.
- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
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 18:58, modificato 1 volta in totale.
-
- Packager
- Messaggi: 1966
- Iscritto il: ven giu 04, 2010 10:27
- Nome Cognome: Luca De Pandis
- Distribuzione: macOS 10.13.3
- Località: Lecce / Bergamo / Milano
- Contatta:
Re: Pacchetto slackware da rpm
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:
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
La subshell si occuperà di eliminare il symlink corrotto e di inserire quello definitivo corretto.
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.

- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
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 rigaCodice: 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...
-
- Packager
- Messaggi: 1966
- Iscritto il: ven giu 04, 2010 10:27
- Nome Cognome: Luca De Pandis
- Distribuzione: macOS 10.13.3
- Località: Lecce / Bergamo / Milano
- Contatta:
Re: Pacchetto slackware da rpm
la mia firma ha scritto:formerly known as atomix600
Stando alla mia firma, direi di si

- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
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...
ho controllato la directory di lavoro ed è corretta
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
- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
risolto prendendo spunto da uno slackbuild di alienbob:
Il problema rimane la creazione dei symlink, vengono creati e poi rimossi, vengono rimossi anche i file a cui dovrebbero linkare:
... Ci ributto un occhio
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 23:08, modificato 1 volta in totale.
- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
hashbang ha scritto:la mia firma ha scritto:formerly known as atomix600
Stando alla mia firma, direi di si

- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
è 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 -
-
- Packager
- Messaggi: 1966
- Iscritto il: ven giu 04, 2010 10:27
- Nome Cognome: Luca De Pandis
- Distribuzione: macOS 10.13.3
- Località: Lecce / Bergamo / Milano
- Contatta:
Re: Pacchetto slackware da rpm
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.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 è correttaCodice: Seleziona tutto
/home/nico/linuxqq
cat: /slack-desc: No such file or directory
Se non l'hai dichiarata, metti questa dichiarazione:
Codice: Seleziona tutto
CWD=$(pwd)
makepkg li rimuove quando crea il pacchetto, se il parametro -l viene settato con l'argomento "y".Il problema rimane la creazione dei symlink, vengono creati e poi rimossi
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.
Questo è strano. Dopo aver creato il pacchetto, dai un:vengono rimossi anche i file a cui dovrebbero linkare
Codice: Seleziona tutto
$ tar tJvf nomepacchetto.txz
e controlla se i file sono presenti.
- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
hashbang ha scritto: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.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 è correttaCodice: Seleziona tutto
/home/nico/linuxqq
cat: /slack-desc: No such file or directory
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...
makepkg li rimuove quando crea il pacchetto, se il parametro -l viene settato con l'argomento "y".Il problema rimane la creazione dei symlink, vengono creati e poi rimossiman 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.Questo è strano. Dopo aver creato il pacchetto, dai un:vengono rimossi anche i file a cui dovrebbero linkareCodice: 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...
-
- Packager
- Messaggi: 1966
- Iscritto il: ven giu 04, 2010 10:27
- Nome Cognome: Luca De Pandis
- Distribuzione: macOS 10.13.3
- Località: Lecce / Bergamo / Milano
- Contatta:
Re: Pacchetto slackware da rpm
Rileggendo il messaggio, direi che l'errore è giusto.N1cuz ha scritto:è proprio sbagliato il symlink, mi butta in /opt/linuxqq/bin/ il link a /usr/bin invece dell'opposto
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
A questo punto penso che ciò sia derivato dal fatto che hai sovrascritto i binari con i symlink, a causa della sintassi errata.vengono rimossi anche i file a cui dovrebbero linkare
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 )
- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
hashbang ha scritto:Rileggendo il messaggio, direi che l'errore è giusto.N1cuz ha scritto:è proprio sbagliato il symlink, mi butta in /opt/linuxqq/bin/ il link a /usr/bin invece dell'opposto
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.pngA questo punto penso che ciò sia derivato dal fatto che hai sovrascritto i binari con i symlink, a causa della sintassi errata.vengono rimossi anche i file a cui dovrebbero linkare
Offtopic: Al posto di dare cd -, puoi o usare il comando diretto come ho postato io oppure usare una subshellCodice: 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???
- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
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!
- N1cuz
- Linux 2.x
- Messaggi: 333
- Iscritto il: lun ott 06, 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
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
-
- Packager
- Messaggi: 1966
- Iscritto il: ven giu 04, 2010 10:27
- Nome Cognome: Luca De Pandis
- Distribuzione: macOS 10.13.3
- Località: Lecce / Bergamo / Milano
- Contatta:
Re: Pacchetto slackware da rpm
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.