Creazione pacchetti slackware

Postate qui se avete consigli per migliorare i pacchetti disponibili in questo sito o se avete problemi con installazione, funzionamento o altro.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il nome del pacchetto.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
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
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Creazione pacchetti slackware

Messaggio da joe »

Sul wiki si trovano 3 documenti circa la pacchettizzazione, l'utilizzo di slackbuilds e la spiegazione degli standard corretti per slackware.
Ho qualche dubbio sulla documentazione...oggi ho dato un man hier e leggo che per esempio la documentazione andrebbe un /usr/share/doc invece che in /usr/doc, idem per il man.
Inoltre anche per quanto riguarda i permessi leggendo un pezzo di S4d.pdf mi sono creato un po' di confusione rispetto a quanto affermano le guide del wiki.
Fino a Slackware 10.2, il «pacchetto perfetto alla Slack» voleva che i binari (contenuti in /bin, /usr/bin
o /sbin, /usr/sbin e /usr/X11R6/bin) fossero proprietà di rootXin. Questi permessi erano pertanto ripri-
stinati (dal momento che essi erano invece proprietà di rootXroot) col comando: hown E rootXin
GpkgGusrGin. Facevano eccezione i binari dei pacchetti da collocare nelle subdirectory di Gopt (come
GoptGkdeGin oppure GoptGopenoffieForgPFHGprogrm), che restavano proprietà di rootXroot.
Da Slackware 11.0 invece questa posizione è stata ritenuta deprecata: tutti gli eseguibili restano infatti
proprietà di rootXroot. Del resto, a parte alcune remote motivazioni storiche relative ai primi sistemi
GNU/Linux, non c'è nessuna ragione pratica o di sicurezza per cui essi debbano appartente a rootXin
Se i permessi, come dovrebbe, sono già di rootXroot, non serve dunque modificare nulla.
Ecco perchè mi chiedo ora...volendo farmi un pacchetto...
Ritenete che vi sia una documentazione un po' più ufficiale delle altre in rete, sulle convenzioni della pacchettizzazione slackware?
Patrick non dice nulla in merito?
Insomma sono un po' disorientato e vi sarei grato se poteste spendere due parolein merito. Grazie in anticipo e saluti :D

Avatar utente
urka58
Linux 3.x
Linux 3.x
Messaggi: 543
Iscritto il: mer 7 dic 2005, 23:29

Re: Creazione pacchetti slackware

Messaggio da urka58 »

I permessi sui files vanno impostati a root:root.
Le directory /usr/share/doc|man sono links a /usr/doc|man credo per questioni compatibilità. Per la verità non ho mai indagato..
Qui si sostiene che debbano andare in /usr/doc|man
http://www.wowarea.com/italiano/linux/filesystem.htm
Ciao

Avatar utente
mohaa
Linux 1.x
Linux 1.x
Messaggi: 181
Iscritto il: mar 4 mar 2008, 8:52
Slackware: 12.1
Kernel: 3
Desktop: Gnome2
Distribuzione: Gentoo
Località: Francia

Re: Creazione pacchetti slackware

Messaggio da mohaa »

Forse hai già letto questo :
http://www.slacky.eu/wikislack/index.ph ... venzionali
Da poco, lo standard dei permessi è stato cambiato da root:bin a root:root, e la doc non è stata aggiornata su questo punto :)
Per man pages e la documentazione dei pacchetti, è esattamente come lo dice urka58
Le directory /usr/share/doc|man sono links a /usr/doc|man
Alcuni soft ti permetterono di impostare la struttura delle directory : ad esempio, per man pages c'è l'opzione --mandir=/xxxx

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: Creazione pacchetti slackware

Messaggio da sardylan »

Un mio slackbuild tipo potrebbe essere questo.
Si tratta dello slackbuild per i driver ATI Open Source

Codice: Seleziona tutto

#!/bin/bash
#
# ATi Video cards Open Source Drivers
# http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/
#
# Packager:	Luca Cireddu
#		luca@lucacireddu.it
#		http://www.lucacireddu.it
#


# Config variables:
PKGNAME="xf86-video-ati"
VERSION="6.10.0"
ARCH="$(arch)"
BUILD="3srd"
SRC_FILENAME="$PKGNAME-$VERSION.tar.bz2"
DN_URL="http://cgit.freedesktop.org/xorg/driver/$PKGNAME/snapshot/$SRC_FILENAME"


# Standard destinations folders:
BLD_PREFIX="/usr"
BLD_CONFIG="/etc"
BLD_LIBRARIES="/usr/lib"
BLD_MANDIR="/usr/man"
BLD_INFODIR="/usr/info"


# Dirs variables:
CWD="$(pwd)"
TMP="/tmp/tgz_build-$PKGNAME"
PKG="$TMP/package"


# Build GCC flags change destination dirs for your arch:
if [ "$ARCH" = "i386" ]; then
	SLKCHOST="i386-pc-linux-gnu"
	SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
	SLKCHOST="i486-pc-linux-gnu"
	SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
	SLKCHOST="i686-pc-linux-gnu"
	SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
	SLKCHOST="x86_64-pc-linux-gnu"
	SLKCFLAGS="-O2 -pipe"
	BLD_LIBRARIES="/usr/lib64"
fi


# Cleaning and/or creating build folders:
rm -rf $PKG >> /dev/null 2>> /dev/null
rm -rf $TMP >> /dev/null 2>> /dev/null
mkdir -p $PKG
mkdir -p $TMP


# Untar the source archive and chown and chmod its files:
if [ ! -e "$CWD/$SRC_FILENAME" ]; then
	(cd $CWD; wget $DN_URL)
fi
cd $TMP
tar xjvf "$CWD/$SRC_FILENAME"
cd $PKGNAME-$VERSION || exit 1
chown -Rv root:root .
chmod -R u+w,go+r-w,a-s .


# Starting the configurator:
sh autogen.sh || exit 1
CHOST="$SLKCHOST" \
CXXFLAGS="$SLKCFLAGS" \
CPPFLAGS="-I/usr/include/X11/dri -I/usr/include/drm" \
CFLAGS="$SLKCFLAGS" \
./configure \
--disable-static \
--enable-shared \
--enable-dri \
--disable-exa \
--prefix=$BLD_PREFIX \
--sysconfdir=$BLD_CONFIG \
--libdir=$BLD_LIBRARIES \
--mandir=$BLD_MANDIR \
--infodir=$BLD_INFODIR \
--build=$ARCH-slackware-linux || exit 1


# Build and install:
make || exit 1
make install DESTDIR=$PKG || exit 1


# Strip binaries:
(
	cd $PKG
	find  | xargs file | sed -n "/ELF.*executable/b PRINT;/ELF.*shared object/b PRINT;d;:PRINT s/\(.*\):.*/\1/;p;" | xargs strip --strip-unneeded 2> /dev/null
)


# Compress and link manpages, if any:
if [ -d $PKG/usr/man ]; then
	( cd $PKG/usr/man
		for manpagedir in $(find . -type d -name "man*") ; do
			( cd $manpagedir
				for eachpage in $( find . -type l -maxdepth 1) ; do
					ln -s $( readlink $eachpage ).gz $eachpage.gz
					rm $eachpage
				done
				gzip -9 *.*
			)
		done
	)
fi


# Compress info files, if any:
if [ -d $PKG/usr/info ]; then
	(
		cd $PKG/usr/info
		rm -f dir
		gzip -9 *
	)
fi


# Add a documentation directory:
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION
cp -a AUTHORS COPYING INSTALL* LICENSE NEWS README VERSION $PKG/usr/doc/$PKGNAME-$VERSION 2>/dev/null


# Move doc from /usr/share/doc to /usr/doc:
if [ -d $PKG/usr/share/doc ]; then
	(
		cd $PKG/usr
		mv share/doc/$PKGNAME*/* doc/$PKGNAME-$VERSION;
		rmdir -p share/doc/$PKGNAME*/;
	)
fi


# Make Slackware package info:
mkdir -p $PKG/install
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/slack-desc > $PKG/usr/doc/$PKGNAME-$VERSION/slack-desc
cat $CWD/$PKGNAME.SlackBuild > $PKG/usr/doc/$PKGNAME-$VERSION/$PKGNAME.SlackBuild
if [ -f "$CWD/doinst.sh" ]; then
	cat $CWD/doinst.sh > $PKG/install/doinst.sh
fi

cd $PKG
chown root:root * -Rv
makepkg -l y -c n $CWD/$PKGNAME-$VERSION-$ARCH-$BUILD.tgz

(
	cd $CWD
	md5sum $PKGNAME-$VERSION-$ARCH-$BUILD.tgz > $PKGNAME-$VERSION-$ARCH-$BUILD.tgz.md5
	cat slack-desc > $PKGNAME-$VERSION.txt
)

case "$1" in
	"cleanup")
		rm -rf $PKG >> /dev/null 2>> /dev/null
		rm -rf $TMP >> /dev/null 2>> /dev/null
	;;
esac
Man pages in /usr/man
Documenti vari in /usr/doc
Info pages in /usr/info
Configurazioni in /etc
Librerie a 32 in /usr/lib
Librerie a 64 in /usr/lib64

Questo è più o meno lo schema base che seguo...

Avatar utente
m0rdr3d
Linux 2.x
Linux 2.x
Messaggi: 404
Iscritto il: dom 24 dic 2006, 13:40
Slackware: Slackware64-current
Kernel: 3.4.*
Desktop: KDE 4.8.2

Re: Creazione pacchetti slackware

Messaggio da m0rdr3d »

Se dai anche un'occhiata a http://www.slackbuilds.org trovi ulteriore documentazione e anche un template di slackbuild molto utile.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Creazione pacchetti slackware

Messaggio da conraid »

sardylan ha scritto:

Codice: Seleziona tutto

# Build GCC flags change destination dirs for your arch:
if [ "$ARCH" = "i386" ]; then
	SLKCHOST="i386-pc-linux-gnu"
	SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
	SLKCHOST="i486-pc-linux-gnu"
	SLKCFLAGS="-O2 -march=i486 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
	SLKCHOST="i686-pc-linux-gnu"
	SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
	SLKCHOST="x86_64-pc-linux-gnu"
	SLKCFLAGS="-O2 -pipe"
	BLD_LIBRARIES="/usr/lib64"
fi


--libdir=$BLD_LIBRARIES \
In questo modo i pacchetti a 32 bit però hanno

Codice: Seleziona tutto

--libdir=
Non ti conviene fare
BLD_LIBRARIES="64"
--libdir=/usr/lib${BLD_LIBRARIES }

E poi dovresti anche usare LDFLAGS

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: Creazione pacchetti slackware

Messaggio da sardylan »

conraid ha scritto: [...] In questo modo i pacchetti a 32 bit però hanno

Codice: Seleziona tutto

--libdir=
[...]
No, perché prima dell'if c'è

Codice: Seleziona tutto

BLD_LIBRARIES="/usr/lib"
conraid ha scritto: [...] E poi dovresti anche usare LDFLAGS
E' vero... Per quello non ci avevo ancora pensato!! Cosa dovrei inserirci esattamente ?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Creazione pacchetti slackware

Messaggio da conraid »

giorni fa ho postato un mio template
comunque per esempio guarda dovecot
http://repository.slacky.eu/slackware-1 ... SlackBuild

queste cose le ho copiate dagli SlackBuild di AlienBob, che a me piacciono di più degli altri

non avevo visto le variabili predefinite

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Creazione pacchetti slackware

Messaggio da joe »

Ok, vi ringrazio molto delle risposte e degli esempi sicuramente utili.

Ma da quanto avete detto devo dedurre che Patrick Volkerding non ha mai rilasciato un documento che spiegasse quale fosse la struttura della distribuzione relativamente alla creazione di pacchetti slackware spiegando dove mettere questo o quel pezzo di un software?

Ho letto qualcosa sullo slackbook (aka slackware linux essential) ma vi è una descrizione troppo genereica della struttura del file system. Non scende in dettagli anche se in in effetti fa una digressione circa la directory /usr/doc, luogo in cui trovare informazioni dopo le manpages. Apro una parentesi: ho visto che stanno lavorando alla stesura di una revisione della seconda versione del libro...dicono che dovrebbe uscire a metà 2009 o giù di lì, sapete se è già accessibile una versione beta giusto per darci un'occhiata?

Tornando alla directoy della documentazione:
Da quanto ho capito anche sbirciando direttamente gli slackbuilds di Pat, cui comunque aderiscono quelli di slacky.eu...la documentazione viene messa in
/usr/man/man*/nome-versione
/usr/doc/nome-versione

Questo, a quanto vedo dalle vostre risposte aderisce alla tradizionnale slack-way ma non basta da solo a rendere la distribuzione FHS compliant, che invece mi pare di capire che risulti aderente (o no?) alle specifiche degli standard introdotti circa "l'anatomia" del file system linux.
Per capirne di più hjo visitato il sito:
http://www.pathname.com/fhs/
E ho dato un'occhiata al documento:
http://www.pathname.com/fhs/pub/fhs-2.3 ... ENDENTDATA

In pratica dice che lo standard fhs prevede la presenza della dir /usr/share o di link opportuni
Inoltre dice che dentro tale directory andrebbe messa sia doc/ che man/ ma anche in questo caso la definizione è piuttosto elastica visto che tira in ballo anche la possibilità di infilarci dei link simbolici.

Quindi alla fine direi che grazie ai link simbolici sia la tradizione slackware che l'aderenza a fhs vengono rispettate.
A riprova metto anche un ls -l di /usr/share/doc:

Codice: Seleziona tutto

$ ls -l /usr/share/doc     
lrwxrwxrwx 1 root root 6 2008-06-08 21:07 /usr/share/doc -> ../doc
Insomma, direi che la faccenda circca la documentazione è chiarita, i permessi degli eseguibili dalle vostre precedenti risposte mi confermate che non sono root:bin ma root:root. Quindi direi che un'idea in più me la sono fatta.
Certo mi resta un po' strano il fatto che non vi sia o io non sia riuscito a trovare un pezzo di documentazione ufficiale di pat che descriva e spieghi le linee guida della creazione dei pacchetti. Se mi sbaglio, benvengano precisazioni su questo aspetto.
Grazie ancora a quanti hanno partecipato e vorranno proseguire la chiaccerata.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Creazione pacchetti slackware

Messaggio da conraid »


Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Creazione pacchetti slackware

Messaggio da joe »

Grazie del link conraid.
A dire la verità già da tempo ho quel segnalibro nel browser. Comunque l'avermelo segnalato mi è utile se non altro perchè probabilmente ritieni quella guida migliore di altre.

La mia domanda e scusate se insisto. Era un'altra, abbastanza precisa e tuttora senza una risposta netta. Mi permetto senza voler fare polemica di riproporre la domanda. Mi farebbe comodo solo una conferma.

Esiste o non esiste un documento ufficiale di Mr. Volkerding o stretti suoi collaboratori che detti regole di aderenza alla pacchettizzazione classica slackware...qualcosa di agggiornato ad eventuali recenti cambiamenti di "stile"?
Mi basta una qualsiasi conferma: sì, no, non so.
Se comunque qualcuno è in grado di dire di più sulla mancanza di documentazione ufficiale in merito, benvenga.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Creazione pacchetti slackware

Messaggio da conraid »

No, non esiste un documento di Pat
Quella guida non è che la ritengo migliore di altre, ma è fatta dal team che affianca Pat

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Creazione pacchetti slackware

Messaggio da joe »

Bene, in effetti ho visto che chi ha scritto quel documento fa parte del team a contatto con volkerding.
grazie anche della conferma circa l'assenza di documentazione ufficiale in merito.
Saluti! :-D

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3986
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: Creazione pacchetti slackware

Messaggio da joe »

Ho notato, se non ho commeso errori io, una incongruenza tra la guida consigliata sopra e slackware 4 dummies.
Anche in S4d.pdf viene spiegato come pacchettizzare il software e si specifica di sistemare i permessi dei sorgenti prima di procedere.
Anche nella guida sopracitata si parla di questo aspetto e anche in una ulteriore guida presente nel "nostro" wiki:
http://www.slacky.eu/wikislack/index.ph ... _Slackware

Partiamo dalla guida indicata da conraid:
# Change ownership and permissions if necessary
# This may not be needed in some source tarballs, but it never hurts
chown -R root:root .
chmod -R u+w,go+r-w,a-s .
In S4d.pdf viene consigliato di trasformare i permessi secondo la seguente tabellina:

Codice: Seleziona tutto

----------------------------
777    |                   |
775    |                   |
771    |      755          |
611    |                   |
555    |                   |
------ |     ------------  |
666    |                   |
664    |                   |
600    |       644         |
444    |                   |
400    |                   |
----------------------------

Ora se applichiamo quanto prescrive la guida di slackwiky.org alla colonna sinistra della tabellina sopra avremmo:

Codice: Seleziona tutto

777 = rwxrwxrwx --> rwxr-xr-x = 755
775 = rwxrwxr-x --> rwxr-xr-x = 755
771 = rwxrwx--x --> rwxr-xr-x = 755
611 = rw---x--x --> rw-r-xr-x = 644 ********
555 = r-xr-xr-x --> rwxr-xr-x = 755

666 = rw-rw-rw- --> rw-r--r-- = 644
664 = rw-rw-r-- --> rw-r--r-- = 644
600 = rw------- --> rw-r--r-- = 644
444 = r--r--r-- --> rw-r--r-- = 644
400 = r-------- --> rw-r--r-- = 644
Se non ho commesso errori o ommesso di considerare aspetti a me forse non chiari, le cose non tornano in un punto:
i files con permessi 611 stando a S4d.pdf dovrebbero diventare 755, mentre secondo il documento di slackwiki.org diventerebbero 644.

Chi ha ragione?

PS. non penso sia un aspetto fondamentale, ma tanto per togliermi dubbi....

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Creazione pacchetti slackware

Messaggio da conraid »

Al limite diventano 655
E' difficile trovare qualcosa con permessi di esecuzioni al gruppi, a tutti e non al proprietario
E comunque essendo root nel gruppo root funziona ugualmente

Comunque per esempio Pat usa questa notazione

Codice: Seleziona tutto

find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 600 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;
find . -perm 400 -exec chmod 644 {} \;
find . -perm 440 -exec chmod 644 {} \;
find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 511 -exec chmod 755 {} \;
find . -perm 711 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
anche se puoi trovare

Codice: Seleziona tutto

find . -perm 664 -exec chmod 644 {} \;
find . -perm 600 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;
find . -perm 400 -exec chmod 644 {} \;
find . -perm 440 -exec chmod 644 {} \;
find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 511 -exec chmod 755 {} \;
find . -perm 711 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
ed altre ancora
in alcuni pacchetti anche niente.
Ogni pacchetto è diverso dall'altro

ma poi per alcuni pacchetti mantiene le impostazioni degli altri, come per cryptsetup di AlienBob o ntfs-3g preso da SBo che usano il metodo descritto nel wiki

Rispondi