http://slacky.eu/forum/viewtopic.php?f= ... 40#p347940
L'installazione prevede l'esecuzione di uno script bash che tra le altre cose copia un file nel caso in cui il sistema sia a 64bit. Vi riporto la banale operazione:
Codice: Seleziona tutto
brotherlpdwrapper=/usr/lib/cups/filter/brlpdwrapperHL2030
brotherlpdwrapper64=/usr/lib64/cups/filter/brlpdwrapperHL2030
chmod a+x $brotherlpdwrapper
if [ -e /usr/lib64/cups/filter ]; then
cp $brotherlpdwrapper $brotherlpdwrapper64
fi
Se il sistema è a 32 bit, la dir /usr/lib64/cups/filter non esisterà e quella copia non avverrà. Fine.
Un'opzione è quella di piazzare quelle operazioni nello SlackBuild, leggermente modificate in modo che la copia avvenga all'interno della directory di costruzione del pacchetto:
Codice: Seleziona tutto
TMP=/tmp/brother-hl2030
cd $TMP
[...]
brotherlpdwrapper=usr/lib/cups/filter/brlpdwrapperHL2030
brotherlpdwrapper64=usr/lib64/cups/filter/brlpdwrapperHL2030
chmod a+x $brotherlpdwrapper
if [ -e /usr/lib64/cups/filter ]; then
cp $brotherlpdwrapper $brotherlpdwrapper64
fi
In questo modo se lancio lo SlackBuild da un sistema a 64 bit ecco che il pacchetto creato sarà corretto se installato in un sistema a 64bit, perchè quella directory lib64 esiste e "installpkg" andrà a copiarvi dentro. Ma quello stesso pacchetto sarebbe problematico qualora si tentasse di installarlo su un sistema a 32bit, perchè installpkg tenterebbe di copiare il contenuto della dir lib64 sul sistema, il che non sarebbe corretto.
Su LQ mi consigliavano allora di sostituire alla copia, la creazione di un link simbolico da eseguire, non in fase di build, ma in fase di installazione del pacchetto attraverso il doinst.sh:
Codice: Seleziona tutto
# Create LPD-wrapper link for 64bit systems
#
brotherlpdwrapper64=usr/lib64/cups/filter/brlpdwrapperHL2030
if [ "$(uname -m)" = "x86_64" ]; then
[ ! -d /usr/lib64/cups/filter ] && mkdir /usr/lib64/cups/filter
( cd /usr/lib64/cups/filter
ln -sf /usr/lib/cups/filter/brlpdwrapperHL2030 brlpdwrapperHL2030
)
fi
Problema:
Cosa succede quando disinstallo il pacchetto da un sistema a 64bit?
Provando a me resta il link simbolico orfano:
Codice: Seleziona tutto
# ls -l /usr/lib64/cups/filter/brlpdwrapperHL2030
lrwxrwxrwx 1 root root 39 ott 29 11:58 /usr/lib64/cups/filter/brlpdwrapperHL2030 -> /usr/lib/cups/filter/brlpdwrapperHL2030
Il doinst.sh può creare collegamenti simbolici, files, directories ecc ecc. Però questa roba che scrive sul sistema sembra non venga "registrata", nel senso che quando poi si va a rimuovere il pacchetto viene cancellato solo ciò che ha scritto installpkg senza considerare gli ulteriori files, dirs, links creati dal doinst.sh.
Come fare allora per creare un pacchetto che alla disinstallazione lasci il sistema pulito senza dimenticarsi files in giro?
Come applicare la cosa al caso proposto in esempio?
Spero la sezione sia azzeccata, anche se non mi riferisco a pacchetti del repo di Slacky.
Grazie in anticipo!