<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.slacky.eu/wikislack/skins/common/feed.css?303"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Slacky.eu - Pagine più recenti [it]</title>
		<link>http://www.slacky.eu/slacky/Speciale:PaginePi%C3%B9Recenti</link>
		<description>Da Slacky.eu.</description>
		<language>it</language>
		<generator>MediaWiki 1.20.3</generator>
		<lastBuildDate>Sat, 18 May 2013 10:02:40 GMT</lastBuildDate>
		<item>
			<title>Dual Boot UEFI: Slackware 14.0 e Windows 7</title>
			<link>http://www.slacky.eu/slacky/Dual_Boot_UEFI:_Slackware_14.0_e_Windows_7</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Dual_Boot_UEFI:_Slackware_14.0_e_Windows_7</guid>
			<description>&lt;p&gt;Eberoth: Creata pagina con '==Introduzione==  Lo scopo di questa guida è quello di descrivere una procedura che permetta di installare Slackware 14.0 su un computer con OS Windows 7 installato su partiz...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduzione==&lt;br /&gt;
&lt;br /&gt;
Lo scopo di questa guida è quello di descrivere una procedura che permetta di installare Slackware 14.0 su un computer con OS Windows 7 installato su partizioni GPT e UEFI Boot.&lt;br /&gt;
&lt;br /&gt;
In rete si trovano altre guide di questo tipo, ma la maggior parte richiede di ricreare l'immagine di boot del kernerl di installazione usando una versione diversa dalla 3.2.29 di default; cosa che presume l'accesso ad un'altro computer con GNU/Linux. Qui invece vedremo come ovviare alle mancanze del kernerl di default ed ottenere comunque un sistema avviabile.&lt;br /&gt;
&lt;br /&gt;
===Disclaimer===&lt;br /&gt;
&lt;br /&gt;
Questo articolo è basato sulla mia esperienza personale e non è detto che funzioni in tutti i casi; se non sapete cosa vogliano dire le parole MBR, UEFI, Bootloader e/o non conoscete la procedura per compilare un kernel personalizzato, vi invito a leggere le relative documentazioni prima di seguire questa guida.&lt;br /&gt;
&lt;br /&gt;
: Inoltre, vi consiglio di fare un backup dei dati personali (e di creare i DVD di ripristino di Windows7) prima di fare una qualunque delle operazioni qui riportate: la perdita di tali dati non è da escludere.&lt;br /&gt;
&lt;br /&gt;
:: Questa guida coprirà solo la procedura per Slackware64, in quanto tutti i sistemi UEFI sono ormai equipaggiati con processori con architettura a 64bit.&lt;br /&gt;
&lt;br /&gt;
==Preparare gli strumenti==&lt;br /&gt;
&lt;br /&gt;
===Cosa serve:===&lt;br /&gt;
&lt;br /&gt;
* L'immagine .iso del DVD di installazione di Slackware 14.0 o una copia locale del relativo albero del repository;&lt;br /&gt;
* I sorgenti di una versione del Kernel Linux superiore alla 3.3;&lt;br /&gt;
* Un pendrive USB di dimensioni adeguate a contenere la directory Slackware64 del DVD di installazione ed un'ulteriore partizione di 200MB;&lt;br /&gt;
* [http://elilo.sourceforge.net/ eLILO];&lt;br /&gt;
* [http://sourceforge.net/projects/refind/ rEFInd];&lt;br /&gt;
* Un software capace di creare una tabella delle partizioni di tipo GPT sulla pendrive e di creare partizioni di tipo vfat (FAT32). (Io ho usato gparted da una live che avevo sottomano, ma va bene anche lo strumento &amp;quot;Gestione Disco&amp;quot; di Windows)&lt;br /&gt;
&lt;br /&gt;
===Preparare il supporto per l'installazione===&lt;br /&gt;
&lt;br /&gt;
Purtroppo, non è possibile installare Slackware direttamente dal DVD, perché finiremmo con l'ottenere un sistema non avviabile, ammesso che il nostro BIOS UEFI riconosca ed avvii l'immagine del kernerl d'installazione in legacy mode (MBR).&lt;br /&gt;
&lt;br /&gt;
Cosa fare dunque?&lt;br /&gt;
&lt;br /&gt;
Bisogna formattare una pendrive USB, usando un partition table di tipo GPT, creando due partizioni vfat: una di 200MB ed un'altra che occupa il restante spazio libero.&lt;br /&gt;
&lt;br /&gt;
Nella prima partizione, che da qui in poi chiamerò sdb1 per comodità, creamo l'albero delle directory /EFI/BOOT/ che ci servirà per come &amp;quot;sede&amp;quot; per il nostro bootloader.&lt;br /&gt;
&lt;br /&gt;
Una volta scaricato [http://downloads.sourceforge.net/project/elilo/elilo/elilo-3.14/elilo-3.14-all.tar.gz elilo-3.14-all.tar.gz] estraiamo il contenuto dell'archivio e copiamo in /EFI/BOOT/ il file elilo-3.14-x86_64.efi col nome di BOOTX64.EFI.&lt;br /&gt;
&lt;br /&gt;
Nella stessa directory creeremo il file elilo.conf :&lt;br /&gt;
  prompt&lt;br /&gt;
 timeout=50&lt;br /&gt;
 default=install&lt;br /&gt;
 &lt;br /&gt;
 image=bzImage&lt;br /&gt;
   label=install&lt;br /&gt;
   initrd=initrd.img&lt;br /&gt;
   append=&amp;quot;load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 SLACK_KERNEL=huge.s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Inoltre, apriamo l'immagine del DVD di installazione&lt;br /&gt;
&lt;br /&gt;
 #mount -o loop slackware64-14.0.iso /mnt/cdrom&lt;br /&gt;
&lt;br /&gt;
E copiamo in /EFI/BOOT/ i file:&lt;br /&gt;
 /mnt/cdrom/kernels/huge.s/bzImage&lt;br /&gt;
 /mnt/cdrom/isolinux/initrd.img&lt;br /&gt;
&lt;br /&gt;
Per comodità, scarichiamo anche [http://downloads.sourceforge.net/project/refind/0.4.7/refind-bin-0.4.7.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Frefind%2F&amp;amp;ts=1354651556&amp;amp;use_mirror=netcologne refind-bin-0.4.7.zip] e copiamo il contenuto dell'archivio in /BOOT/.&lt;br /&gt;
&lt;br /&gt;
Nella seconda partizione, sdb2, copiamo la directory&lt;br /&gt;
&lt;br /&gt;
 /mnt/cdrom/Slackware64&lt;br /&gt;
&lt;br /&gt;
e l'archivio con i sorgenti del kernel.&lt;br /&gt;
&lt;br /&gt;
==Installazione==&lt;br /&gt;
&lt;br /&gt;
A questo punto abbiamo tutto quello che ci serve per installare Slackware, riavviamo quindi il computer con la pendrive inserita.&lt;br /&gt;
&lt;br /&gt;
All'avvio dell'ambiente di installazione, facciamo il login come root e prepariamo le nostre partizioni usando gdisk o gfdisk.&lt;br /&gt;
&lt;br /&gt;
Per i fini di questo esempio, supporremo che l'hdd sia così partizionato:&lt;br /&gt;
&lt;br /&gt;
  Number  Size        Type        Name&lt;br /&gt;
    1     200.0 MiB   vfat        EFI system partition&lt;br /&gt;
    2     128.0 MiB   ?           Microsoft reserved part (Windows Bootloader)&lt;br /&gt;
    3     120.0 GiB   NTFS        Basic data partition (Windows System)&lt;br /&gt;
    4     2.0   GiB   Linux/Swap  swap&lt;br /&gt;
    5     80.0  GiB   Linux       /&lt;br /&gt;
    6     729.0 GiB   Linux       /home&lt;br /&gt;
&lt;br /&gt;
Sono tutte partizioni principali: GPT permette di superare il limite di 4 partizioni imposto da MBR.&lt;br /&gt;
&lt;br /&gt;
Procediamo quindi con l'installare il sistema normalmente in sda5, e montiamo, per motivi che saranno chiari più tardi, la partizione ESP sda1 in /boot/efi .&lt;br /&gt;
&lt;br /&gt;
Saltiamo la configurazione di LILO in quanto non lo useremo e complicherebbe le cose.&lt;br /&gt;
&lt;br /&gt;
Al termine della procedura di condigurazione, usciamo dal setup ma non riavviamo il computer: abbiamo ancora qualche passo per rendere avviabile la nostra installazione.&lt;br /&gt;
&lt;br /&gt;
==Post Installazione==&lt;br /&gt;
&lt;br /&gt;
Facciamo un chroot nel sistema appena installato&lt;br /&gt;
&lt;br /&gt;
 #chroot /mnt&lt;br /&gt;
&lt;br /&gt;
e montiamo nuovamente la partizione della pendrive contenente elilo&lt;br /&gt;
&lt;br /&gt;
#mount /dev/sdb1 /mnt/tmp&lt;br /&gt;
&lt;br /&gt;
a questo punto, dobbiamo copiare il kernel appena installato in una sottodirectory della ESP assieme con il .efi di elilo ed un apposito file elilo .conf:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /boot/efi.d/EFI/Linux/&lt;br /&gt;
 # cp /boot/vmlinuz-huge-3.2.29 /boot/efi/EFI/Linux&lt;br /&gt;
 # cp /mnt/tmp/EFI/BOOT/BOOTX64.EFI /boot/efi/EFI/Linux&lt;br /&gt;
&lt;br /&gt;
Volendo, possiamo anche usare l'immagine generic e creando un apposito initrd.gz da copiare anch'esso nella directory precedente:&lt;br /&gt;
&lt;br /&gt;
 # cp /boot/vmlinuz-generic-3.2.29 /boot/efi/EFI/Linux&lt;br /&gt;
 # cp /boot/initrd.gz /boot/efi/EFI/Linux&lt;br /&gt;
&lt;br /&gt;
a questo punto non ci resta che creare un elilo.conf adeguato nella stessa directory. Le opzioni di configurazione di eLILO sono molto simili a quelle di LILO, quindi non dovrebbe essere difficile da gestire, in ogni caso, questo è un elilo.conf funzionante (il mio):&lt;br /&gt;
&lt;br /&gt;
 prompt&lt;br /&gt;
 timeout=50&lt;br /&gt;
 default=generic&lt;br /&gt;
 &lt;br /&gt;
 image=vmlinuz-generic-3.2.29&lt;br /&gt;
   label=generic&lt;br /&gt;
   initrd=initrd.gz&lt;br /&gt;
   read-only&lt;br /&gt;
   root=/dev/sda5&lt;br /&gt;
 &lt;br /&gt;
 image=vmlinug-huge-3.2.29&lt;br /&gt;
   label=huge&lt;br /&gt;
   read-only&lt;br /&gt;
   root=/dev/sda5&lt;br /&gt;
&lt;br /&gt;
A questo punto avremmo finito. Non occorre lanciare altri comandi: elilo non deve essere aggiornato come lilo ad ogni modifica, basta copiare immagine del kernel e initrd nella direcotry, editare il file elilo.conf e riavviare.&lt;br /&gt;
&lt;br /&gt;
Facile no?&lt;br /&gt;
&lt;br /&gt;
Invece no: alcuni BIOS UEFI (come il mio) hanno dei bootloader a dir poco scadenti che rendono l'aggiunta manuale di nuove opzioni a dir poco difficile (io ancora non so come fare, e ci ho provato per un intero pomeriggio).&lt;br /&gt;
&lt;br /&gt;
Per risolvere questo problema, possiamo usare l'ottimo rEFInd, il cui script di installazione crea automaticamente una nuova voce UEFI nel BIOS.&lt;br /&gt;
&lt;br /&gt;
Quindi, andiamo dentro la directory /mnt/tmp/refind/ ed eseguiamo lo script &lt;br /&gt;
 &lt;br /&gt;
 # ./install.sh&lt;br /&gt;
&lt;br /&gt;
A questo punto, riavviando il sistema, ci ritroveremo davanti ad un menu grafico contenente almeno due opzioni: Windows e Linux (con tanto di icone).&lt;br /&gt;
&lt;br /&gt;
rEFInd, infatti, ad ogni avvio effettua una scansione della ESP alla ricerca di file terminanti con l'estensione .efi e le presenta come opzioni di boot.&lt;br /&gt;
&lt;br /&gt;
Tuttavia, possiamo fare di più ed evitare di passare da eLILO: dalla versione 3.3 in poi, il kernel Linux possiede la capacità di &amp;quot;autoavviarsi&amp;quot; una volta invocato da un bootmanager come rEFInd.&lt;br /&gt;
&lt;br /&gt;
Possiamo quindi compilare i sorgenti che abbiamo scaricato in precedenza, direttamente in ambiente chroot o dopo il primo avvio, con l'accortezza di attivare l'opzione efi_stub&lt;br /&gt;
&lt;br /&gt;
 Processor Type and Features -&amp;gt; EFI Runtime Service Support -&amp;gt; EFI Stub Support&lt;br /&gt;
 CONFIG_EFI_STUB=yes&lt;br /&gt;
 CONFIG_CMDLINE_BOOL=yes&lt;br /&gt;
 CONFIG_CMDLINE=yes&lt;br /&gt;
&lt;br /&gt;
Una volta compilato il kernel, create una sottodirectory apposita nell'ESP, ad esempio:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /boot/efi/EFI/Slackware&lt;br /&gt;
&lt;br /&gt;
e copiateci dentro l'immagine del kernel con eventuali initrd:&lt;br /&gt;
&lt;br /&gt;
 # cp arch/x86_64/boot/bzImage /boot/efi/EFI/Slackware/vmlinuz-$VERSION.efi&lt;br /&gt;
 # cp /boot/initrd.gz /boot/efi/EFI/Slackware/initrd-$VERSION.gz&lt;br /&gt;
&lt;br /&gt;
:: Importante da sapere è che, nel caso si voglia creare un initrd, occorre includervi il modulo vfat, o il bootloader del kernel non sarà in grado di leggere l'immaggine nell'ESP.&lt;br /&gt;
&lt;br /&gt;
:: rEFInd scansiona la ESP alla ricerca di files che corrispondano al pattern *.efi e, se uno di questi files contiene anche &amp;quot;vmlinuz&amp;quot; allora cerca l'initrd con una parte $VERSION corrispondente. Tutto in automatico.&lt;br /&gt;
&lt;br /&gt;
Ancora una volta, per aggiungere altre opzioni al boot, basta copiare immagini del kernel e initrd con i criteri sopra riportati nella stessa subdirectory dell'ESP o in una nuova: rEFInd la troverà automaticamente.&lt;br /&gt;
&lt;br /&gt;
Se vogliamo passare dei parametri aggiuntivi al kernel (quelli che di solito mettevamo della riga append='' di lilo.conf), ci basterà creare un file linux.conf nella stessa directory in cui si trova la relativa immagine vmlinuz.efi e queste verranno rilevate dall'efi_stub in fase di avvio.&lt;br /&gt;
&lt;br /&gt;
linux.conf deve essere composto da una sola riga con le varie opzioni separate da spazi.&lt;br /&gt;
&lt;br /&gt;
Spero che questa guida vi sia stata utile.&lt;br /&gt;
&lt;br /&gt;
==Fonti Esterne==&lt;br /&gt;
&lt;br /&gt;
[http://www.rodsbooks.com/efi-bootloaders/elilo.html Rodsbooks eLILO]&lt;br /&gt;
&lt;br /&gt;
[http://www.rodsbooks.com/refind/installing.html Rodsbooks rEFInd]&lt;br /&gt;
&lt;br /&gt;
[http://docs.slackware.com/howtos:slackware_admin:installing_on_uefi_hardware?s SlackDocs: Installing on UEFI hardware]&lt;/div&gt;</description>
			<pubDate>Tue, 04 Dec 2012 21:45:20 GMT</pubDate>			<dc:creator>Eberoth</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Dual_Boot_UEFI:_Slackware_14.0_e_Windows_7</comments>		</item>
		<item>
			<title>Redmine e apache via fcgi</title>
			<link>http://www.slacky.eu/slacky/Redmine_e_apache_via_fcgi</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Redmine_e_apache_via_fcgi</guid>
			<description>&lt;p&gt;Targzeta: Creata pagina con '&amp;lt;!-- Per http://www.slacky.eu/wikislack/index.php?title=Redmine_e_apache_via_fcgi --&amp;gt;  Category: Ufficio_e_Web = Introduzione = In questo articolo vedremo come installare ...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Per http://www.slacky.eu/wikislack/index.php?title=Redmine_e_apache_via_fcgi --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Ufficio_e_Web]]&lt;br /&gt;
= Introduzione =&lt;br /&gt;
In questo articolo vedremo come installare Redmine sulla Slackware (testato su Slackware 14.0 e 13.37 con gli accorgimenti riportati in seguito) e come configurare il server apache (httpd) in modo da renderlo accessibile via fcgi.&lt;br /&gt;
&lt;br /&gt;
Redmine salva i propri dati su di un database e può gestire diversi tipi di DBMS ma, dato che Slackware ha come DBMS di defaul MySQL, noi useremo quest'ultimo.&lt;br /&gt;
&lt;br /&gt;
= Installare Redmine =&lt;br /&gt;
L'installazione avviene senza problemi seguendo la [http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Installation-procedure guida ufficiale]. Di seguito, comunque, riporto un sunto di quello che va fatto per installarlo su Slackware.&lt;br /&gt;
&lt;br /&gt;
== Step 0: installare fcgi e mod_fcgi ==&lt;br /&gt;
Per poter usare httpd via fcgi (Fast CGI) va installata nel sistema sia la libreria '''fcgi''' che il modulo '''mod_fcgid''' (per httpd stesso).&lt;br /&gt;
&lt;br /&gt;
=== fcgi versione 2.4.1-SNAP-0910052249 ===&lt;br /&gt;
Il progetto è molto vecchio (2009), ma [http://www.fastcgi.com/ gli sviluppatori] dicono che le modifiche sono minime perché il protocollo è stabile. Il sorgente lo trovate [http://www.fastcgi.com/dist/ qui], ma noi creeremo il pacchetto per Slackware grazie ai comandi seguenti (l'ultimo va eseguito come root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
mkdir fcgi&lt;br /&gt;
cd fcgi&lt;br /&gt;
wget http://www.fastcgi.com/dist/fcgi-2.4.1-SNAP-0910052249.tar.gz&lt;br /&gt;
wget http://www.slacky.eu/wikislack/upload/1/13/Fcgi-SlackBuild.tar.bz2&lt;br /&gt;
tar -xf Fcgi-SlackBuild.tar.bz2&lt;br /&gt;
sh fcgi.SlackBuild&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il pacchetto verrà creato nella directory corrente (''/tmp/fcgi'').&lt;br /&gt;
&lt;br /&gt;
=== mod_fcgid versione 2.3.7 ===&lt;br /&gt;
Per controllare l'uscita di versioni più recenti si veda [https://httpd.apache.org/download.cgi#mod_fcgid questo link]. Di seguito, i comandi necessari alla costruzione del pacchetto per Slackware (al solito, l'ultimo va eseguito come root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
mkdir mod_fcgid&lt;br /&gt;
cd mod_fcgid&lt;br /&gt;
wget http://apache.panu.it//httpd/mod_fcgid/mod_fcgid-2.3.7.tar.bz2&lt;br /&gt;
wget http://www.slacky.eu/wikislack/upload/8/8a/Mod_fcgid-SlackBuild.tar.bz2&lt;br /&gt;
tar -xf Mod_fcgid-SlackBuild.tar.bz2&lt;br /&gt;
sh mod_fcgid.SlackBuild&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Il pacchetto verrà creato nella directory corrente (''/tmp/mod_fcgid'').&lt;br /&gt;
&lt;br /&gt;
Una volta installato il pacchetto, va anche detto al server httpd di usarlo:&lt;br /&gt;
 echo 'LoadModule fcgid_module lib64/httpd/modules/mod_fcgid.so' &amp;gt;&amp;gt; /etc/httpd/httpd.conf&lt;br /&gt;
{{Information&lt;br /&gt;
|Note&lt;br /&gt;
|Una volta lanciato il server apache, noterete nel suo log ''/var/log/httpd/error_log'', se il modulo è stato caricato correttamente, una riga simile a questa:&lt;br /&gt;
 AH00489: Apache/2.4.3 (Unix) PHP/5.4.7 mod_fcgid/2.3.7 configured&lt;br /&gt;
Alternativamente, si può controllare tra i moduli caricati da apache con:&lt;br /&gt;
 httpd -M | grep fcgid&lt;br /&gt;
dovrebbe comparire la riga:&lt;br /&gt;
 fcgid_module (shared)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Step 1: scaricare Redmine ==&lt;br /&gt;
Scaricate redmine dal [http://www.redmine.org/projects/redmine/wiki/Download sito ufficiale] ed estraete l'archivio nella directory che preferite. Tenete conto che la sotto-directory ''public'' (contenuta nell'archivio) è quella che verrà gestita dal server web. Per questa wiki, l'archivio è stato scaricato nella directory ''/tmp'' ed è stato estratto sotto ''/var/www/htdocs/'' con i comandi (per Redmine 2.1.4):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
wget http://rubyforge.org/frs/download.php/76578/redmine-2.1.4.tar.gz&lt;br /&gt;
cd /var/www/htdocs/&lt;br /&gt;
tar -xf /tmp/redmine-2.1.4.tar.gz&lt;br /&gt;
mv redmine-2.1.4 redmine&lt;br /&gt;
chown root.root -R redmine&lt;br /&gt;
chmod go-w -R redmine/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Information&lt;br /&gt;
|Note&lt;br /&gt;
|Visto che abbiamo installato redmine sotto ''/var/www/htdocs/'', tutti i comandi vanno eseguiti con i diritti dell'utente root. In realtà, se si installa redmine in una directory accessibile all'utente non amministratore, i comandi possono anche essere eseguiti senza l'ausilio del superutente.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Step 2: installare i requisiti ==&lt;br /&gt;
Installate il pacchetto '''bundler''' per Ruby eseguendo, come root:&lt;br /&gt;
 gem install bundler&lt;br /&gt;
{{Warning&lt;br /&gt;
|Slackware 13.37 o precedenti&lt;br /&gt;
|Il pacchetto '''bundler''' necessita di una versione recente di '''gem''' non installata nel pacchetto Slackware di Ruby. Si può comunque provare ad installare la versione di Ruby presente nella Slackware 14.0 usando direttamente lo SlackBuild di Pat. Prima di compilare ed installare Ruby, comunque, va compilata e installata anche la libreria '''libyaml''', sempre presenta nella Slackware 14.0. Ecco i link agli SlackBuild ufficiali:&lt;br /&gt;
* [http://slackware.org.uk/slackware/slackware-14.0/source/l/libyaml/ libyaml]&lt;br /&gt;
* [http://slackware.org.uk/slackware/slackware-14.0/source/d/ruby/ ruby]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Information&lt;br /&gt;
|Note&lt;br /&gt;
|Dato che redmine necessita di tutta una serie di dipendenze per Ruby di cui è difficile trovare i pacchetti Slackware, qui useremo il package manager per Ruby di default, '''gem'''. Tutti i pacchetti installati, comunque, saranno inseriti da '''gem''' nella directory (su una slackware64-14.0) ''/usr/lib64/ruby/gems/1.9.1/gems''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Ora, assicuratevi di essere all'interno della directory di redmine:&lt;br /&gt;
 cd /var/www/htdocs/redmine&lt;br /&gt;
&lt;br /&gt;
Tramite '''bundler''' e il file '''Gemfile''' fornito con redmine, si possono installare tutte le dipendenze necessarie a quest'ultimo. Prima però bisogna eseguire il comando:&lt;br /&gt;
 echo &amp;quot;gem 'fcgi'&amp;quot; &amp;gt; Gemfile.local&lt;br /&gt;
per dire a '''bundler''' che deve installare anche il pacchetto '''fcgi''' (per Ruby). Ora siamo pronti ad installare il tutto tramite il comando:&lt;br /&gt;
 bundle install --without development test postgresql sqlite&lt;br /&gt;
le opzioni dicono a '''bundler''' di non installare i pacchetti necessari al ramo di sviluppo, a quello di test, e di ignorare anche i pacchetti necessari ai DBMS PostgreSQL e SQLite.&lt;br /&gt;
&lt;br /&gt;
== Step 3: preparare il database MySQL ==&lt;br /&gt;
Ora dobbiamo creare sia un database che un utente per MySQL a cui garantire pieno accesso. Come suggerito nella [http://www.redmine.org/projects/redmine/wiki/RedmineInstall#MySQL guida ufficiale] creiamo il database '''redmine''' e l'utente '''redmine''' (con password '''redminepass''') via mysql:&lt;br /&gt;
 mysql -u'root' -p'root_pass'&lt;br /&gt;
 create database redmine character set utf8;&lt;br /&gt;
 create user 'redmine'@'localhost' identified by 'redminepass';&lt;br /&gt;
 grant all privileges on redmine.* to 'redmine'@'localhost';&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
== Step 4: configurare redmine all'uso del database ==&lt;br /&gt;
Per dire a redmine di usare il database creato al passo precedente bisogna creare il file ''config/database.yml'' con all'interno le seguenti righe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
production:&lt;br /&gt;
  adapter: mysql2&lt;br /&gt;
  database: redmine&lt;br /&gt;
  host: localhost&lt;br /&gt;
  username: redmine&lt;br /&gt;
  password: redminepass&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Possiamo farlo eseguendo il comando seguente:&lt;br /&gt;
 echo -e 'production:\n  adapter: mysql2\n  database: redmine\n  host: localhost\n  username: redmine\n  password: redminepass' &amp;gt; config/database.yml&lt;br /&gt;
&lt;br /&gt;
== Step 5: generare il secret token ==&lt;br /&gt;
Questo passo genera una chiave random usata da '''Rails''' (il framework Ruby usato da Redmine) per codificare i cookie di sessione:&lt;br /&gt;
 rake generate_secret_token&lt;br /&gt;
&lt;br /&gt;
== Step 6: creare le tabelle del database ==&lt;br /&gt;
Ora create le tabelle di redmine con il comando:&lt;br /&gt;
 RAILS_ENV=production rake db:migrate&lt;br /&gt;
{{Information&lt;br /&gt;
|Note&lt;br /&gt;
|La variabile di ambiente RAILS_ENV serve a dire a '''Rails''' quale ramo deve usare, quello che abbiamo configurato noi (vedi file ''config/database.yml'') è quello di produzione (c'è anche quello di test e di sviluppo).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Step 7: popolare le tabelle con i dati di default ==&lt;br /&gt;
 RAILS_ENV=production REDMINE_LANG=it rake redmine:load_default_data&lt;br /&gt;
{{Information&lt;br /&gt;
|Note&lt;br /&gt;
|REDMINE_LANG=it dice a redmine di installare la traduzione in lingua italiana.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Step 8: permessi a file e directory ==&lt;br /&gt;
Ora dobbiamo garantire l'accesso al server httpd ad alcuni file e directory:&lt;br /&gt;
 mkdir -p tmp/pdf public/plugin_assets&lt;br /&gt;
 chown -R apache.apache files log tmp public/plugin_assets&lt;br /&gt;
&lt;br /&gt;
== Step 9: testare il tutto ==&lt;br /&gt;
Per controllare se redmine è stato installato correttamente, basta eseguire il comando:&lt;br /&gt;
 ruby script/rails server webrick -e production&lt;br /&gt;
e poi andare all'indirizzo http://localhost:3000/&lt;br /&gt;
&lt;br /&gt;
== Step 10: login ==&lt;br /&gt;
Nello step 7 redmine ha creato anche un utente amministratore di default con le seguenti credenziali:&lt;br /&gt;
* login: admin&lt;br /&gt;
* password: admin&lt;br /&gt;
&lt;br /&gt;
= Usare fcgi =&lt;br /&gt;
Una volta installato redmine, possiamo &amp;quot;integrarlo&amp;quot; nel server web apache ('''httpd''') via '''fcgi'''. Prima assicuriamoci di aver seguito lo [[#Step_0:_installare_fcgi_e_mod_fcgi|Step 0]] del paragrafo precedente e di aver installato via '''gem''' il pacchetto '''fcgi''' anche per Ruby ([[#Step_2:_installare_i_requisiti|Step 2]] del paragrafo precedente).&lt;br /&gt;
&lt;br /&gt;
Prima di eseguire i passi seguenti, assicuriamoci ancora una volta di stare nella directory in cui abbiamo decompresso redmine:&lt;br /&gt;
 cd /var/www/htdocs/redmine&lt;br /&gt;
&lt;br /&gt;
== Step 0: preparare redmine e apache ==&lt;br /&gt;
Redmine viene fornito di uno script FCGI che esegue il vero processo. Lo script si chiama ''public/dispatch.fcgi.example'', rinominiamolo (o copiamolo) eliminando l'estensione ''.example''.&lt;br /&gt;
 mv public/dispatch.fcgi.example public/dispatch.fcgi&lt;br /&gt;
&lt;br /&gt;
Ora che abbiamo il wrapper fcgi, abbiamo anche bisogno di istruire apache in modo che lo esegua. Anche per questo redmine ha un file htaccess di esempio, ''public/htaccess.fcgi.example''. Rinominiamo anche questo:&lt;br /&gt;
 mv public/htaccess.fcgi.example public/.htaccess&lt;br /&gt;
{{Information&lt;br /&gt;
|Note&lt;br /&gt;
|Se date uno sguardo al file ''public/.htaccess'' appena spostato, noterete che ci sono una serie di '''IfModule'''. Questo perché redmine può essere eseguito via fcgi sia con il modulo per apache '''mod_fcgid''' (il nostro caso) sia con '''mod_fastcgi'''. Per l'ultimo caso si veda [http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Apache_to_run_Redmine#mod_fastcgi la guida sul sito di redmine]. Per le nostre esigenze, il file ''public/.htaccess'' potrebbe essere anche riscritto nel modo seguente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# General Apache options&lt;br /&gt;
AddHandler fcgid-script .fcgi&lt;br /&gt;
&lt;br /&gt;
Options +FollowSymLinks +ExecCGI&lt;br /&gt;
&lt;br /&gt;
RewriteEngine On&lt;br /&gt;
&lt;br /&gt;
RewriteRule ^$ index.html [QSA]&lt;br /&gt;
RewriteRule ^([^.]+)$ $1.html [QSA]&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
&lt;br /&gt;
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]&lt;br /&gt;
&lt;br /&gt;
ErrorDocument 500 &amp;quot;&amp;lt;h2&amp;gt;Application error&amp;lt;/h2&amp;gt;Rails application failed to start properly&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning&lt;br /&gt;
|Attenzione&lt;br /&gt;
|La Slackware non ha, di default, il modulo apache '''mod_rewrite''' attivo, necessario per poter usare i file ''.htaccess''. Per attivarlo assicuriamoci che la relativa riga nel file ''/etc/httpd/httpd.conf'' sia decommentata (qui la riga per la Slackware64 14.0):&lt;br /&gt;
 LoadModule rewrite_module lib64/httpd/modules/mod_rewrite.so&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Quello che resta da fare è dire a '''Rails''' di eseguire l'ambiente di produzione, altrimenti di default verrà eseguito l'ambiente di sviluppo. Per fare questo bisogna inserire all'inizio del file ''config/environment.rb'' le seguenti righe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Force the rails environment to production&lt;br /&gt;
ENV['RAILS_ENV'] ||= 'production'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Possiamo farlo direttamente eseguendo il seguente comando:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i '1i \&lt;br /&gt;
# Force the rails environment to production \&lt;br /&gt;
ENV[&amp;quot;RAILS_ENV&amp;quot;] ||= &amp;quot;production&amp;quot; \&lt;br /&gt;
' config/environment.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 1: configurare il virtual host di apache ==&lt;br /&gt;
Ci sono due modi per rendere disponibile redmine via apache. Possiamo settargli un virtual host dedicato, oppure renderlo disponibile come sotto-directory di un virtual host già esistente.&lt;br /&gt;
&lt;br /&gt;
=== Virtual host dedicato ===&lt;br /&gt;
Aggiungiamo al file che contiene le impostazioni sui virtual host, ''/etc/httpd/extra/httpd-vhosts.conf'', seguenti righe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Redmine&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  DocumentRoot &amp;quot;/var/www/htdocs/redmine/public&amp;quot;&lt;br /&gt;
  ServerName redmine&lt;br /&gt;
  &amp;lt;Directory &amp;quot;/var/www/htdocs/redmine/public&amp;quot;&amp;gt;&lt;br /&gt;
    AllowOverride FileInfo Options&lt;br /&gt;
    Require all granted&lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Information&lt;br /&gt;
|Note&lt;br /&gt;
|Le due direttive di '''AllowOverride''' servono rispettivamente, per abilitare l'uso del file ''.htaccess'' e per dare la possibilità a quest'ultimo di aggiungere le opzioni di cui necessita ('''+FollowSymLinks''' e '''+ExecCGI''').&lt;br /&gt;
}}&lt;br /&gt;
Dopo aver riavviato il server apache, basta collegarsi a http://redmine per vedere se il server è attivo (la prima volta ci vorrà un po' tempo affinché il framework '''Rails''' faccia il setup completo).&lt;br /&gt;
{{Warning&lt;br /&gt;
|Attenzione&lt;br /&gt;
|Affinché il link http://redmine funzioni, c'è bisogno che la richiesta venga rediretta al nostro server apache. Nel nostro caso, dato che stiamo provando tutto in locale, questo può essere fatto aggiungendo la riga seguente al file ''/etc/hosts'':&lt;br /&gt;
 127.0.0.1       redmine&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Usare un virtual host esistente ===&lt;br /&gt;
Possiamo installare redmine sotto un virtual host esistente. Per fare questo, però, dato che la directory pubblica è una sotto-directory di redmine (la directory ''public/''), per non dover scrivere nel URL ''/redmine/public/'' è più conveniente settare un alias.&lt;br /&gt;
&lt;br /&gt;
Supponiamo che ci sia già il seguente virtual host configurato nel file ''/etc/httpd/extra/httpd-vhosts.conf'' (notate il '''ServerName''' come '''localhost'''):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  DocumentRoot &amp;quot;/srv/httpd/htdocs&amp;quot;&lt;br /&gt;
  ServerName localhost&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per settare l'alias per redmine bisogna modificare la precedente configurazione, con questa:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  DocumentRoot &amp;quot;/srv/httpd/htdocs&amp;quot;&lt;br /&gt;
  ServerName localhost&lt;br /&gt;
&lt;br /&gt;
  # Redmine&lt;br /&gt;
  Alias &amp;quot;/redmine&amp;quot; &amp;quot;/var/www/htdocs/redmine/public&amp;quot;&lt;br /&gt;
  &amp;lt;Directory &amp;quot;/var/www/htdocs/redmine/public&amp;quot;&amp;gt;&lt;br /&gt;
    AllowOverride FileInfo Options&lt;br /&gt;
    Require all granted&lt;br /&gt;
  &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora però va modificato il file ''public/.htaccess'' settando la '''RewriteBase''' come ''/redmine'', altrimenti le richieste a http://localhost/redmine saranno riscritte in maniera errata (in particolare, non andranno verso ''public/dispatch.fcgi'' ma direttamente verso ''dispatch.fcgi''). Possiamo farlo con il comando seguente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i '/^RewriteEngine/a \&lt;br /&gt;
RewriteBase /redmine' public/.htaccess&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prima di testare il tutto, bisogna correggere [http://www.redmine.org/issues/12102 un piccolo bug] del framework '''Rails''' che gli impedisce di avviarsi in maniera corretta quando l'applicazione è un alias di un virtual host. Quindi modifichiamo il file ''config/environment.rb'' sostituendo le righe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Initialize the rails application&lt;br /&gt;
RedmineApp::Application.initialize!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Initialize the rails application&lt;br /&gt;
RedmineApp::Application.routes.default_scope =  { :path =&amp;gt; '/redmine', :shallow_path =&amp;gt; '/redmine' }&lt;br /&gt;
RedmineApp::Application.initialize!&lt;br /&gt;
Redmine::Utils::relative_url_root = '/redmine'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ora tutto dovrebbe essere pronto e redmine dovrebbe rispondere correttamente all'indirizzo http://localhost/redmine.&lt;br /&gt;
&lt;br /&gt;
== Possibili problemi ==&lt;br /&gt;
Se redmine non dovesse funzionare a dovere, potete provare a guardare il file di log ''log/production.log''.&lt;br /&gt;
&lt;br /&gt;
=== `require': no such file to load -- fcgi (LoadError) ===&lt;br /&gt;
Se trovate questo errore, provate a modificare il file ''public/dispatch.fcgi'' inserendovi all'inizio le seguenti righe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'fcgi'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovviamente dovete anche aver installato il pacchetto '''fcgi''' per Ruby, come visto nello [[#Step_2:_installare_i_requisiti|Step 2]] fatto durante l'installazione di redmine. Se non l'avete fatto, potete sempre farlo con:&lt;br /&gt;
 gem install fcgi&lt;br /&gt;
&lt;br /&gt;
= Rimuovere il tutto =&lt;br /&gt;
Durante l'installazione di redmine, abbiamo modificato qualche file di configurazione ed installato un bel po' di software. Vediamo come poter tornare indietro.&lt;br /&gt;
&lt;br /&gt;
== Rimozione pacchetti installati ==&lt;br /&gt;
I pacchetti da rimuovere, con removepkg, sono:&lt;br /&gt;
* mod_fcgid&lt;br /&gt;
* fcgi&lt;br /&gt;
(eventualmente anche ruby e libyaml).&lt;br /&gt;
 removepkg mod_fcgid fcgi&lt;br /&gt;
&lt;br /&gt;
Vanno anche cancellati, il file:&lt;br /&gt;
 /var/run/fcgid_shm&lt;br /&gt;
e la directory:&lt;br /&gt;
 /var/run/fcgidsock/&lt;br /&gt;
con:&lt;br /&gt;
 rm -r /var/run/fcgid_shm /var/run/fcgidsock/&lt;br /&gt;
&lt;br /&gt;
== Pacchetti per Ruby ==&lt;br /&gt;
Via '''gem''' e '''bundler''' abbiamo installato i seguenti pacchetti sotto (per Slackware64-14.0) ''/usr/lib64/ruby/gems/1.9.1/gems/'':&lt;br /&gt;
* actionmailer-3.2.8&lt;br /&gt;
* actionpack-3.2.8&lt;br /&gt;
* activemodel-3.2.8&lt;br /&gt;
* activerecord-3.2.8&lt;br /&gt;
* activeresource-3.2.8&lt;br /&gt;
* activesupport-3.2.8&lt;br /&gt;
* arel-3.0.2&lt;br /&gt;
* builder-3.0.0&lt;br /&gt;
* bundler-1.2.2&lt;br /&gt;
* coderay-1.0.8&lt;br /&gt;
* erubis-2.7.0&lt;br /&gt;
* fcgi-0.8.8&lt;br /&gt;
* hike-1.2.1&lt;br /&gt;
* i18n-0.6.1&lt;br /&gt;
* journey-1.0.4&lt;br /&gt;
* jquery-rails-2.0.3&lt;br /&gt;
* json-1.7.5&lt;br /&gt;
* mail-2.4.4&lt;br /&gt;
* mime-types-1.19&lt;br /&gt;
* multi_json-1.3.7&lt;br /&gt;
* mysql2-0.3.11&lt;br /&gt;
* net-ldap-0.3.1&lt;br /&gt;
* polyglot-0.3.3&lt;br /&gt;
* rack-1.4.1&lt;br /&gt;
* rack-cache-1.2&lt;br /&gt;
* rack-openid-1.3.1&lt;br /&gt;
* rack-ssl-1.3.2&lt;br /&gt;
* rack-test-0.6.2&lt;br /&gt;
* rails-3.2.8&lt;br /&gt;
* railties-3.2.8&lt;br /&gt;
* rake-10.0.2&lt;br /&gt;
* rdoc-3.12&lt;br /&gt;
* rmagick-2.13.1&lt;br /&gt;
* ruby-openid-2.1.8&lt;br /&gt;
* sprockets-2.1.3&lt;br /&gt;
* thor-0.16.0&lt;br /&gt;
* tilt-1.3.3&lt;br /&gt;
* treetop-1.4.12&lt;br /&gt;
* tzinfo-0.3.35&lt;br /&gt;
&lt;br /&gt;
Tutti questi pacchetti possono essere rimossi con il comando seguente (occhio che se qualche altro software per Ruby li usa ...):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /usr/lib64/ruby/gems/1.9.1&lt;br /&gt;
rm -r */actionmailer-3.2.8* */actionpack-3.2.8* */activemodel-3.2.8* \&lt;br /&gt;
*/activerecord-3.2.8* */activeresource-3.2.8* */activesupport-3.2.8* \&lt;br /&gt;
*/arel-3.0.2* */builder-3.0.0* */bundler-1.2.2* */coderay-1.0.8* */erubis-2.7.0* \&lt;br /&gt;
*/fcgi-0.8.8* */hike-1.2.1* */i18n-0.6.1* */journey-1.0.4* */jquery-rails-2.0.3* \&lt;br /&gt;
*/json-1.7.5* */mail-2.4.4* */mime-types-1.19* */multi_json-1.3.7* \&lt;br /&gt;
*/mysql2-0.3.11* */net-ldap-0.3.1* */polyglot-0.3.3* */rack-1.4.1* \&lt;br /&gt;
*/rack-cache-1.2* */rack-openid-1.3.1* */rack-ssl-1.3.2* */rack-test-0.6.2* \&lt;br /&gt;
*/rails-3.2.8* */railties-3.2.8* */rake-10.0.2* */rdoc-3.12* */rmagick-2.13.1* \&lt;br /&gt;
*/ruby-openid-2.1.8* */sprockets-2.1.3* */thor-0.16.0* */tilt-1.3.3* \&lt;br /&gt;
*/treetop-1.4.12* */tzinfo-0.3.35*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Redmine ==&lt;br /&gt;
Ovviamente va anche eliminato redmine stesso:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /var/www/htdocs/&lt;br /&gt;
rm -r redmine&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
Il database e l'utente creati si possono eliminare con:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql -u'root' -p'root_pass'&lt;br /&gt;
drop database redmine;&lt;br /&gt;
drop user redmine@localhost;&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== File modificati ==&lt;br /&gt;
* ''/etc/httpd/httpd.conf'': eliminare la riga&lt;br /&gt;
 LoadModule fcgid_module lib64/httpd/modules/mod_fcgid.so&lt;br /&gt;
&lt;br /&gt;
* ''/etc/httpd/extra/httpd-vhosts.conf'': dipende se abbiamo settato [[#Virtual_host_dedicato|un virtual host dedicato]] o se abbiamo [[#Usare_un_virtual_host_esistente|usato un virtual host esistente]].&lt;br /&gt;
&lt;br /&gt;
* ''/etc/hosts'': solo se l'abbiamo modificato inserendo la riga:&lt;br /&gt;
 127.0.0.1       redmine&lt;br /&gt;
&lt;br /&gt;
= Autore =&lt;br /&gt;
[[Utente:Targzeta|Targzeta]] ([[Discussioni utente:Targzeta|discussioni]]) 13:05, 25 nov 2012 (CET)&lt;/div&gt;</description>
			<pubDate>Sun, 25 Nov 2012 12:05:27 GMT</pubDate>			<dc:creator>Targzeta</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Redmine_e_apache_via_fcgi</comments>		</item>
		<item>
			<title>Slackware 14 e bluetooth</title>
			<link>http://www.slacky.eu/slacky/Slackware_14_e_bluetooth</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Slackware_14_e_bluetooth</guid>
			<description>&lt;p&gt;Joe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Premessa==&lt;br /&gt;
&lt;br /&gt;
Il presente documento vuole descrive la procedura che ho adottato per impostare il bluetooth su slackware-14.0 al fine di far comunicare una comune pennetta bluetooth collegata al portatile via usb e il mio cellulare in modo da poterlo utilizzare come modem per collegarmi ad internet.&lt;br /&gt;
&lt;br /&gt;
Ci sono varie modalità di comunicare via bluetooth dal computer al cellulare al fine di ottenere una connessione ad internet. Questo documento per il momento si limita a spiegare unicamente come associare al telefono un collegamento via porta COM. Questo si traduce in pratica nella creazione di un file speciale del tipo ''/dev/rfcomm0'' che potrà poi essere utilizzato come modem ed essere quindi selezionato nell'impostazione di una connessione dial-up.&lt;br /&gt;
&lt;br /&gt;
Per ottenere lo scopo ci sono diversi metodi. Mi limiterò a trattare la configurazione senza l'utilizzo di applicazioni grafiche che tentano di automatizzare diversi passaggi.&lt;br /&gt;
&lt;br /&gt;
==Sommario==&lt;br /&gt;
&lt;br /&gt;
Le operazioni da eseguire si possono riassumere come segue:&lt;br /&gt;
* Avvio del servizio bluetooth&lt;br /&gt;
* Controllo funzionameto dell'adapter bluetooth locale&lt;br /&gt;
* Ricerca e identificazione del device bluetooth remoto&lt;br /&gt;
* Pairing tra i dispositivi&lt;br /&gt;
* Configurazione file ''/etc/bluetooth/rfcomm.conf''&lt;br /&gt;
* Test attivazione della porta ''COM'' (''/dev/rfcomm0'')&lt;br /&gt;
* Automatizzazione della configurazione all'avvio&lt;br /&gt;
&lt;br /&gt;
==Operazioni==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:1.&amp;lt;u&amp;gt; Avviamo il servizio bluetooth&amp;lt;/u&amp;gt; attraverso lo script presente in Slackware ''/etc/rc.d/rc.bluetooth''. Per farlo dobbiamo però renderlo eseguibile:&lt;br /&gt;
&lt;br /&gt;
 root@darkstar:~# chmod +x /etc/rc.d/rc.bluetooth&lt;br /&gt;
 root@darkstar:~# /etc/rc.d/rc.bluetooth start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:2.&amp;lt;u&amp;gt; Verifichiamo il riconoscimento dell'adapter locale&amp;lt;/u&amp;gt; ovvero, nel mio caso, della pennina bluetooth collegata al computer via usb.&lt;br /&gt;
  &lt;br /&gt;
  root@darkstar:~# hciconfig&lt;br /&gt;
  hci0:   Type: BR/EDR  Bus: USB&lt;br /&gt;
          BD Address: 00:09:DD:50:2F:9C  ACL MTU: 310:10  SCO MTU: 64:8&lt;br /&gt;
          UP RUNNING PSCAN ISCAN&lt;br /&gt;
          RX bytes:961 acl:0 sco:0 events:27 errors:0&lt;br /&gt;
          TX bytes:361 acl:0 sco:0 commands:27 errors:0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:3.&amp;lt;u&amp;gt; Ricerca del cellulare&amp;lt;/u&amp;gt; (assicurarsi di avere acceso il bluetooth sul cellulare e che non sia &amp;quot;nascosto&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  root@darkstar:~# hcitool scan&lt;br /&gt;
  Scanning ...&lt;br /&gt;
          00:21:AA:A4:F2:AD       Nokia 5000d-2&lt;br /&gt;
&lt;br /&gt;
:Questo ci riporta il &amp;quot;Bluetooth ID&amp;quot; del cellulare e ifo sul modello. Ai nostri fini basta annotare L'ID, che nel mio caso è ''00:21:AA:A4:F2:AD'' e servirà nella configurazione nel file ''rfcomm0.conf''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:4.&amp;lt;u&amp;gt; Pairing&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Al momento non ho ancora capito come eseguire l'operazione senza ricorrere a tool terzi non compresi nel pacchetto bluez.&lt;br /&gt;
:Su Slackware-14.0 ho utilizzato Blueman dall'ambiente grafico. Su Slackware-13.1 avevo installato uno script in python chiamato &amp;quot;simple-agent&amp;quot;.&lt;br /&gt;
:Pertanto lascio in sospeso questo punto invitandovi anche a modificare la guida nel caso in cui riusciste ad effettuare il pairing senza ricorrere a software grafici o non inclusi di default in Slackware-14.0.&lt;br /&gt;
&lt;br /&gt;
:I punti che seguono presuppongono che sia stato effettuato il pairing e che il cellulare sia stato configurato in modo da accettare automaticamente la connessione BT da parte del nostro sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:5.&amp;lt;u&amp;gt; Andiamo ora a modificare il file:&amp;lt;/u&amp;gt;&lt;br /&gt;
  /etc/bluetooth/rfcomm.conf&lt;br /&gt;
:Ecco il mio:&lt;br /&gt;
  rfcomm0 {&lt;br /&gt;
          # Automatically bind the device at startup&lt;br /&gt;
          bind yes;&lt;br /&gt;
 &lt;br /&gt;
          # Bluetooth address of the device&lt;br /&gt;
          device 00:21:AA:A4:F2:AD;&lt;br /&gt;
 &lt;br /&gt;
          # RFCOMM channel for the connection&lt;br /&gt;
          channel 1;&lt;br /&gt;
 &lt;br /&gt;
          # Description of the connection&lt;br /&gt;
          comment &amp;quot;Nokia 5000d-2&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
:Riavviamo a questo punto il bluetooth in modo che le nostre modifiche alla configurazione siano applicate:&lt;br /&gt;
&lt;br /&gt;
  /etc/rc.d/rc.bluetooth restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:6.&amp;lt;u&amp;gt; Attivazione del device ''/dev/rfcomm0''&amp;lt;/u&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
: Per attivare al volo la porta ''COM'' ed ottenere il file ''/dev/rfcomm0'' da testare come modem possiamo semplicemente lanciare il seguente comando:&lt;br /&gt;
&lt;br /&gt;
  root@darkstar:~# rfcomm bind 0&lt;br /&gt;
  root@darkstar:~# ls /dev/rfcomm*&lt;br /&gt;
  /dev/rfcomm0&lt;br /&gt;
&lt;br /&gt;
: A questopunto possiamo testare il modem, per esempio con un programma come minicom che permette di interrogarlo con comandi ''AT'', tipo ''ATZ''. Se riceviamo come risposta ''OK'' allora la comunicazione col modem è apposto e possiamo anche impostare la connessione ad internet selezionando ''/dev/rfcomm0'' come modem.&lt;br /&gt;
&lt;br /&gt;
: Ok, però si vuole rendere questa operazione automatica all'avvio: cioè vogliamo che avviato il sistema sia già stato creato automaticamente il file speciale ''/dev/rfcomm0''.&lt;br /&gt;
:Pertanto aggiungiamo al file ''/etc/rc.d/rc.local'' la riga:&lt;br /&gt;
&lt;br /&gt;
  rfcomm bind 0&lt;br /&gt;
&lt;br /&gt;
:Questo comando fà si che se il cellulare è nel raggio di azione del bluetooth del dongle usb e ha il bluetooth attivo, viene automaticamente visto e gli viene associato il file ''/dev/rfcomm0'' che viene creato al volo. Mettendo in questo file il comando ''rfcomm'', questo comportamento si ha automaticamente all'avvio del sistema.&lt;br /&gt;
&lt;br /&gt;
:A questo punto una domanda è d'obbligo:&lt;br /&gt;
:abbiamo modificato il file ''/etc/bluetooth/rfcomm.conf'' impostando la voce ''bind'' a ''yes''. Come dice anche il commento nel file in questione, si dovrebbe creare automaticamente all'avvio il nostro file speciale associandolo al cellulare come stabilito dalla configurazione.&lt;br /&gt;
&lt;br /&gt;
:Questo però non avviene. E ho letto in rete che dovrebbe essere colpa di un bug. Lascio a chi legge l'onere di ricercare eventuali informazioni in merito qualora fosse interessato.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:7.&amp;lt;u&amp;gt; Riavviare il sistema.&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:come riprova per vedere se tutto funziona automaticamente all'avvio ci può stare.&lt;/div&gt;</description>
			<pubDate>Thu, 15 Nov 2012 14:12:09 GMT</pubDate>			<dc:creator>Joe</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Slackware_14_e_bluetooth</comments>		</item>
		<item>
			<title>Wallpapers</title>
			<link>http://www.slacky.eu/slacky/Wallpapers</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Wallpapers</guid>
			<description>&lt;p&gt;Targzeta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#sgallery:&lt;br /&gt;
|width=800&lt;br /&gt;
|height=600&lt;br /&gt;
|showarrows=true&lt;br /&gt;
|showcarousel=true&lt;br /&gt;
|showinfopane=false&lt;br /&gt;
|timed=true&lt;br /&gt;
|delay=6000&lt;br /&gt;
|imagelist=mayan-1024x768.jpg&lt;br /&gt;
Slackware_maja_kalendar.jpg&lt;br /&gt;
Maja_slack.jpg&lt;br /&gt;
Wallpaper_lampaaa.jpg&lt;br /&gt;
Wallpaper_slackgirl.jpg&lt;br /&gt;
Wallpaper_slackk.jpg&lt;br /&gt;
Wallpaper_slackware.jpg&lt;br /&gt;
Wallpaper_slackware-balon-1.jpg&lt;br /&gt;
Wallpaper_slackware-balon-2.jpg&lt;br /&gt;
Wallpaper_slackware-glass-break.jpg&lt;br /&gt;
Wallpaper_slackware-sace.jpg&lt;br /&gt;
Wallpaper_slackware-subgenius.jpg&lt;br /&gt;
Wallpaper_slackware_14.jpg&lt;br /&gt;
Higgs-slackware.jpg&lt;br /&gt;
My_black_slack_wallpaper.png&lt;br /&gt;
Onlyslackware.jpg&lt;br /&gt;
Slack14wall2.png&lt;br /&gt;
Slackwarecurrent2.png&lt;br /&gt;
Slackschoolwallpaper.png&lt;br /&gt;
Slackwallpaper.png&lt;br /&gt;
Slackware14_wallpaper1.png&lt;br /&gt;
Slackware_by_zealkane-d3bg6f9.jpg&lt;br /&gt;
}}&lt;br /&gt;
Per aggiungere un'immagine basta [[Speciale:Carica|caricarla]] e poi aggiungerla all'elenco. Tenete presente che il carousel ha uno sfondo nero, quindi non usate immagini trasparenti con scritte nere, piuttosto convertitele in JPEG.&lt;br /&gt;
&lt;br /&gt;
Lo staff.&lt;/div&gt;</description>
			<pubDate>Sat, 27 Oct 2012 19:35:15 GMT</pubDate>			<dc:creator>Zerouno</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Wallpapers</comments>		</item>
		<item>
			<title>Propaganda</title>
			<link>http://www.slacky.eu/slacky/Propaganda</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Propaganda</guid>
			<description>&lt;p&gt;Zerouno: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#sgallery:&lt;br /&gt;
|width=700&lt;br /&gt;
|height=600&lt;br /&gt;
|showarrows=true&lt;br /&gt;
|showcarousel=true&lt;br /&gt;
|showinfopane=false&lt;br /&gt;
|timed=true&lt;br /&gt;
|delay=4000&lt;br /&gt;
|imagelist=Mistowhite.jpg&lt;br /&gt;
slackywhite.png&lt;br /&gt;
Latowhite.png&lt;br /&gt;
palla.jpg&lt;br /&gt;
}}&lt;br /&gt;
Per aggiungere un'immagine basta [[Speciale:Carica|caricarla]] e poi aggiungerla all'elenco. Tenete presente che il carousel ha uno sfondo nero, quindi non usate immagini trasparenti con scritte nere, piuttosto convertitele in JPEG.&lt;br /&gt;
&lt;br /&gt;
Lo staff.&lt;/div&gt;</description>
			<pubDate>Fri, 19 Oct 2012 16:48:25 GMT</pubDate>			<dc:creator>Slacky</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Propaganda</comments>		</item>
		<item>
			<title>SlackPack Package Manager</title>
			<link>http://www.slacky.eu/slacky/SlackPack_Package_Manager</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/SlackPack_Package_Manager</guid>
			<description>&lt;p&gt;Kimotori: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Packages]]&lt;br /&gt;
= Introduzione: =&lt;br /&gt;
Per chi è pigro e non ha voglia di smanettare per la creazione dei pachetti, ci sono in giro diversi tool in grado di sostituire il nostro lavoro, attraverso script e percorsi, eseguendo, allegramente quel che altrimenti avremmo dovuto far noi...&lt;br /&gt;
&lt;br /&gt;
Slackpack è un tool simpatico, purtroppo l' ultimo suo aggiornamento è fermo alla versione 1.1.9:&lt;br /&gt;
 https://slackpackpkgman.wordpress.com/download/&lt;br /&gt;
&lt;br /&gt;
ma per la sua semplicità rimane un tool ancora funzionante dato che per le diverse opzioni e pachettizzazioni fa uso di applicazioni esterne, tra cui il makepkg per la creazione dei pachetti, mentre per la loro conversione, l' rpm2tgz (onnipresente in distro) e deb2tgz (opzionale, derivato da rpm2tgz, lo trovate [https://code.google.com/p/deb2tgz/downloads/list qui])&lt;br /&gt;
&lt;br /&gt;
Il tool va fatto partire con i privilegi di root, di conseguenza i pacchetti creati li ritroveremo dentro la dir &lt;br /&gt;
 /root/nomepacchetto.versione.arch.tgz&lt;/div&gt;</description>
			<pubDate>Thu, 11 Oct 2012 00:27:51 GMT</pubDate>			<dc:creator>Kimotori</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:SlackPack_Package_Manager</comments>		</item>
		<item>
			<title>Slackware 14.0 release announcement</title>
			<link>http://www.slacky.eu/slacky/Slackware_14.0_release_announcement</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Slackware_14.0_release_announcement</guid>
			<description>&lt;p&gt;Slacky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Yes, it is that time again!  After well over a year of planning,&lt;br /&gt;
development, and testing, the Slackware Linux Project is proud to&lt;br /&gt;
announce the latest stable release of the longest running distribution&lt;br /&gt;
of the Linux operating system, Slackware version 14.0!&lt;br /&gt;
&lt;br /&gt;
We are sure you'll enjoy the many improvements.  We've done our best to bring the latest technology to Slackware while still maintaining the stability and security that you have come to expect.  Slackware is well known for its simplicity and the fact that we try to bring software to you in the condition that the authors intended.&lt;br /&gt;
&lt;br /&gt;
Slackware 14.0 brings many updates and enhancements, among which you'll find two of the most advanced desktop environments available today: Xfce 4.10.0, a fast and lightweight but visually appealing and easy to use desktop environment, and KDE 4.8.5, a recent stable release of the 4.8.x series of the award-winning KDE desktop environment. These desktops utilize udev, udisks, and udisks2, and many of the&lt;br /&gt;
specifications from freedesktop.org which allow the system administrator&lt;br /&gt;
to grant use of various hardware devices according to users' group&lt;br /&gt;
membership so that they will be able to use items such as USB flash&lt;br /&gt;
sticks, USB cameras that appear like USB storage, portable hard drives,&lt;br /&gt;
CD and DVD media, MP3 players, and more, all without requiring sudo, the&lt;br /&gt;
mount or umount command.  Just plug and play.  Slackware's desktop&lt;br /&gt;
should be suitable for any level of Linux experience.&lt;br /&gt;
&lt;br /&gt;
Slackware uses the 3.2.29 kernel bringing you advanced performance features such as journaling filesystems, SCSI and ATA RAID volume support, SATA support, Software RAID, LVM (the Logical Volume Manager), and encrypted filesystems.  Kernel support for X DRI (the Direct Rendering Interface) brings high-speed hardware accelerated 3D graphics to Linux.&lt;br /&gt;
&lt;br /&gt;
There are two kinds of kernels in Slackware.  First there are the huge kernels, which contain support for just about every driver in the Linux kernel. These are primarily intended to be used for installation, but there's no real reason that you couldn't continue to run them after you have installed.  The other type of kernel is the generic kernel, in which nearly every driver is built as a module.  To use a generic kernel you'll need to build an initrd to load your filesystem module and possibly your drive controller or other drivers needed at boot time, configure LILO to load the initrd at boot, and reinstall LILO.  See the docs in /boot after installing for more information.  Slackware's Linux kernels come in both SMP and non-SMP types now.  The SMP kernel supports multiple processors, multi-core CPUs, HyperThreading, and about every other optimization available.  In our own testing this kernel has proven to be fast, stable, and reliable.  We recommend using the SMP kernel even on single processor machines if it will run on them.  Note that on&lt;br /&gt;
x86_64 (64-bit), all the kernels are SMP capable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Here are some of the advanced features of Slackware 14.0: ===&lt;br /&gt;
&lt;br /&gt;
 Runs the 3.2.29 version of the Linux kernel from ftp.kernel.org.&lt;br /&gt;
 The 3.2.x series is well-tested, offers good performance, and will be&lt;br /&gt;
 getting long term support from kernel.org.  For people interested in&lt;br /&gt;
 trying out newer kernels, we've provided sample configuration files&lt;br /&gt;
 for Linux 3.4.11, 3.5.4, and 3.6-rc4 under the /testing directory.&lt;br /&gt;
&lt;br /&gt;
 System binaries are linked with the GNU C Library, version 2.15.&lt;br /&gt;
 This version of glibc also has excellent compatibility with&lt;br /&gt;
 existing binaries.&lt;br /&gt;
&lt;br /&gt;
 X11 based on the X.Org Foundation's modular X Window System.&lt;br /&gt;
 This is X11R7.7, a new release, with many improvements in terms of&lt;br /&gt;
 performance and hardware support.&lt;br /&gt;
&lt;br /&gt;
 Installs gcc-4.7.1 as the default C, C++, Objective-C,&lt;br /&gt;
 Fortran-77/95/2003/2008, and Ada 95/2005/2012 compiler.&lt;br /&gt;
&lt;br /&gt;
 Support for NetworkManager for simple configuration of wired and&lt;br /&gt;
 wireless network connections, including mobile broadband, IPv6, VPN,&lt;br /&gt;
 and more.  Roam seamlessly between known networks, and quickly set&lt;br /&gt;
 up new connections.  We've retained full support for the traditional&lt;br /&gt;
 Slackware networking scripts and for the wicd network manager,&lt;br /&gt;
 offering choice and flexibility to all levels of users.&lt;br /&gt;
&lt;br /&gt;
 Support for fully encrypted network connections with OpenSSL,&lt;br /&gt;
 OpenSSH, OpenVPN, and GnuPG.&lt;br /&gt;
&lt;br /&gt;
 Apache (httpd) 2.4.3 web server with Dynamic Shared Object&lt;br /&gt;
 support, SSL, and PHP 5.4.7.&lt;br /&gt;
&lt;br /&gt;
 USB, IEEE 1394 (FireWire), and ACPI support, as well as legacy PCMCIA&lt;br /&gt;
 and Cardbus support.  This makes Slackware a great operating system&lt;br /&gt;
 for your laptop.&lt;br /&gt;
&lt;br /&gt;
 The udev dynamic device management system for Linux 3.x.&lt;br /&gt;
 This locates and configures most hardware automatically as it&lt;br /&gt;
 is added (or removed) from the system, loading kernel modules&lt;br /&gt;
 as needed.  It works along with the kernel's devtmpfs filesystem&lt;br /&gt;
 to create access nodes in the /dev directory.&lt;br /&gt;
&lt;br /&gt;
 New development tools, including Perl 5.16.1, Python 2.7.3,&lt;br /&gt;
 Ruby 1.9.3-p194, Subversion 1.7.6, git-1.7.12.1, mercurial-2.2.2,&lt;br /&gt;
 graphical tools like Qt designer and KDevelop, and much more.&lt;br /&gt;
&lt;br /&gt;
 Updated versions of the Slackware package management tools make it&lt;br /&gt;
 easy to add, remove, upgrade, and make your own Slackware packages.&lt;br /&gt;
 Package tracking makes it easy to upgrade from Slackware 13.37 to&lt;br /&gt;
 Slackware 14.0 (see UPGRADE.TXT and CHANGES_AND_HINTS.TXT).&lt;br /&gt;
 The slackpkg tool can also help update from an older version of&lt;br /&gt;
 Slackware to a newer one, and keep your Slackware system up to date.&lt;br /&gt;
 In addition, the slacktrack utility will help you build and maintain&lt;br /&gt;
 your own packages.&lt;br /&gt;
&lt;br /&gt;
 Web browsers galore!  Includes KDE's Konqueror 4.8.5, SeaMonkey 2.12.1&lt;br /&gt;
 (this is the replacement for the Mozilla Suite), Mozilla Firefox 15.0.1,&lt;br /&gt;
 as well as the Thunderbird 15.0.1 email and news client with advanced&lt;br /&gt;
 junk mail filtering.  A script is also available in /extra to repackage&lt;br /&gt;
 Google Chrome as a native Slackware package.&lt;br /&gt;
&lt;br /&gt;
 The KDE Software Compilation 4.8.5, a complete desktop environment.&lt;br /&gt;
 This includes the Calligra productivity suite (previously known as&lt;br /&gt;
 KOffice), networking tools, GUI development with KDevelop, multimedia&lt;br /&gt;
 tools (including the Amarok music player and K3B disc burning software),&lt;br /&gt;
 the Konqueror web browser and file manager, dozens of games and utilities,&lt;br /&gt;
 international language support, and more.&lt;br /&gt;
&lt;br /&gt;
 A collection of GTK+ based applications including pidgin-2.10.6,&lt;br /&gt;
 gimp-2.8.2 (with many improvements including a single window mode),&lt;br /&gt;
 gkrellm-2.3.5, xchat-2.8.8, xsane-0.998, and pan-0.139.&lt;br /&gt;
&lt;br /&gt;
 A repository of extra software packages compiled and ready to run&lt;br /&gt;
 in the /extra directory.&lt;br /&gt;
&lt;br /&gt;
 Many more improved and upgraded packages than we can list here.  For&lt;br /&gt;
 a complete list of core packages in Slackware 14.0, see this file:&lt;br /&gt;
 ftp://ftp.slackware.com/pub/slackware/slackware-14.0/PACKAGES.TXT&lt;br /&gt;
&lt;br /&gt;
=== Downloading Slackware 14.0: ===&lt;br /&gt;
&lt;br /&gt;
The full version of Slackware Linux 14.0 is available for download from the central Slackware FTP site hosted by our friends at osuosl.org:&lt;br /&gt;
&lt;br /&gt;
 ftp://ftp.slackware.com/pub/slackware/slackware-14.0/&lt;br /&gt;
&lt;br /&gt;
If the sites are busy, see the list of official mirror sites here:&lt;br /&gt;
&lt;br /&gt;
 http://mirrors.slackware.com&lt;br /&gt;
&lt;br /&gt;
We will be setting up BitTorrent downloads for the official ISO images.  Stay tuned to http://slackware.com for the latest updates.&lt;br /&gt;
&lt;br /&gt;
Instructions for burning the Slackware tree onto install discs may be found in the isolinux directory.&lt;br /&gt;
&lt;br /&gt;
=== Purchasing Slackware on CD-ROM or DVD: ===&lt;br /&gt;
&lt;br /&gt;
Or, please consider purchasing the Slackware Linux 14.0 six CD-ROM set or deluxe dual-sided DVD release directly from Slackware Linux, and you'll be helping to support the continued development of Slackware Linux!&lt;br /&gt;
&lt;br /&gt;
The DVD release has the 32-bit x86 Slackware 14.0 release on one side, and the 64-bit x86_64 Slackware 14.0 release on the other.  Both sides are bootable for easy installation, and includes everything from both releases of Slackware 14.0, including the complete source code trees.&lt;br /&gt;
&lt;br /&gt;
The 6 CD-ROM release of Slackware 14.0 is the 32-bit x86 edition. It includes a bootable first CD-ROM for easy installation.  The 6 CD-ROMs are labeled for easy reference.&lt;br /&gt;
&lt;br /&gt;
The Slackware 14.0 x86 6 CD-ROM set is $49.95 plus shipping, or choose the Slackware 14.0 x86/x86_64 dual-sided DVD (also $49.95 plus shipping).&lt;br /&gt;
&lt;br /&gt;
Slackware Linux is also available by subscription.  When we release a new version of Slackware (which is normally once or twice a year) we ship it to you and bill your credit card for a reduced subscription price ($32.99 for the CD-ROM set, or $39.95 for the DVD) plus shipping.&lt;br /&gt;
&lt;br /&gt;
For shipping options, see the Slackware store website.  Before ordering express shipping, you may wish to check that we have the product in stock. We make releases to the net at the same time as disc production begins, so there is a lag between the online release and the shipping of media. But, even if you download now you can still buy the official media later. You'll feel good, be helping the project, and have a great decorative item perfect for any computer room shelf. &lt;br /&gt;
&lt;br /&gt;
=== Ordering Information: ===&lt;br /&gt;
&lt;br /&gt;
You can order online at the Slackware Linux store:&lt;br /&gt;
&lt;br /&gt;
 http://store.slackware.com&lt;br /&gt;
&lt;br /&gt;
Other Slackware items like t-shirts, caps, pins, and stickers can also be found here.  These will help you find and identify yourself to your fellow Slackware users.  There are still some 1337 T-shirts left, and we'll also be unveiling a brand new T-shirt design soon for this new release.&lt;br /&gt;
&lt;br /&gt;
Order inquiries (including questions about becoming a Slackware reseller) may be directed to this address:  info@slackware.com&lt;br /&gt;
&lt;br /&gt;
Have fun! :^)  I hope you find Slackware to be useful, and thanks&lt;br /&gt;
very much for your support of this project over the years.&lt;br /&gt;
&lt;br /&gt;
Patrick J. Volkerding    &amp;lt;volkerdi@slackware.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Visit us on the web at:  http://slackware.com&lt;/div&gt;</description>
			<pubDate>Sat, 29 Sep 2012 06:41:19 GMT</pubDate>			<dc:creator>Slacky</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Slackware_14.0_release_announcement</comments>		</item>
		<item>
			<title>Installare MATE - The traditional desktop environment</title>
			<link>http://www.slacky.eu/slacky/Installare_MATE_-_The_traditional_desktop_environment</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Installare_MATE_-_The_traditional_desktop_environment</guid>
			<description>&lt;p&gt;Kimotori: /* Slackware 13.37 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Server_X]]&lt;br /&gt;
== Introduzione ==&lt;br /&gt;
&lt;br /&gt;
[http://mate-desktop.org/ MATE] è un fork di GNOME 2.&lt;br /&gt;
Con l' arrivo del famoso GNOME 3, molti utenti si sono sentiti privati di qualcosa, così, gli &amp;quot;scontenti&amp;quot; hanno pensato di riprendere l' ultima versione &amp;quot;alla vecchia maniera&amp;quot; e proseguire da se.&lt;br /&gt;
&lt;br /&gt;
Di recente l' utente miklos ha aggiunto ai repository di Slacky.eu della 13.37 (32 e 64) il desktop MATE 1.2.&lt;br /&gt;
&lt;br /&gt;
(Grazie mille!)&lt;br /&gt;
&lt;br /&gt;
Prima di questo, esistevano 2 strade, l' installazione, scaricando i pachetti manualmente (uno ad uno) dai repositori Salix... oppure attraverso la compilazione dei sorgenti, come descritto nella pagina ufficiale di [http://wiki.mate-desktop.org/download MATE-wiki]&lt;br /&gt;
&lt;br /&gt;
E' possibile, ora, utilizzare slapt-get, swaret o slackyd. Del primo ne parlerò nello specifico perchè più familiare, mentre per gli altri due passo la palla a chi ne sa più di me.&lt;br /&gt;
&lt;br /&gt;
== Procedura ==&lt;br /&gt;
Dato i repository, possiamo, a piacere, scegliere quale gestore pacchetti utilizzare, essi stessi si preoccuperanno di soddisfare le dipendenze necessarie, se presenti, altrimenti, provvederemo noi stessi.&lt;br /&gt;
&lt;br /&gt;
=== Slapt-get ===&lt;br /&gt;
Per poter utilizzare i repository di slacky.eu bisogna aggiungerli a [http://software.jaos.org/ slapt-get] editando il file '''/etc/slapt-get/slapt-getrc''' ed aggiungendo all' ultima riga il link:&lt;br /&gt;
&lt;br /&gt;
==== Slackware 13.37 ====&lt;br /&gt;
Per quelli che hanno slackware 13.37 e quindi MATE 1.2 aggiungeranno:&lt;br /&gt;
 ...&lt;br /&gt;
 # Home made packages.&lt;br /&gt;
 # SOURCE=file:///var/www/packages/:CUSTOM&lt;br /&gt;
 SOURCE=''http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-13.37/:CUSTOM''&lt;br /&gt;
 oppure SOURCE=''http://slack.isper.sk/pub/slackware-13.37/:CUSTOM&lt;br /&gt;
&lt;br /&gt;
Repository per Slackware64 13.37&lt;br /&gt;
 SOURCE=''http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware64-13.37/:CUSTOM''&lt;br /&gt;
 oppure SOURCE=''http://slack.isper.sk/pub/slackware64-13.37/:CUSTOM&lt;br /&gt;
&lt;br /&gt;
'''I pachetti MATE 1.2 contenuti nei repo di slackware-13.37 e slackware64-13.37 possono essere installati su slackware-14.0 e slackware64-14.0'''&lt;br /&gt;
&lt;br /&gt;
==== Slackware 14.0 ====&lt;br /&gt;
Repository per Slackware 14.0 &lt;br /&gt;
 ...&lt;br /&gt;
 # Home made packages.&lt;br /&gt;
 # SOURCE=file:///var/www/packages/:CUSTOM&lt;br /&gt;
 SOURCE=''http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-14.0/:CUSTOM''      Attenzione non ancora dipsonibile MATE!&lt;br /&gt;
 oppure SOURCE=''http://slack.isper.sk/pub/slackware-14.0/:CUSTOM&lt;br /&gt;
Repository per Slackware64 14.0&lt;br /&gt;
 SOURCE=''http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware64-14.0/:CUSTOM''    Attenzione non ancora dipsonibile MATE!&lt;br /&gt;
 oppure SOURCE=''http://slack.isper.sk/pub/slackware64-14.0/:CUSTOM&lt;br /&gt;
&lt;br /&gt;
== Applicazione ==&lt;br /&gt;
Se i pachetti per la slackware-14.0 non sono ancora diponibili, optare per la versione 13.37.&lt;br /&gt;
Aggiornare il db con il comando:&lt;br /&gt;
 slapt-get -u&lt;br /&gt;
Iniziamo l' installazione:&lt;br /&gt;
 slapt-get -i --ignore-dep mate-desktop-environment&lt;br /&gt;
Listato dei file:&lt;br /&gt;
 mate-desktop-environment&lt;br /&gt;
 mate-desktop&lt;br /&gt;
 mate-applets&lt;br /&gt;
 mate-backgrounds&lt;br /&gt;
 mate-calc&lt;br /&gt;
 mate-dialogs mate-document-viewer&lt;br /&gt;
 mate-file-archiver&lt;br /&gt;
 mate-file-manager&lt;br /&gt;
 mate-file-manager-sendto&lt;br /&gt;
 mate-icon-theme&lt;br /&gt;
 mate-menu-editor&lt;br /&gt;
 mate-menus&lt;br /&gt;
 mate-panel&lt;br /&gt;
 mate-screensaver&lt;br /&gt;
 mate-session-manager&lt;br /&gt;
 mate-text-editor mate-themes&lt;br /&gt;
 mate-utils&lt;br /&gt;
 mate-window-manager&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=== Swaret ===&lt;br /&gt;
&lt;br /&gt;
==== Slackware 13.37 ====&lt;br /&gt;
Repository per Slackware 13.37&lt;br /&gt;
 REPOS_ROOT=Slacky%http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-13.37/&lt;br /&gt;
Repository per Slackware64 13.37&lt;br /&gt;
 REPOS_ROOT=Slacky%http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware64-13.37/&lt;br /&gt;
&lt;br /&gt;
==== Slackware 14.0 ====&lt;br /&gt;
Repository per Slackware 14.0&lt;br /&gt;
 REPOS_ROOT=Slacky%http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-14.0/&lt;br /&gt;
Repository per Slackware64 14.0&lt;br /&gt;
 REPOS_ROOT=Slacky%http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware64-14.0/&lt;br /&gt;
&lt;br /&gt;
=== Slackyd ===&lt;br /&gt;
&lt;br /&gt;
==== Slackware 13.37 ====&lt;br /&gt;
Repository per Slackware 13.37&lt;br /&gt;
 repository slacky = http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-13.37/&lt;br /&gt;
Repository per Slackware64 13.37&lt;br /&gt;
 repository slacky = http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware64-13.37/&lt;br /&gt;
&lt;br /&gt;
==== Slackware 14.0 ====&lt;br /&gt;
Repository per Slackware 14.0&lt;br /&gt;
 repository slacky = http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-14.0/&lt;br /&gt;
Repository per Slackware64 14.0&lt;br /&gt;
 repository slacky = http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware64-14.0/&lt;br /&gt;
&lt;br /&gt;
== Conclusioni ==&lt;br /&gt;
Slapt-get, swaret ed slackyd, sono ottimi tool, ma non perfetti, '''Per gli aggiornamenti della distribuzione''', consiglio vivamente l' uso fidato di '''slackpkg''' tool ufficiale slackware. Suggerisco la disabilitazione dei repository ufficiali, in modo da lasciare al tool, il lavoro '''esclusivo dei repo custom'''; Posto il file di conf di slapt-get per maggior chiarezza:&lt;br /&gt;
 # Working directory for local storage/cache.&lt;br /&gt;
 WORKINGDIR=/var/slapt-get&lt;br /&gt;
 # Exclude package names and expressions.&lt;br /&gt;
 # To exclude pre and beta packages, add this to the exclude: &lt;br /&gt;
 #   [0-9\_\.\-]{1}pre[0-9\-\.\-]{1}&lt;br /&gt;
 EXCLUDE=^aaa_elflibs,^devs,^glibc-.*,^kernel-.*,^udev,.*-[0-9]+dl$,x86_64&lt;br /&gt;
 # Base url to directory with a PACKAGES.TXT.&lt;br /&gt;
 # This can point to any release, ie: 9.0, 10.0, current, etc.&lt;br /&gt;
 # SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-14.0/:OFFICIAL  -------------&amp;gt; repo ufficiali disabilitati&lt;br /&gt;
 # Sources for the testing, extra, and pasture areas - if you use them.&lt;br /&gt;
 # SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-14.0/extra/:PREFERRED -------&amp;gt; repo ufficiali disabilitati&lt;br /&gt;
 # SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-14.0/testing/ ---------------&amp;gt; repo ufficiali disabilitati&lt;br /&gt;
 # SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-14.0/pasture/ ---------------&amp;gt; repo ufficiali disabilitati&lt;br /&gt;
 # Source for slapt-get.&lt;br /&gt;
 SOURCE=http://software.jaos.org/slackpacks/14.0/:OFFICIAL  ------------&amp;gt; per aggiornare il tool&lt;br /&gt;
 # Packages on a CD/DVD.&lt;br /&gt;
 # SOURCE=file:///mnt/cdrom/:OFFICIAL&lt;br /&gt;
 # Home made packages.&lt;br /&gt;
 # SOURCE=file:///var/www/packages/:CUSTOM&lt;br /&gt;
 SOURCE=http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-13.37/:CUSTOM -------&amp;gt; solo link repo custom &lt;br /&gt;
 # oppure SOURCE=http://slack.isper.sk/pub/slackware-13.37/:CUSTOM&lt;br /&gt;
&lt;br /&gt;
== Configurazioni opzionali ==&lt;br /&gt;
Dopo l' installazione, ad alcuni farà piacere attivare il Manager di composizione. Posizionarsi su ''Sistema''--&amp;gt;''Amministrazione''--&amp;gt;''Editor di configurazione''.Nella prima finestra da root aprire la 1° directory ''apps'' poi ''marco'' ed infine ''general'' sulla finestra laterale, cercare ''compositing_manager'', metterci una spunta sulla casellina vuota. Fatto, immediatamente sarà attivo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Collaborazioni ==&lt;br /&gt;
&lt;br /&gt;
Chiunque, potrà abbozzare o ridefinire, modificare e cancellare, secondo i termini d'uso della licenza GNU Free Documentation License 1.2. Sono esonerati da qualunque responsabilità, l' autore, i collaboratori di questa pagina, il sito www.slacky.eu e tutti gli utenti del forum.&lt;br /&gt;
&lt;br /&gt;
Grazie della collaborazione.&lt;/div&gt;</description>
			<pubDate>Wed, 26 Sep 2012 12:58:09 GMT</pubDate>			<dc:creator>Kimotori</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Installare_MATE_-_The_traditional_desktop_environment</comments>		</item>
		<item>
			<title>Ssmtp Mini Howto</title>
			<link>http://www.slacky.eu/slacky/Ssmtp_Mini_Howto</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Ssmtp_Mini_Howto</guid>
			<description>&lt;p&gt;Miklos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:Networking]]&lt;br /&gt;
= Introduzione =&lt;br /&gt;
Questo mini howto mostra come installare e configurare [http://packages.debian.org/stable/ssmtp Ssmtp] su Slackware.&lt;br /&gt;
&lt;br /&gt;
Ssmtp è un semplice tool che effettua il forward di una mail inviata in locale, verso un server smtp esterno (mailhub). Non è assolutamente da confondere con un server smtp tradizionale, in quanto non è in grado di ricevere email, non gestisce alcuna coda per l'invio di messaggi, etc etc etc.&lt;br /&gt;
&lt;br /&gt;
La caratteristica che lo rende però interessante è '''la piena compatibilità con l'eseguibile sendmail dell'omonimo server di posta'''. Infatti sia le modalità di invocazione che il formato dei parametri accettato è in tutto e per tutto identico. &lt;br /&gt;
&lt;br /&gt;
Questo apre la porta ad una serie di utilizzi interessanti, fra cui uno in particolare che vedremo in seguito.&lt;br /&gt;
&lt;br /&gt;
= Installazione =&lt;br /&gt;
Prima di tutto installiamo il software. All'atto della stesura dell'howto i pacchetti sono presenti all'interno del repository slacky per entrambe le architetture. &amp;lt;br&amp;gt;&lt;br /&gt;
Perciò è possibile scegliere la modalità preferita fra l'installazione dei binari e la compilazione direttamente dal sorgente&lt;br /&gt;
&lt;br /&gt;
== Da pacchetti precompilati ==&lt;br /&gt;
&lt;br /&gt;
== Da sorgente ==&lt;br /&gt;
Per poter procedere alla compilazione dal sorgente scarichiamo dal [http://packages.debian.org/stable/ssmtp sito ufficiale] l'ultima versione disponibile.&amp;lt;br&amp;gt;&lt;br /&gt;
Una volta fatto procediamo all'estrazione del sorgente e alla compilazione con i seguenti comandi:&lt;br /&gt;
    $ tar xvf ssmtp_2.64.orig.tar.bz2&lt;br /&gt;
    $ cd ssmtp-2.64&lt;br /&gt;
    $ ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/man --enable-ssl --enable-inet6 --enable-md5auth &lt;br /&gt;
    $ make&lt;br /&gt;
portata a termine la compilazione installiamolo da superutente con:&lt;br /&gt;
    # make install&lt;br /&gt;
ci verrano richieste un paio di informazioni di configurazione (rispettivamente il nome host che verrà usato nell'intestazione delle mail forwardate e la porta di default del mailhub smtp) che però possono essere cambiate tramite file di configurazione, quindi si puo' tranquillamente rispondere con i valori proposti.&lt;br /&gt;
&lt;br /&gt;
'''Importante'''&amp;lt;br&amp;gt;&lt;br /&gt;
Il makefile non supporta pienamente l'installazione in una directory differente tramite la variabile DESTDIR. Se si vuole ottenere lo stesso effetto è necessario lanciare il make install aggiungendo altri parametri:&amp;lt;br&amp;gt;&lt;br /&gt;
    # make install prefix=path_di_installazione/usr etcdir=path_di_installazione/etc&lt;br /&gt;
&lt;br /&gt;
= Configurazione =&lt;br /&gt;
Una volta installato il software procediamo alla sua configurazione aprendo il file principale '''/etc/ssmtp/ssmtp.conf''' che inizialmente dovrebbe apparire cosi':&lt;br /&gt;
    #&lt;br /&gt;
    # /etc/ssmtp.conf -- a config file for sSMTP sendmail.&lt;br /&gt;
    #&lt;br /&gt;
    # The person who gets all mail for userids &amp;lt; 1000&lt;br /&gt;
    # Make this empty to disable rewriting.&lt;br /&gt;
    root=postmaster&lt;br /&gt;
    # The place where the mail goes. The actual machine name is required&lt;br /&gt;
    # no MX records are consulted. Commonly mailhosts are named mail.domain.com&lt;br /&gt;
    # The example will fit if you are in domain.com and you mailhub is so named.&lt;br /&gt;
    mailhub=mailhub&lt;br /&gt;
    # Where will the mail seem to come from?&lt;br /&gt;
    #rewriteDomain=y&lt;br /&gt;
    # The full hostname&lt;br /&gt;
    hostname=&lt;br /&gt;
e andiamolo a modificare secondo le nostre esigenze.&amp;lt;br&amp;gt;&lt;br /&gt;
Come prima cosa modifichiamo il valore del parametro '''mailhub''' indicando l'host e la porta del nostro mailhub&lt;br /&gt;
    mailhub = smtp.mioserversmtp.org&lt;br /&gt;
dopodichè indichiamo nel parametro '''root''' la mail che si vuole utilizzare nel caso in cui l'eseguibile venga lanciato con id utente &amp;lt; 1000&lt;br /&gt;
    root = mioaccount@miodominio.org&lt;br /&gt;
si può infine modificare il parametro '''hostname''' indicando un nome host che rappresenta la macchina&lt;br /&gt;
    hostname = miocomputer.miodominio.org&lt;br /&gt;
oppure lasciarlo vuoto e in questo caso verrà calcolato secondo le configurazioni del sistema.&amp;lt;br&amp;gt;&lt;br /&gt;
Se il server smtp richiede autenticazione è necessario aggiungere i seguenti parametri di configurazione&lt;br /&gt;
    AuthUser = nomeutente&lt;br /&gt;
    AuthPass = password&lt;br /&gt;
&lt;br /&gt;
Una volta terminata la configurazione procediamo a testare il corretto funzionamento di ssmtp.&amp;lt;br&amp;gt;&lt;br /&gt;
Prima di tutto creiamo un file di testo semplice, chiamato per esempio '''mail.txt''', che contenga la nostra mail di prova&lt;br /&gt;
    To: accountqualsiasi@dominioqualsiasi.org&lt;br /&gt;
    From: mioaccount@miodominio.org&lt;br /&gt;
    Subject: sSMTP test&lt;br /&gt;
    Questa mail è un semplice test&lt;br /&gt;
a questo punto lanciamo ssmtp in questo modo&lt;br /&gt;
    # ssmtp mioaccount@miodominio.org &amp;lt; mail.txt&lt;br /&gt;
e controlliamo che la mail sia stata spedita correttamente.&lt;br /&gt;
&lt;br /&gt;
== Configurazione server smtp Gmail ==&lt;br /&gt;
L'utilizzo del server smtp di Gmail è molto semplice, in quanto oltre alle configurazioni base, bisogna aggiungere quelle relative all'autenticazione e alla connessione tramite protocollo cifrato&lt;br /&gt;
    # host remoto gmail&lt;br /&gt;
    mailhub=smtp.gmail.com:587&lt;br /&gt;
    # parametri connessione cifrata&lt;br /&gt;
    UseSTARTTLS=YES&lt;br /&gt;
    UseTLS=YES&lt;br /&gt;
    # parametri di autenticazione (account gmail)&lt;br /&gt;
    AuthUser=youraccount&lt;br /&gt;
    AuthPass=yourpassword&lt;br /&gt;
&lt;br /&gt;
= Collegamenti esterni =&lt;br /&gt;
* [http://packages.debian.org/stable/ssmtp Sito ufficiale]&lt;br /&gt;
&lt;br /&gt;
= Autori =&lt;br /&gt;
--[[Utente:Miklos|Miklos]]&lt;/div&gt;</description>
			<pubDate>Mon, 17 Sep 2012 15:30:54 GMT</pubDate>			<dc:creator>Miklos</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Ssmtp_Mini_Howto</comments>		</item>
		<item>
			<title>Linee guida per pacchettizzatori Slackware 14.0</title>
			<link>http://www.slacky.eu/slacky/Linee_guida_per_pacchettizzatori_Slackware_14.0</link>
			<guid isPermaLink="false">http://www.slacky.eu/slacky/Linee_guida_per_pacchettizzatori_Slackware_14.0</guid>
			<description>&lt;p&gt;Zerouno: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Packages]]&lt;br /&gt;
&lt;br /&gt;
= DOCUMENTO DA PERFEZIONARE =&lt;br /&gt;
&lt;br /&gt;
Questa guida vuole definire delle linee da seguire per semplificare la creazione di pacchetti slacky&lt;br /&gt;
Una copia di questa guida in formato testuale si può trovare [[Media:Linee guida-pacchettizzatori.txt|quì]] (potrebbe non essere aggiornata all'ultima release. fate sempre riferimento a questo documento per gli ultimi update)&lt;br /&gt;
&lt;br /&gt;
Si invita calorosamente a seguirla per uniformare il repository in modo che una seconda persona che voglia toccare uno SlackBuild sappia già dove mettere le mani senza doversi studiare il lavoro del suo predecessore.&lt;br /&gt;
&lt;br /&gt;
== Prerequisiti ==&lt;br /&gt;
I pacchetti che si troveranno sul repository slacky devono essere compilati su l'ultima Slackware-stable, installata full (escludibile KDEI). Potete installare i vostri programmi preferiti, l'importante è che le librerie aggiuntive non influenzino il corretto sviluppo del precompilato.&lt;br /&gt;
&lt;br /&gt;
Inoltre sul sistema deve essere installato [http://www.stabellini.net/requiredbuilder.html requiredbuilder] per la gestione delle dipendenze.&lt;br /&gt;
&lt;br /&gt;
Chi vuole installarsi particolari programmi che possano invadere le librerie standard (in particolare, per chi usa Slackware64, le multilib di compatibilità a 32bit di AlienBob) o vuole installarsi la current, può optare per l'utilizzo di una macchina virtuale o di una installazione in chroot (consigliata).&lt;br /&gt;
&lt;br /&gt;
La cosa importante è che tutte le dipendenze dei pacchetti vengano risolte all'interno di pacchetti slackware o di pacchetti slacky GIA' PRESENTI nel repository, e se non lo sono vanno preventivamente pacchettizzate.&lt;br /&gt;
&lt;br /&gt;
== Compilazione multi-arch ==&lt;br /&gt;
A partire da Slackware 13.1, su slacky.eu è disponibile il repository a 64bit (separato da quello a 32bit).&lt;br /&gt;
&lt;br /&gt;
Chi ha un pc a 32bit non ha problemi... compila solo pacchetti a 32bit.&lt;br /&gt;
&lt;br /&gt;
Con un sistema a 64bit si compila a 64bit e basta. I pacchettizzatori che vogliono mettere a disposizione il pacchetto a 32bit e a 64bit deve installarsi anche una Slackware 32bit, possibilmente allineata - come patchlevel e software aggiuntivo - con quella a 64bit. E' possibile installare questa Slackware in una macchina virtuale o in chroot. Nonostante la distribuzione 'madre' sia a 64bit, garantisco che una Slackware 32bit in chroot funziona e compila perfettamente, eccezion fatta per la compilazione di moduli kernel e pacchetti particolari.&lt;br /&gt;
&lt;br /&gt;
(Può essere utile lo [[Slackware Chroot AutoBuilder]] al proposito) &lt;br /&gt;
== Costituzione di un pacchetto ==&lt;br /&gt;
Per fare un pacchetto slacky abbiamo bisogno di:&lt;br /&gt;
* SlackBuild ([[Media:Template-linee guida pacchettizzatori.SlackBuild|scarica il template]])&lt;br /&gt;
* slack-desc ([[Media:Slack-desc-linee guida pacchettizzatori.template|scarica il template]])&lt;br /&gt;
* slack-required&lt;br /&gt;
* doinst.sh - opzionale. ([[Media:Doinst.sh-linee guida pacchettizzatori.template|scarica il template]])&lt;br /&gt;
* EULA.TXT - se richiesta.&lt;br /&gt;
Lo slack-required viene generato automaticamente da requiredbuilder.&lt;br /&gt;
&lt;br /&gt;
Nota: i template scaricabili potrebbero non essere aggiornati all'ultimissima versione. Fare sempre riferimento a questo documento per gli ultimi update.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== La directory dei sorgenti ==&lt;br /&gt;
I path standard dei repository slacky sono così composti:&lt;br /&gt;
&lt;br /&gt;
'''./categoriadelsoftware/nomedelpacchetto/versionedelpacchetto/&amp;lt;pacchetto.txz&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
'''./categoriadelsoftware/nomedelpacchetto/versionedelpacchetto/src/&amp;lt;sorgenti&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
quest'ultima directory conterrà lo SlackBuild, lo slack-desc, lo slack-required ed eventuali altri file da inserire nel pacchetto, se necessario, come il doinst.sh, gli initscript, qualche file di configurazione, eventuali patch e se necessario i sorgenti del software. Questi ultimi andrebbero messi solamente se non è possibile scaricarli semplicemente con una wget; per il resto andrebbe inserita una wget nello SlackBuild che scarichi i sorgenti dal sito ufficiale del produttore. Questo consente di risparmiare molto spazio sul server slacky e soprattutto molta banda. Là dove il software non è scaricabile con una wget ma solo interattivamente (riempimento di un capcha, accettazione di una licenza, login al sito, link con controlli di sessione, ecc...), allora si scaricano i sorgenti manualmente e si caricano sul server.&lt;br /&gt;
Se il pacchetto è non-gnu andrebbe caricata anche la licenza (solitamente presente all'interno del pacchetto) rinominandola in EULA.TXT e costringere l'utente ad accettarla PRIMA del download del pacchetto. Questo dovrebbe risolvere preventivamente problemi legali per i software commerciali.&lt;br /&gt;
&lt;br /&gt;
== Notazioni ==&lt;br /&gt;
Riguardo al nome del pacchetto, capita a volte che il nome di un software sia tipicamente scritto con l'iniziale maiuscola o altre parti del nome maiuscole. Alcuni esempi: MySQL, TiMidity++, MPlayer, Judy, ... . E' opportuno che il pacchetto che venga generato sia comunque scritto tale e quale al nome originale, lo stesso vale per lo SlackBuild e lo slack-desc.&lt;br /&gt;
&lt;br /&gt;
== I template ==&lt;br /&gt;
Per slack-desc, SlackBuild e doinst.sh sono stati elaborati dei template.&lt;br /&gt;
&lt;br /&gt;
Vi preghiamo di utilizzare questi per i vostri pacchetti, perché così facendo sarà più semplice condividerlo con gli altri pacchettizzatori (soprattutto ora che Slacky mette a disposizione i repository per 32 e 64 bit).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In questa sezione vengono riportati i template per intero. Nella sezione successiva provvederemo a spiegarli punto per punto per semplificare l'adattamento del template al proprio software.&lt;br /&gt;
=== SlackBuild ===&lt;br /&gt;
* 27/08/12 -&amp;gt; aggiunta licenza 3rd parti, supporto a DOCS e SLKFILES. aggiunto JOBS. sistemazioni varie.&lt;br /&gt;
* 04/07/12 -&amp;gt; comincia l'adattamento per la 14.0, aggiunto il supporto a xz e inserito alla fine dell'intestazione la riga &amp;quot;Require&amp;quot; dove possiamo inserire dipendenze che non vengono intercettate da requiredbuilder, esempio i pacchetti Slackware che troviamo in /extra.&lt;br /&gt;
* 24/04/11 -&amp;gt; adattato per 13.37, rimosso cmake, modificati i commenti, aggiunto autodetect tar, directory, documentazione e doinst.sh&lt;br /&gt;
* 14/06/10 -&amp;gt; rimosso depfinder&lt;br /&gt;
* 26/05/10 -&amp;gt; rimosso MAKEFLAGS (v. [[#compilazione|compilazione]] più in basso)&lt;br /&gt;
* 26/05/10 -&amp;gt; aggiunto CHOST e MAKEFLAGS&lt;br /&gt;
* 26/05/10 -&amp;gt; separato TAG e BUILD&lt;br /&gt;
* 24/05/10 -&amp;gt; aggiunto cmake.&lt;br /&gt;
&lt;br /&gt;
[[#intestazione|intestazione]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Heavily based on the Slackware 14.0 SlackBuild&lt;br /&gt;
# Written by &amp;lt;your name&amp;gt; ( your [at] email.address )&lt;br /&gt;
# Last build from &amp;lt;your name&amp;gt; ( your [at] email.address )&lt;br /&gt;
&lt;br /&gt;
# Slackware build script for &amp;lt;appname&amp;gt;&lt;br /&gt;
# Official Site: http://......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
se si copia uno slackbuild totalmente o in parte (parti speciali come post-make particolari ecc) inserire la licenza originale (comprensivo di autore) o linkare lo slackbuild originale. Per esempio&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Heavily based on the Slackware 14.0 SlackBuild&lt;br /&gt;
# Copyright 2009, 2010, 2011, 2012  Eric Hameleers, Eindhoven, NL&lt;br /&gt;
# Copyright 2009, 2010, 2011, 2012  Patrick J. Volkerding, Sebeka, MN, USA&lt;br /&gt;
# All rights reserved.&lt;br /&gt;
&lt;br /&gt;
# Written by Eric Hameleers &amp;lt; alien at slackware.com &amp;gt;&lt;br /&gt;
# Adapted to slacky's standard by &amp;lt;your name&amp;gt; ( your [at] email.address )&lt;br /&gt;
&lt;br /&gt;
# Slackware build script for &amp;lt;appname&amp;gt;&lt;br /&gt;
# Official Site: http://......&lt;br /&gt;
# Patches from ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
licenza. Se è già presente una licenza lasciarla, altrimenti mettere la seguente.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Redistribution and use of this script, with or without modification, is&lt;br /&gt;
# permitted provided that the following conditions are met:&lt;br /&gt;
#&lt;br /&gt;
# 1. Redistributions of this script must retain the above copyright&lt;br /&gt;
#    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
#&lt;br /&gt;
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED&lt;br /&gt;
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF&lt;br /&gt;
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO&lt;br /&gt;
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&lt;br /&gt;
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;&lt;br /&gt;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,&lt;br /&gt;
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR&lt;br /&gt;
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF&lt;br /&gt;
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
#&lt;br /&gt;
# Require: &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Modificare Require se necessario, vanno inserite solo le dipendenze extra, esempio quelle non rilevate da requiredbuilder e quelle che fanno parte degli extra di Slackware oppure le dipendenze necessare solamente per compilare. Queste non verranno inserite nel file required ma servono solo per agevolare i fruitori dello SlackBuild.&lt;br /&gt;
&lt;br /&gt;
Per esempio&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Require: apache-ant, jdk &amp;gt;= 6 | openjdk &amp;gt;= 6&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
set -e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[#parametri di base|parametri di base]] da modificare.  (il tag dovrebbe rimanere ''sl'')&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
PKGNAME=appname&lt;br /&gt;
VERSION=${VERSION:-1.4.1}&lt;br /&gt;
BUILD=${BUILD:-1}&lt;br /&gt;
TAG=${TAG:-sl}&lt;br /&gt;
ARCH=${ARCH:-i486}&lt;br /&gt;
SOURCE=&amp;quot;http://downloads.sourceforge.net/project/......./${PKGNAME}-${VERSION}/${PKGNAME}-${VERSION}.tar.gz&amp;quot;&lt;br /&gt;
TAR=      # empty = auto&lt;br /&gt;
DIR=      # empty = auto&lt;br /&gt;
DOCS=&amp;quot;AUTHORS COPYING INSTALL TODO TROUBLESHOOTING docs/ ...&amp;quot;&lt;br /&gt;
SLKFILES=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
DOCS indica tutti quei file presenti nei sorgenti da copiare in /usr/doc; in passato questa lista veniva modificata ogni volta nella sezione documentazione più in fondo.&lt;br /&gt;
&lt;br /&gt;
SLKFILES indica tutti quei file che sono necessari allo slackbuild in quanto ora vengono copiati per intero nella /usr/doc; dalla lista vanno esclusi slack-desc doinst.sh slack-required e EULA.TXT che vengono copiati in automatico se presenti.&lt;br /&gt;
[[#EULA|EULA]]. &lt;br /&gt;
Necessario per i pacchetti proprietari. Non modificare se non necessario.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -e EULA.TXT ];then&lt;br /&gt;
  more EULA.TXT&lt;br /&gt;
  echo &amp;quot;Do you accept terms? (yes/[no])&amp;quot;:&lt;br /&gt;
  read ACCEPT&lt;br /&gt;
  if [ &amp;quot;$ACCEPT&amp;quot; != &amp;quot;yes&amp;quot; ];then&lt;br /&gt;
    echo; echo &amp;quot;SlackBuild Aborted!!&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[#path di lavoro|path di lavoro]], [[#download|download]] e [[#architettura|architettura]].&lt;br /&gt;
Non modificare se non necessario. Queste impostazioni dovrebbero essere sufficienti per gran parte del software presente.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
JOBS=${JOBS:--j2}&lt;br /&gt;
CWD=$(pwd)&lt;br /&gt;
TMP=${TMP:-/tmp/buildpkgs/$PKGNAME}&lt;br /&gt;
PKG=$TMP/package-$PKGNAME&lt;br /&gt;
OUTPUT=${OUTPUT:-$CWD}&lt;br /&gt;
TAR=${TAR:-$(basename $SOURCE)}&lt;br /&gt;
DIR=${DIR:-$(echo &amp;quot;$TAR&amp;quot;|sed -r 's/(\.tar|)(.gz|.bz2|.xz|)$//')}&lt;br /&gt;
&lt;br /&gt;
if [ ! -e &amp;quot;$CWD/$TAR&amp;quot; ];then&lt;br /&gt;
  wget &amp;quot;$SOURCE&amp;quot; -O &amp;quot;$CWD/$TAR&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
CHOST=&amp;quot;i486&amp;quot;&lt;br /&gt;
if [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i486&amp;quot; ]; then&lt;br /&gt;
  SLKCFLAGS=&amp;quot;-O2 -march=i486 -mtune=i686&amp;quot;&lt;br /&gt;
  LIBDIRSUFFIX=&amp;quot;&amp;quot;&lt;br /&gt;
elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i586&amp;quot; ]; then&lt;br /&gt;
  SLKCFLAGS=&amp;quot;-O2 -march=i586 -mtune=i686&amp;quot;&lt;br /&gt;
  LIBDIRSUFFIX=&amp;quot;&amp;quot;&lt;br /&gt;
elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i686&amp;quot; ]; then&lt;br /&gt;
  SLKCFLAGS=&amp;quot;-O2 -march=i686 -mtune=i686&amp;quot;&lt;br /&gt;
  LIBDIRSUFFIX=&amp;quot;&amp;quot;&lt;br /&gt;
elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
  SLKCFLAGS=&amp;quot;-O2 -fPIC&amp;quot;&lt;br /&gt;
  LIBDIRSUFFIX=&amp;quot;64&amp;quot;&lt;br /&gt;
  CHOST=&amp;quot;x86_64&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
anche JOBS, lasciarlo a -j2; se hai bisogno di più parallelismo puoi effettuare l'override da fuori.&lt;br /&gt;
&lt;br /&gt;
[[#preparazione dei sorgenti|preparazione dei sorgenti]]. Solitamente da modificare solo se hai bisogno di patch o se il tuo sorgente è .zip o ha altre indicazioni speciali.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm -rf $TMP&lt;br /&gt;
mkdir -p $TMP $PKG $OUTPUT&lt;br /&gt;
cd $TMP&lt;br /&gt;
tar xvf $CWD/$TAR&lt;br /&gt;
cd $DIR&lt;br /&gt;
&lt;br /&gt;
# patch -p1 &amp;lt; $CWD/some_patch.diff&lt;br /&gt;
# zcat $CWD/compressed_patch.diff.gz |patch -p1&lt;br /&gt;
&lt;br /&gt;
chown -R root:root .&lt;br /&gt;
chmod -R u+w,go+r-w,a-s .&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[#compilazione|compilazione]]. Aggiungi i parametri di cui hai bisogno&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
CFLAGS=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
CXXFLAGS=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
./configure \&lt;br /&gt;
  --prefix=/usr \&lt;br /&gt;
  --libdir=/usr/lib$LIBDIRSUFFIX \&lt;br /&gt;
  --sysconfdir=/etc \&lt;br /&gt;
  --localstatedir=/var \&lt;br /&gt;
  --mandir=/usr/man \&lt;br /&gt;
  --build=$CHOST-slackware-linux&lt;br /&gt;
make $JOBS&lt;br /&gt;
make install DESTDIR=$PKG&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[#personalizzazione|personalizzazione]]. (rimozione file, modifiche ecc)&lt;br /&gt;
&lt;br /&gt;
Rinomina quì i file di configurazione e gli rc script e inserisci eventuali altri nuovi file&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# cat $CWD/rc.application.sh &amp;gt; $PKG/etc/rc.d/rc.application.new&lt;br /&gt;
# cat $PKG/etc/init.d/initscript &amp;gt;&amp;gt; $PKG/etc/rc.d/rc.program.new&lt;br /&gt;
# rm $PKG/etc/init.d/initscript&lt;br /&gt;
# mv $PKG/etc/appl.conf $PKG/etc/appl.conf.new&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[#documentazione|documentazione]].&lt;br /&gt;
copia qualche file di documentazione dai sorgenti. Se hai valorizzato la variabile DOCS e SLKFILES sopra non dovrebbero essere necessarie modifiche, a meno che i sorgenti non abbiano path speciali&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION&lt;br /&gt;
cp -r $DOCS $PKG/usr/doc/$PKGNAME-$VERSION&lt;br /&gt;
&lt;br /&gt;
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild&lt;br /&gt;
cd $CWD&lt;br /&gt;
for SB in $PKGNAME.SlackBuild slack-desc doinst.sh doinst.sh.gz EULA.TXT $SLKFILES;do&lt;br /&gt;
  [ -e $SB ]&amp;amp;&amp;amp;cp -r $SB $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/$SB&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
compressione man pages&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -d $PKG/usr/man ]; then&lt;br /&gt;
    ( cd $PKG/usr/man&lt;br /&gt;
      find . -type f -exec gzip -9 {} \;&lt;br /&gt;
      for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done&lt;br /&gt;
    )&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[#strip|strip]]. Strip dei file binari&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
( cd $PKG&lt;br /&gt;
  find . | xargs file | grep &amp;quot;executable&amp;quot; | grep ELF | cut -f 1 -d : | xargs -r strip --strip-unneeded 2&amp;gt; /dev/null || true&lt;br /&gt;
  find . | xargs file | grep &amp;quot;shared object&amp;quot; | grep ELF | cut -f 1 -d : | xargs -r strip --strip-unneeded 2&amp;gt; /dev/null || true&lt;br /&gt;
  find . | xargs file | grep &amp;quot;current ar archive&amp;quot; | cut -f 1 -d : | xargs -r strip --strip-unneeded 2&amp;gt; /dev/null || true&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[#slack-desc e doinst.sh|slack-desc e doinst.sh]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p $PKG/install&lt;br /&gt;
cat $CWD/slack-desc &amp;gt; $PKG/install/slack-desc&lt;br /&gt;
[ -e $CWD/doinst.sh ] &amp;amp;&amp;amp; cat $CWD/doinst.sh &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
[ -e $CWD/doinst.sh.gz ] &amp;amp;&amp;amp; zcat $CWD/doinst.sh.gz &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[#slack-required|slack-required]] e [[#costruzione pacchetto|costruzione pacchetto]].&lt;br /&gt;
Lancia requiredbuilder per la gestione delle dipendenze. E' opportuno che questo sia installato nel sistema, ma comunque viene effettuato il controllo di esistenza.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd $PKG&lt;br /&gt;
chown -R root:root $PKG&lt;br /&gt;
&lt;br /&gt;
if [ -x &amp;quot;$(which requiredbuilder 2&amp;gt;/dev/null)&amp;quot; ];then&lt;br /&gt;
  requiredbuilder -y -v -s $CWD $PKG   # add &amp;quot;-c -b&amp;quot; if you have binary files in /usr/share &lt;br /&gt;
  [ -e install/slack-required ]&amp;amp;&amp;amp;cat install/slack-required &amp;gt; $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/slack-required&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
/sbin/makepkg -l y -c n $OUTPUT/$PKGNAME-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; = &amp;quot;--cleanup&amp;quot; ]; then&lt;br /&gt;
  rm -rf $TMP&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ovviamente eliminate tutte le parti che non interessano il vostro pacchetto. Questa è la base. Ogni pacchetto avrà le sue particolarità, ma la struttura dovrebbe comunque rimanere su questa linee. Più in basso trovate i dettagli dei significati delle singole sezione e cosa/come aggiungere o modificare allo script.&lt;br /&gt;
&lt;br /&gt;
=== doinst.sh ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
config() {&lt;br /&gt;
  NEW=&amp;quot;$1&amp;quot;&lt;br /&gt;
  OLD=&amp;quot;$(dirname $NEW)/$(basename $NEW .new)&amp;quot;&lt;br /&gt;
  # If there's no config file by that name, mv it over:&lt;br /&gt;
  if [ ! -r $OLD ]; then&lt;br /&gt;
    mv $NEW $OLD&lt;br /&gt;
  elif [ &amp;quot;$(cat $OLD | md5sum)&amp;quot; = &amp;quot;$(cat $NEW | md5sum)&amp;quot; ]; then&lt;br /&gt;
    # toss the redundant copy&lt;br /&gt;
    rm $NEW&lt;br /&gt;
  fi&lt;br /&gt;
  # Otherwise, we leave the .new copy for the admin to consider...&lt;br /&gt;
}&lt;br /&gt;
#if [ -e etc/rc.d/rc.script ]; then&lt;br /&gt;
#  cp -a etc/rc.d/rc.script etc/rc.d/rc.script.new.incoming&lt;br /&gt;
#  cat etc/rc.d/rc.script.new &amp;gt; etc/rc.d/rc.script.new.incoming&lt;br /&gt;
#  mv etc/rc.d/rc.script.new.incoming etc/rc.d/rc.script.new&lt;br /&gt;
#fi&lt;br /&gt;
#config etc/rc.d/rc.script.new&lt;br /&gt;
#config etc/configfile.new&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ovviamente '''eliminate''' tutte le parti che non interessano il vostro pacchetto. Se non avete file di configurazione eliminate anche tutta la prima parte. Più in basso trovate i dettagli dei significati delle singole sezione e cosa/come aggiungere o modificare allo script.&lt;br /&gt;
&lt;br /&gt;
Si raccomanda di fare attenzione agli end-of-line all'ultima riga del file. Alcuni editor non lo inseriscono manualmente. Per verificare editate con '''vi''' e controllate se in fondo compare '''noeol'''. In tal caso è sufficiente risalvare il file con '''vi''' e il problema si risolve. Per essere comunque sicuri, lasciate sempre una riga vuota alla fine del file.&lt;br /&gt;
&lt;br /&gt;
=== slack-desc ===&lt;br /&gt;
 # HOW TO EDIT THIS FILE:&lt;br /&gt;
 # The &amp;quot;handy ruler&amp;quot; below makes it easier to edit a package description.  Line&lt;br /&gt;
 # up the first '|' above the ':' following the base package name, and the '|' on&lt;br /&gt;
 # the right side marks the last column you can put a character in.  You must make&lt;br /&gt;
 # exactly 11 lines for the formatting to be correct.  It's also customary to&lt;br /&gt;
 # leave one space after the ':'.&lt;br /&gt;
 &lt;br /&gt;
        |-----handy-ruler------------------------------------------------------|&lt;br /&gt;
 pkgname: pkgname - A title for package&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname: Long description&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
ricorda... esattamente 11 righe, e l'handy-ruler esattamente 72 caratteri. Dettagli più in basso.&lt;br /&gt;
&lt;br /&gt;
Attenzione ai ^M. Se il file è stato editato in windows, è probabile che questi caratteri vengano inseriti a fine linea. Se usate '''vim''' notereste una dicitura '''dos''' in fondo. Altrimenti potete verificarlo con '''cat -A slack-desc'''. Per risistemare la situazione lanciare il comando &amp;quot;'''sed -i -e 's/^M//' slack-desc'''&amp;quot; in cui ^M non è il carattere ^ e M ma si ottiene premendo prima ctrl+V e poi ctrl+M&lt;br /&gt;
== Dettagli dei template ==&lt;br /&gt;
Poichè la compilazione dei software opensource nella maggior parte dei casi si compila con un sempilce &amp;quot;./configure&amp;amp;&amp;amp;make&amp;amp;&amp;amp;make install&amp;quot;, nella grande maggioranza dei casi, sarà sufficiente effettuare piccole modifiche ai template di cui sopra (nome, versione, url e descrizione) per creare il pacchetto slacky.&lt;br /&gt;
&lt;br /&gt;
Tuttavia quì presentiamo delle linee guida su come modificare i template per adattarlo ai pacchetti in cui non è sufficiente il template base.&lt;br /&gt;
&lt;br /&gt;
Non potrò esaurire quì tutta la caseistica e la problematica che si può presentare, ma quanto descritto dovrebbe essere sufficiente per un buon numero di pacchetti.&lt;br /&gt;
=== SlackBuild ===&lt;br /&gt;
==== intestazione ====&lt;br /&gt;
* La shell da utilizzare è '''sempre''' ''/bin/sh''&lt;br /&gt;
* Specificare per quale versione di slackware è scritto lo SlackBuild&lt;br /&gt;
* L'autore dello SlackBuild. Potete mettere il nome o il nick, ma come contatto possibilmente mettete un indirizzo email (mio &amp;lt;at&amp;gt; indir.email). Se state ricompilando un pacchetto di terzi lasciate l'autore &amp;quot;così com'è&amp;quot; (in pratica, non &amp;quot;impossessatevi&amp;quot; dello slackbuild). Se lo slackbuild originale non è slacky, molto probabilmente il formato della intestazione sarà diverso; lasciatela così com'è ed inserite una nota di adattamento&lt;br /&gt;
* L'ultimo che l'ha modificato e compilato (ovvero tu)&lt;br /&gt;
* Il nome del pacchetto e il sito ufficiale&lt;br /&gt;
* Una licenza per la distribuzione dello slackbuild&lt;br /&gt;
* Eventuale inserimento delle dipendenze extra, esempio quelle non rilevate da requiredbuilder e quelle che fanno parte degli extra di Slackware. Queste non verranno inserite nel file required ma servono solo per agevolare i fruitori dello SlackBuild.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Heavily based on the Slackware 14.0 SlackBuild&lt;br /&gt;
&lt;br /&gt;
# Written by &amp;lt;your name&amp;gt; ( your [at] email.address )&lt;br /&gt;
# Last build from &amp;lt;your name&amp;gt; ( your [at] email.address )&lt;br /&gt;
&lt;br /&gt;
# Slackware build script for &amp;lt;appname&amp;gt;&lt;br /&gt;
# Official Site: http://......&lt;br /&gt;
&lt;br /&gt;
# Redistribution and use of this script, with or without modification, is&lt;br /&gt;
# permitted provided that the following conditions are met:&lt;br /&gt;
#&lt;br /&gt;
# 1. Redistributions of this script must retain the above copyright&lt;br /&gt;
#    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
#&lt;br /&gt;
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED&lt;br /&gt;
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF&lt;br /&gt;
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO&lt;br /&gt;
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&lt;br /&gt;
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;&lt;br /&gt;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,&lt;br /&gt;
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR&lt;br /&gt;
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF&lt;br /&gt;
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
&lt;br /&gt;
# Require: apache-ant, jdk &amp;gt;= 6 | openjdk &amp;gt;= 6&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
di terzi:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Heavily based on the Slackware 14.0 SlackBuild&lt;br /&gt;
# Copyright 2009, 2010, 2011, 2012  Eric Hameleers, Eindhoven, NL&lt;br /&gt;
# Copyright 2009, 2010, 2011, 2012  Patrick J. Volkerding, Sebeka, MN, USA&lt;br /&gt;
# All rights reserved.&lt;br /&gt;
 &lt;br /&gt;
# Written by Eric Hameleers &amp;lt; alien at slackware.com &amp;gt;&lt;br /&gt;
# Adapted to slacky's standard by &amp;lt;your name&amp;gt; ( your [at] email.address )&lt;br /&gt;
 &lt;br /&gt;
# Slackware build script for &amp;lt;appname&amp;gt;&lt;br /&gt;
# Official Site: http://......&lt;br /&gt;
# Patches from ...&lt;br /&gt;
&lt;br /&gt;
# Redistribution and use of this script, with or without modification, is&lt;br /&gt;
# permitted provided that the following conditions are met:&lt;br /&gt;
#&lt;br /&gt;
# 1. Redistributions of this script must retain the above copyright&lt;br /&gt;
#    notice, this list of conditions and the following disclaimer.&lt;br /&gt;
#&lt;br /&gt;
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED&lt;br /&gt;
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF&lt;br /&gt;
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO&lt;br /&gt;
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&lt;br /&gt;
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;&lt;br /&gt;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,&lt;br /&gt;
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR&lt;br /&gt;
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF&lt;br /&gt;
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
&lt;br /&gt;
# Require: apache-ant, jdk &amp;gt;= 6 | openjdk &amp;gt;= 6&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== parametri di base ====&lt;br /&gt;
La seguente sezione è quella che contiene i parametri base, cioè il nome del pacchetto, la versione, l'architettura, la build version, l'url diretto da dove scaricare i sorgenti, la documentazione da copiare in /usr/doc e i file presenti nella directory dello slackbuild. Per quanto riguarda il BUILD, la norma è che ad ogni modifica del pacchetto, ricompilazione ecc, il numero va incrementato, mentre all'upgrade (cambio di versione) questo numero ritorna ad 1. Per quanto riguarda il TAG (la sigla dopo il numero), a partire dal repository per Slackware 13.1 questo deve essere obbligatoriamente 'sl', inclusi per i pacchetti già presenti nel 13.0 che verranno semplicemente ricompilati senza modifiche per essere portati nel nuovo repository. Questo perchè ora la sigla non indica più l'autore ma il repository su cui si trova.&lt;br /&gt;
&lt;br /&gt;
Per l'url utilizzate esclusivamente il sito ufficiale del prodotto. Occhio ai doppi apici in SOURCE= . Spesso funziona anche senza ma in qualche caso può succedere un casino. Fate anche attenzione a quegli url che come separatore non hanno un trattino bensì un underscore ('''_''') pechè in tal caso la sintassi $PKGNAME_$VERSION non funziona, visto che bash considera quell'underscore come parte del nome della variabile. In tal caso sostituite $PKGNAME con ${PKGNAME}: ${PKGNAME}_${VERSION}.&lt;br /&gt;
&lt;br /&gt;
In DOC mettete la documentazione che verrà copiata nella /usr/doc, quella presente nella radice del sorgente, per capirci (README, INSTALL, ecc..); sono ammessi nomi di directory (per chiarezza mettiamoci una / finale, per esempio doc/, anche se in teoria non serve. Sono accettati i caratteri jolly supportati da cp (README* per esempio).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
PKGNAME=appname&lt;br /&gt;
VERSION=${VERSION:-1.4.1}&lt;br /&gt;
BUILD=${BUILD:-1}&lt;br /&gt;
TAG=${TAG:-sl}&lt;br /&gt;
ARCH=${ARCH:-i486}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Nel nuovo template il nome del tar file scaricato viene riconosciuto in automatico con un ''basename'' del sorgente, quindi non è necessario modificare wget e tar se si cambia formato di compressione o se il nome usa _ invece di - o altro. Il primo livello di directory del tar viene calcolato automaticamente essere 'nome tarfile' senza tar.gz . In questi casi lasciare DIR e TAR vuote.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
SOURCE=&amp;quot;http://downloads.sourceforge.net/project/......./${PKGNAME}-${VERSION}/${PKGNAME}-${VERSION}.tar.gz&amp;quot;&lt;br /&gt;
TAR=      # empty = auto&lt;br /&gt;
DIR=      # empty = auto&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In caso una di queste due asserzioni non è vera, non è necessario andare a modificare tutto il resto dello SB (if [ ! -e , wget, tar, cd, eventuale altre parti), ma è sufficente modificare le variabili TAR e DIR.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
SOURCE=&amp;quot;http://downloads.sourceforge.net/project/......./${PKGNAME}/${PKGNAME}_${VERSION}.tar.bz2?download&amp;quot;&lt;br /&gt;
TAR=${PKGNAME}_${VERSION}.tar.bz2      # empty = auto&lt;br /&gt;
DIR=${PKGNAME}${VERSION}               # empty = auto&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In SLKFILES vanno messi tutti i file che si trovano nella directory dello slackbuild così questi verranno copiati automaticamente in /usr/doc/pacchetto-versione/Slackbuild. Tale variabile non deve contenere lo slackbuild stesso, slack-desc, slack-required, doinst.sh, doinst.sh.gz, EULA.TXT in quanto lo slackbuild del template è in grado di rilevarli e copiarli automaticamente. Eccettuate anche i sorgenti scaricati dalla wget. Inserite invece eventuali patch, file di configurazione custom ecc..; per capirci, tutto quello che viene caricato poi su slacky deve essere presente in quella variabile. In caso non hai file aggiuntivi potete lasciarla vuota.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
DOCS=&amp;quot;AUTHORS COPYING INSTALL TODO TROUBLESHOOTING docs/&amp;quot;&lt;br /&gt;
SLKFILES=&amp;quot;makefile.diff myfile.conf&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NON ponete la variabile JOBS in questa sezione; quella è inserita più avanti, tra i parametri fissi.&lt;br /&gt;
&lt;br /&gt;
==== EULA ====&lt;br /&gt;
Nel caso si tratta di un software non OpenSource, o che per la sua distribuzione è necessario l'accettazione di una licenza, prendere il file di licenza dai sorgenti (solitamente LICENSE.TXT o simili) e metterla nella directory dello SlackBuild con nome EULA.TXT.&lt;br /&gt;
La seguente sezione provvederà, se presente, a mostrare la EULA a schermo e a chiedere all'utente di accettarla.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -e EULA.TXT ];then&lt;br /&gt;
  more EULA.TXT&lt;br /&gt;
  echo &amp;quot;Do you accept terms? (yes/[no])&amp;quot;&lt;br /&gt;
  read ACCEPT&lt;br /&gt;
  if [ &amp;quot;$ACCEPT&amp;quot; != &amp;quot;yes&amp;quot; ];then&lt;br /&gt;
    echo; echo &amp;quot;SlackBuild Aborted!!&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Questa sezione può essere lasciata anche in caso di software OpenSource. Se non è presente EULA.TXT verrà ignorata.&lt;br /&gt;
==== path di lavoro ====&lt;br /&gt;
Questa parte è fissa, cioè la determinazione dei path di lavoro. Molto difficilmente dovrete variare qualcosa. Se la directory dei sorgenti non è $PKGNAME-$VERSION utilizzate le variabili TAR e DIR precedenti.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
JOBS=${JOBS:--j2}&lt;br /&gt;
CWD=$(pwd)&lt;br /&gt;
TMP=${TMP:-/tmp/buildpkgs/$PKGNAME}&lt;br /&gt;
PKG=$TMP/package-$PKGNAME&lt;br /&gt;
OUTPUT=${OUTPUT:-$CWD}&lt;br /&gt;
TAR=${TAR:-$(basename $SOURCE)}&lt;br /&gt;
DIR=${DIR:-$(echo &amp;quot;$TAR&amp;quot;|sed -r 's/(\.tar|)(.gz|.bz2|.xz|)$//')}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
JOBS è la variabile che determina il numero di processi paralleli per compilare (make -j2 per capirci). Non variamo questo valore. Se avete un processore potente e volete compilare veloce potete fare l'override locale quando lanciate lo slackbuild:&lt;br /&gt;
 export JOBS=-j7&lt;br /&gt;
 ./package.SlackBuild&lt;br /&gt;
o&lt;br /&gt;
 JOBS=-j7 ./package.SlackBuild&lt;br /&gt;
==== download ====&lt;br /&gt;
Quindi si fa il download del pacchetto. Modificare solamente se si necessitano cose particolari, per esempio altri tipi di download, download di più file o patch...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ ! -e &amp;quot;$CWD/$TAR&amp;quot; ];then&lt;br /&gt;
  wget &amp;quot;$SOURCE&amp;quot; -O &amp;quot;$CWD/$TAR&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== architettura ====&lt;br /&gt;
In base all'architettura definita in $ARCH, vengono definiti i parametri della compilazione. Da notare il LIBDIRSUFFIX che determina se le librerie andranno a finire in /usr/lib o /usr/lib64&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
CHOST=&amp;quot;i486&amp;quot;&lt;br /&gt;
if [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i486&amp;quot; ]; then&lt;br /&gt;
  SLKCFLAGS=&amp;quot;-O2 -march=i486 -mtune=i686&amp;quot;&lt;br /&gt;
  LIBDIRSUFFIX=&amp;quot;&amp;quot;&lt;br /&gt;
elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i586&amp;quot; ]; then&lt;br /&gt;
  SLKCFLAGS=&amp;quot;-O2 -march=i586 -mtune=i686&amp;quot;&lt;br /&gt;
  LIBDIRSUFFIX=&amp;quot;&amp;quot;&lt;br /&gt;
elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;i686&amp;quot; ]; then&lt;br /&gt;
  SLKCFLAGS=&amp;quot;-O2 -march=i686 -mtune=i686&amp;quot;&lt;br /&gt;
  LIBDIRSUFFIX=&amp;quot;&amp;quot;&lt;br /&gt;
elif [ &amp;quot;$ARCH&amp;quot; = &amp;quot;x86_64&amp;quot; ]; then&lt;br /&gt;
  SLKCFLAGS=&amp;quot;-O2 -fPIC&amp;quot;&lt;br /&gt;
  LIBDIRSUFFIX=&amp;quot;64&amp;quot;&lt;br /&gt;
  CHOST=&amp;quot;x86_64&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== preparazione dei sorgenti ====&lt;br /&gt;
Segue la:&lt;br /&gt;
* rimozione di una compilazione precedente&lt;br /&gt;
* scompattazione dei sorgenti&lt;br /&gt;
* applicazione di eventuali patch; queste devono essere presenti nella stessa directory dello SlackBuild e possono essere facoltativamente compresse.&lt;br /&gt;
* settaggio dei permessi. E' opportuno che i permessi dei sorgenti siano solamente 755 o 644 e che i file siano tutti di root.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm -rf $TMP&lt;br /&gt;
mkdir -p $TMP $PKG $OUTPUT&lt;br /&gt;
 &lt;br /&gt;
cd $TMP&lt;br /&gt;
tar xvf $CWD/$TAR&lt;br /&gt;
cd $DIR&lt;br /&gt;
&lt;br /&gt;
# patch -p1 &amp;lt; $CWD/some_patch.diff&lt;br /&gt;
# zcat $CWD/compressed_patch.diff.gz |patch -p1&lt;br /&gt;
&lt;br /&gt;
chown -R root:root .&lt;br /&gt;
chmod -R u+w,go+r-w,a-s .&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== compilazione ====&lt;br /&gt;
Comincia la compilazione. Nella maggior parte dei casi sarà sufficiente utilizzare lo standard ./configure&amp;amp;&amp;amp;make&amp;amp;&amp;amp;make install.&lt;br /&gt;
&lt;br /&gt;
Per quanto ri guarda i parametri del '''configure''', questi variano ovviamente da pacchetto a pacchetto, ma alcuni standard vanno seguiti:&lt;br /&gt;
* Il pacchetto va installato in /usr&lt;br /&gt;
* La configurazione deve andare in /etc&lt;br /&gt;
* Le man pages vanno in /usr/man. Se l'installer le mette in /usr/share/man allora bisogna spostarle successivamente.&lt;br /&gt;
* I dati andrebbero messi in /var/nomepacchetto o /var/lib/nomepacchetto, a seconda del pacchetto. P.E. apache li mette in /var/www, mysql li mette in /var/lib/mysql&lt;br /&gt;
* Le ''librerie'' (questo è importante) vanno messe in /usr/lib per i pacchetti a 32bit e in /usr/lib64 per i pacchetti a 64bit. Questo viene fatto automaticamente se si mette correttamente ''--libdir=/usr/lib$LIBDIRSUFFIX'' e sopra viene definito LIBDIRSUFFIX a seconda dell'architettura. Se avete una macchina a 32bit e scrivete solamente pacchetti a 32bit, lasciate comunque questa accortezza per aiutare chi vorrà compilare il pacchetto a 64bit&lt;br /&gt;
* In aggiunta metterete tutte le altre opzioni specifiche del software.&lt;br /&gt;
* Per passare parametri a make (tipo &amp;quot;-j2&amp;quot; per ottimizzare la velocità, e altro), non mettetelo quì (scrivendo make -j2), ma utilizzate la variabile JOBS da fuori lo slackbuild come spiegato poco sopra.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
CFLAGS=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
CXXFLAGS=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
./configure \&lt;br /&gt;
  --prefix=/usr \&lt;br /&gt;
  --libdir=/usr/lib$LIBDIRSUFFIX \&lt;br /&gt;
  --sysconfdir=/etc \&lt;br /&gt;
  --localstatedir=/var \&lt;br /&gt;
  --mandir=/usr/man \&lt;br /&gt;
  --build=$CHOST-slackware-linux&lt;br /&gt;
make $JOBS&lt;br /&gt;
make install DESTDIR=$PKG&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== cmake ====&lt;br /&gt;
Alcuni pacchetti per essere compilati necessitano di ''cmake'' anzichè ''./configure''. In tal caso valgono comunque tutte le considerazioni fatte sopra, ma la sintassi è diversa:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
( mkdir -p build&lt;br /&gt;
cd build&lt;br /&gt;
cmake .. \&lt;br /&gt;
  -DCMAKE_C_FLAGS:STRING=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
  -DCMAKE_CXX_FLAGS:STRING=&amp;quot;$SLKCFLAGS&amp;quot; \&lt;br /&gt;
  -DCMAKE_INSTALL_PREFIX=/usr \&lt;br /&gt;
  -DMAN_INSTALL_DIR=/usr/man \&lt;br /&gt;
  -DSYSCONF_INSTALL_DIR=/etc \&lt;br /&gt;
  -DLIB_SUFFIX=${LIBDIRSUFFIX}&lt;br /&gt;
make &lt;br /&gt;
make install DESTDIR=$PKG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== personalizzazione ====&lt;br /&gt;
Le sezioni che seguono sono quelle che probabilmente più dovrete personalizzare. Quì si devono cancellare file inutili o che rischiano di sovrascrivere quelli di sistema, spostare alcuni file in altri path ecc.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
## Do special operations&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Se avete compilato un modulo perl, probabilmete vi sarà stato creato un file che, se messo nel pacchetto, va a sostiturire quello già presente sul sistema. Ovviamente se non state compilando un modulo perl non inserirete questa sezione.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
( cd $PKG&lt;br /&gt;
  # Remove 'special' files&lt;br /&gt;
  find . -name perllocal.pod \&lt;br /&gt;
    -o -name &amp;quot;.packlist&amp;quot; \&lt;br /&gt;
    -o -name &amp;quot;*.bs&amp;quot; \&lt;br /&gt;
    | xargs rm -f&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Potrete anche copiare file di configurazione ed eventuali altri file dalla directory dello SlackBuild.&lt;br /&gt;
&lt;br /&gt;
Ricordate poi che gli script di start e stop si dovrebbero mettere possibilmente sotto /etc/rc.d; ricordo anche che tutti i file di configurazione (script inclusi) vanno messi con l'estensione ''.new'' per essere poi rinominati a posteriori nel '''doinst.sh'''..&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cat $CWD/rc.application.sh &amp;gt; $PKG/etc/rc.d/rc.application.new&lt;br /&gt;
cat $PKG/etc/init.d/initscript &amp;gt;&amp;gt; $PKG/etc/rc.d/rc.program.new&lt;br /&gt;
rm $PKG/etc/init.d/initscript&lt;br /&gt;
mv $PKG/etc/appl.conf $PKG/etc/appl.conf.new&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== documentazione ====&lt;br /&gt;
Inoltre copiamo tutta la documentazione che riusciamo a trovare nei sorgenti del pacchetto (README, INSTALL, ChangeLog, ecc..) nella directory della documentazione. Tutti questi file li mettiamo nella variabile DOCS come spiegato sopra. Nella sottodirectory SlackBuild/ ci metteremo anche lo SlackBuild con cui è stato generato il pacchetto e gli altri file (vedi parametro SLKFILES).&lt;br /&gt;
Se valorizzate correttamente queste due variabili non dovrebbe essere necessario fare altre modifiche a questa sezione (a meno di situazioni particolari, come di documentazioni prese da sottodirectory o rianalizzate o altro)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION&lt;br /&gt;
cp -r $DOCS $PKG/usr/doc/$PKGNAME-$VERSION&lt;br /&gt;
 &lt;br /&gt;
mkdir -p $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild&lt;br /&gt;
cd $CWD&lt;br /&gt;
for SB in $PKGNAME.SlackBuild slack-desc doinst.sh doinst.sh.gz EULA.TXT $SLKFILES;do&lt;br /&gt;
  [ -e $SB ]&amp;amp;&amp;amp;cp -r $SB $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/$SB&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Lo standard di slackware è che tutte le manpages siano compresse con gzip; di conseguenza cerchiamo versioni non compresse che installano i pacchetti e comprimiamole.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -d $PKG/usr/man ]; then&lt;br /&gt;
    ( cd $PKG/usr/man&lt;br /&gt;
      find . -type f -exec gzip -9 {} \;&lt;br /&gt;
      for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done&lt;br /&gt;
    )&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== strip ====&lt;br /&gt;
Puliamo anche i file binari e le librerie eliminando tutti gli strascichi che lascia gcc al fine di debuggure e linkare tra di loro gli object generati.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
( cd $PKG&lt;br /&gt;
  find . | xargs file | grep &amp;quot;executable&amp;quot; | grep ELF | cut -f 1 -d : | xargs -r strip --strip-unneeded 2&amp;gt; /dev/null || true&lt;br /&gt;
  find . | xargs file | grep &amp;quot;shared object&amp;quot; | grep ELF | cut -f 1 -d : | xargs -r strip --strip-unneeded 2&amp;gt; /dev/null || true&lt;br /&gt;
  find . | xargs file | grep &amp;quot;current ar archive&amp;quot; | cut -f 1 -d : | xargs -r strip --strip-unneeded 2&amp;gt; /dev/null || true&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== slack-desc e doinst.sh ====&lt;br /&gt;
Abbiamo quasi finito... Popoliamo la directory install/ del pacchetto. Quì ci andrà lo slack-desc e, se necessario, il doinst.sh. Con l'attuale template non è più necessario aggiungere manualmente la riga del doinst, perchè viene cercato e copiato solo se esiste. Quindi non eliminiamo tale linea. Facoltativamente potete mettere il doinst.sh gzippato.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p $PKG/install&lt;br /&gt;
cat $CWD/slack-desc &amp;gt; $PKG/install/slack-desc&lt;br /&gt;
[ -e $CWD/doinst.sh ] &amp;amp;&amp;amp; cat $CWD/doinst.sh &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
[ -e $CWD/doinst.sh.gz ] &amp;amp;&amp;amp; zcat $CWD/doinst.sh.gz &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Possibilmente il doinst.sh non lo creiamo direttamente dentro lo SlackBuild, ma mettiamolo come file esterno per poi copiarlo nella directory install/. Se poi abbiamo bisogno di aggiungere operazioni di cui non sappiamo a priori le specifiche, ma le sappiamo solo dopo la compilazione, allora aggiungiamole da dentro lo SlackBuild con un &amp;gt;&amp;gt;. Un esempio di operazione necessaria è quella di avviare uno script di postinstallazione presente sotto la /usr/lib; ovviamente non sappiamo a priori se sarà in /usr/lib o /usr/lib64.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[ -e $CWD/doinst.sh ] &amp;amp;&amp;amp; cat $CWD/doinst.sh &amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
echo &amp;quot;( cd usr/lib$LIBDIRSUFFIX/$PKGNAME ; ./postinstall.sh )&amp;quot; &amp;gt;&amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== slack-required ====&lt;br /&gt;
Ora andiamo a costruire il file delle dipendenze ''slack-required''. Questo si genera con il tool '''requiredbuilder'''. Ricordiamoci di installare sempre l'ultima versione di questo tool prima di compilare.&lt;br /&gt;
Dovremo anche assicurarci che i file del pacchetto siano tutti di root, poi lanciamo il requiredbuilder per costruire le dipendenze e finalmente creiamo il pacchetto.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd $PKG&lt;br /&gt;
chown -R root:root $PKG&lt;br /&gt;
&lt;br /&gt;
if [ -x &amp;quot;$(which requiredbuilder 2&amp;gt;/dev/null)&amp;quot; ];then&lt;br /&gt;
  requiredbuilder -y -v -s $CWD $PKG  # add &amp;quot;-c -b&amp;quot; if you have binary files in /usr/share &lt;br /&gt;
  [ -e install/slack-required ]&amp;amp;&amp;amp;cat install/slack-required &amp;gt; $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/slack-required&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Se il nostro pacchetto genera binari in /usr/share aggiungiamo anche il -c -b come parametri perchè per default non vengono cercate dipendenze su questo path. Se sappiamo che il nostro pacchetto necessita di qualche dipendenza che non può essere intercettata da requiredbuilder perchè non supportata, utilizziamo la variabile ADD:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -x &amp;quot;$(which requiredbuilder 2&amp;gt;/dev/null)&amp;quot; ];then&lt;br /&gt;
  ADD=&amp;quot;$(cd /var/log/packages;ls apache-ant-1*|sed -r 's/apache-ant-/apache-ant &amp;gt;= /')&amp;quot; \&lt;br /&gt;
  requiredbuilder -y -v -s $CWD $PKG  # add &amp;quot;-c -b&amp;quot; if you have binary files in /usr/share&lt;br /&gt;
  [ -e install/slack-required ]&amp;amp;&amp;amp;cat install/slack-required &amp;gt; $PKG/usr/doc/$PKGNAME-$VERSION/SlackBuild/slack-required&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== costruzione pacchetto ====&lt;br /&gt;
Finalmente abbiamo finito. Possiamo costruire il nostro pacchetto.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/sbin/makepkg -l y -c n $OUTPUT/$PKGNAME-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Se poi il pacchettizzatore è sicuro che andrà tutto a buon fine, si può decidere di lanciare lo slackbuild con il parametro --cleanup per rimuovere le directory di lavoro al termine del processo.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; = &amp;quot;--cleanup&amp;quot; ]; then&lt;br /&gt;
  rm -rf $TMP&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== doinst.sh ===&lt;br /&gt;
Il doinst.sh viene utilizzato per effettuare tutte quelle operazioni che provvederanno ad integrare il pacchetto nel resto della distribuzione. Per esempi tipici di doinst.sh vedi la directory /var/log/scripts che è una raccolta dei doinst.sh di tutti i pacchetti installati sul sistema.&lt;br /&gt;
&lt;br /&gt;
Ecco alcuni usi:&lt;br /&gt;
==== rinomina file di configurazione .new ====&lt;br /&gt;
Questo forse è l'uso maggiore per cui si crea un doinst.sh.&lt;br /&gt;
&lt;br /&gt;
Quando nello SlackBuild abbiamo creato un file tipo ''etc/configfile.new'', il doinst deve provvedere a rinominarlo in ''etc/configfile'' a patto che quest'ultimo non esista già sul sistema. Nello script viene definita una funzione, config (da non toccare), che fa questo lavoro. Al pacchettizzatore è sufficente richiamala con ''config etc/configfile.new''. Utilizzate i path relativi!!&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
config() {&lt;br /&gt;
  NEW=&amp;quot;$1&amp;quot;&lt;br /&gt;
  OLD=&amp;quot;$(dirname $NEW)/$(basename $NEW .new)&amp;quot;&lt;br /&gt;
  # If there's no config file by that name, mv it over:&lt;br /&gt;
  if [ ! -r $OLD ]; then&lt;br /&gt;
    mv $NEW $OLD&lt;br /&gt;
  elif [ &amp;quot;$(cat $OLD | md5sum)&amp;quot; = &amp;quot;$(cat $NEW | md5sum)&amp;quot; ]; then&lt;br /&gt;
    # toss the redundant copy&lt;br /&gt;
    rm $NEW&lt;br /&gt;
  fi&lt;br /&gt;
  # Otherwise, we leave the .new copy for the admin to consider...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
config etc/configfile.new&lt;br /&gt;
config etc/program/my.conf.new&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== gli script di start ====&lt;br /&gt;
Per gli script in rc invece va fatta una aggiunta; infatti se un file rc con lo stesso nome già esiste, allora è necessario che abbiano gli stessi permessi. Questo si fa così:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -e etc/rc.d/rc.script ]; then&lt;br /&gt;
  cp -a etc/rc.d/rc.script etc/rc.d/rc.script.new.incoming&lt;br /&gt;
  cat etc/rc.d/rc.script.new &amp;gt; etc/rc.d/rc.script.new.incoming&lt;br /&gt;
  mv etc/rc.d/rc.script.new.incoming etc/rc.d/rc.script.new&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
config etc/rc.d/rc.script.new&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== i link ====&lt;br /&gt;
Se lo SlackBuild ha creato dei link, con ln o con make install, questi non verranno inseriti nel txz finale. Al posto loro verrà messa nel doinst.sh una riga per ogni link che provvederà a crearlo in fase di postinstallazione. A fare questa operazione ci penserà makepkg che per ogni link che trova metterà una cosa del genere nel doinst.sh:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
( cd usr/bin ; rm -rf view )&lt;br /&gt;
( cd usr/bin ; ln -sf vim view )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
quindi di questo non dovremo preoccuparci&lt;br /&gt;
==== file icona, menu, .desktop ecc ====&lt;br /&gt;
Quando si installano pacchetti per kde e/o si aggiungono nuove icone e/o file .desktop ecc.., è necessario aggiornare il database di kde.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if [ -x /usr/bin/update-desktop-database ]; then&lt;br /&gt;
  usr/bin/update-desktop-database -q usr/share/applications &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
fi&lt;br /&gt;
if [ -x /usr/bin/update-mime-database ]; then&lt;br /&gt;
  usr/bin/update-mime-database usr/share/mime &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
fi&lt;br /&gt;
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then&lt;br /&gt;
  if [ -x /usr/bin/gtk-update-icon-cache ]; then&lt;br /&gt;
    usr/bin/gtk-update-icon-cache usr/share/icons/hicolor &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== post-installazione personalizzata ====&lt;br /&gt;
Potrebbe essere necessario avviare qualche script di postinstallazione al termine del doinst. Se lo script non si trova nel path, allora solitamente si fa un 'cd directory' e './script'. Cerchiamo di utilizzare sempre percorsi relativi e mai assoluti perchè se stiamo installando in un chroot allora si rischia di incasinare il sistema principale&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
( cd usr/share/programma ; ./postinstall.sh )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
se il postinstall si trova sotto usr/lib, allora dobbiamo inserire questa riga dallo SlackBuild per determinare perchè non sappiamo a priori se utilizziamo una slackware a 32 o 64bit e quindi se lo script è in usr/lib o usr/lib64.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;( cd usr/lib$LIBDIRSUFFIX ; ./postinstall.sh )&amp;quot; &amp;gt;&amp;gt; $PKG/install/doinst.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In caso lo script al suo interno faccia riferimento a percorsi assoluti del sistema, allora dovremo lanciare tale comando in chroot:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chroot . usr/share/programma/postinstall.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== utenti ====&lt;br /&gt;
Prima del '''makepkg''' abbiamo settato tutti i proprietari dei file a root. Se abbiamo qualche pacchetto che richiede di essere avviato come altro utente (p.e. squid) dovremo provvedere a creare l'utente e, se serve, anche il gruppo. Prima dovremo controllare però che già non esista. Ovviamente dovremo utilizzare useradd e groupadd che vanno a modificare l'/etc/passwd e l'/etc/group; si rende quindi necessario il lancio in chroot per evitare che si creino le utenze sul sistema sbagliato&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if ! grep -q &amp;quot;^nomegruppo:&amp;quot; etc/group; then&lt;br /&gt;
  chroot . groupadd mygroup &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
fi&lt;br /&gt;
if ! grep -q &amp;quot;^nomeutente:&amp;quot; etc/passwd; then&lt;br /&gt;
  chroot . useradd -d /var/lib/nomeprogramma -s /bin/false -c &amp;quot;Utente programma&amp;quot; -g nomegruppo nomeutente &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
e poi settare i permessi adeguati, permessi che abbiamo tolto dallo slackbuild con chown root.root&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chown -R nomeutente.nomegruppo var/lib/nomeprogramma&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==== utenti e id ====&lt;br /&gt;
Talvolta si potrebbe volere un determinato uid e gid per utenti e gruppi; uno useradd secco genera un id solitamente alto, che potrebbe confondersi con le utenze classiche mentre i servizi hanno spesso e volentieri id bassi. Vedi il corrente /etc/passwd. Nel modo seguente è possibile 'tentare' di scegliere un determinato id e, se fallisce, allora ripiegare su un id normale.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
if ! grep -q &amp;quot;^apache:&amp;quot; etc/group; then&lt;br /&gt;
  if ! grep -q &amp;quot;:80:&amp;quot; etc/group; then&lt;br /&gt;
    chroot . groupadd -g 80 apache &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
  else&lt;br /&gt;
    chroot . groupadd apache &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if ! grep -q &amp;quot;^apache:&amp;quot; etc/passwd; then&lt;br /&gt;
  if ! grep -q &amp;quot;:80:&amp;quot; etc/passwd; then&lt;br /&gt;
    chroot . useradd -u 80 -d /var/www -s /bin/false -c &amp;quot;Apache User&amp;quot; -g apache apache &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
  else&lt;br /&gt;
    chroot . useradd -d /var/www -s /bin/false -c &amp;quot;Apache User&amp;quot; -g apache apache &amp;amp;&amp;gt;/dev/null&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
chown apache.apache var/www/htdocs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== slack-desc ===&lt;br /&gt;
Questo è più semplice. Si tratta di mettere una descrizione del pacchetto di un massimo di 11 righe e un massimo di 72 caratteri per riga. Personalmente prendo qualche riga dal README o dal sito ufficiale e lo copio lì dentro. Come esempi di descrizione si possono prendere tutti quelli di slackware.&lt;br /&gt;
&lt;br /&gt;
La struttura di questo file è molto rigida. Le prime 6 righe sono solo commenti (le istruzioni per costruire lo slack-desc, ma vanno lasciate. La riga successiva, la ''handy-ruler'', è un '''remember''' sul numero limite di caratteri per riga, questo confine è di 71 caratteri dopo i due punti. La descrizione è fatta di ''esattamente'' 11 righe (se ne vuoi di meno basta lasciarle vuote) composte di nomepacchetto, due punti, spazio, descrizione. La riga vuota non prevede lo spazio dopo i due punti. Il nome del pacchetto deve essere esattamente lo stesso indicato in $PKGNAME&lt;br /&gt;
&lt;br /&gt;
Non deve essere inserito il nome del pacchettizzatore né l'url del programma.&lt;br /&gt;
 # HOW TO EDIT THIS FILE:&lt;br /&gt;
 # The &amp;quot;handy ruler&amp;quot; below makes it easier to edit a package description.  Line&lt;br /&gt;
 # up the first '|' above the ':' following the base package name, and the '|'&lt;br /&gt;
 # on the right side marks the last column you can put a character in.  You must&lt;br /&gt;
 # make exactly 11 lines for the formatting to be correct.  It's also&lt;br /&gt;
 # customary to leave one space after the ':'.&lt;br /&gt;
&lt;br /&gt;
        |-----handy-ruler------------------------------------------------------|&lt;br /&gt;
 pkgname: pkgname - A title for package&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname: Long description Long description Long description Long description&lt;br /&gt;
 pkgname: Long description Long description Long description Long description&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
 pkgname:&lt;br /&gt;
&lt;br /&gt;
== Conclusioni ==&lt;br /&gt;
Con tutti gli esempi presentati non pretendo di aver esaurito tutta la casistica, ma dovrebbe essere sufficiente per molti pacchetti.&lt;/div&gt;</description>
			<pubDate>Wed, 04 Jul 2012 06:56:25 GMT</pubDate>			<dc:creator>Slacky</dc:creator>			<comments>http://www.slacky.eu/slacky/Discussione:Linee_guida_per_pacchettizzatori_Slackware_14.0</comments>		</item>
	</channel>
</rss>