LA DISTRIBUZIONE LINUX PER CHI VUOLE IMPARARE
Linux Day - 28 ottobre 2013 - Scuola Normale Superiore - Pisa
(riferimento GNU/Linux Distribution Timeline)
fork di Softlanding Linux System (SLS) realizzato da Patrick Volkerding
per la Moorehead Minnesota State University
Un po' di storia delle release
1.0 - 16 luglio 1993
1.1.2 - 5 febbraio 1994 (installer basato su dialog)
3.3 - 11 luglio 1997 (ancora disponibile sui mirror)
4.0.0 - 17 luglio 1999 (prima release con KDE)
7.1 - 22 giugno 2000 (prima release con GNOME)
10.2 - 13 settembre 2005 (GNOME abbandonato)
11.0 - 1 ottobre 2006 (ultima release kernel 2.4)
12.1 - 2 maggio 2008 (installazione rete - http/ftp)
13.0 - 28 agosto 2009 (KDE4, versione a 64bit)
14.0 - 26 settembre 2012 (udev, allineamento ARM)
Anche i pacchetti sono generati da script shell: questi non fanno altro che ripercorrere la procedura usuale di installazione dei pacchetti cosi' come prevista a monte; non vengono fatte aggiunte o modifiche se non strettamente necessarie e se vengono applicate patch vengono proposte anche agli sviluppatori originali.
Viene seguita la filosofia KISS (Keep It Simple, Stupid) e "se non e' rotto, non aggiustarlo".
Le varie componenti del sistema operativo non vengono personalizzate per creare un esperienza utente semplificata: unica eccezione sono alcuni script shell/dialog/ncurses (al massimo strumenti semi-grafici utilizzabili anche in console) creati per facilitare l'installazione e la configurazione iniziale del sistema.
Cosa succede quando avvio Slackware?
bootloader -> lilo - sistema di avvio -> misto bsd e sysvinit
si avvia di default in runlevel 3 (modalita' testuale multiutente)
E' cosi' perche' l'utente possa scegliere :-)
startx
Per avere l'avvio grafico predefinito basta settare a "4" la linea contenente "initdefault" dentro il file /etc/inittab#!/bin/sh # # /etc/rc.d/rc.local: Local system initialization script. # # Put any local startup commands in here. Also, if you have # anything that needs to be run at shutdown time you can # make an /etc/rc.d/rc.local_shutdown script and put those # commands in there. # Start libvirt if [ -x /etc/rc.d/rc.libvirt ]; then /etc/rc.d/rc.libvirt start fi
# Syncronize the clock /usr/sbin/ntpdate pool.ntp.org &# Try to fix realtime issues
echo 2048 >/sys/class/rtc/rtc0/max_user_freq
echo 2048 >/proc/sys/dev/hpet/max-user-freq
I pacchetti non sono altro che degli archivi tar compressi (in passato tramite gzip e da qualche release tramite xz) contenenti l'albero dei file (senza il prefisso "/").
Gli strumenti di gestione dei pacchetti supportano la variabile d'ambiente $ROOT, che se definita permette di installare l'albero dei file a partire dalla cartella specificata.
Unico contenuto speciale dei pacchetti e' una cartella "install" contenente la descrizione del pacchetto ed un eventuale script da eseguire post-installazione, doinst.sh.
install/
install/slack-desc
install/doinst.sh
usr/
usr/bin/
usr/bin/einfo
usr/lib64/
usr/lib64/libepub.so.0.2.1
usr/include/
usr/include/epub_version.h
usr/include/epub_shared.h
usr/include/epub.h
usr/doc/
usr/doc/ebook-tools-0.2.1/
usr/doc/ebook-tools-0.2.1/LICENSE
usr/doc/ebook-tools-0.2.1/README
usr/doc/ebook-tools-0.2.1/INSTALL
usr/doc/ebook-tools-0.2.1/TODO
ebook-tools: ebook-tools (access and convert various ebook file formats)
ebook-tools:
ebook-tools: Tools for accessing and converting various ebook file formats.
ebook-tools:
ebook-tools: Home page: http://sourceforge.net/projects/ebook-tools/
ebook-tools:
ebook-tools:
ebook-tools:
ebook-tools:
ebook-tools:
ebook-tools:
doinst.sh( cd usr/lib64 ; rm -rf libepub.so )
( cd usr/lib64 ; ln -sf libepub.so.0 libepub.so )
( cd usr/lib64 ; rm -rf libepub.so.0 )
( cd usr/lib64 ; ln -sf libepub.so.0.2.1 libepub.so.0 )
#!/bin/sh # Copyright 2010 Eric Hameleers, Eindhoven, NL # Copyright 2010 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PKGNAM=ebook-tools VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:-" -j7 "}(continua)
# Automatically determine the architecture we're building on: MARCH=$( uname -m ) if [ -z "$ARCH" ]; then case "$MARCH" in i?86) export ARCH=i486 ;; armv7hl) export ARCH=$MARCH ;; arm*) export ARCH=arm ;; # Unless $ARCH is already set, use uname -m for all other archs: *) export ARCH=$MARCH ;; esac fi if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" LIBDIRSUFFIX="" elif [ "$ARCH" = "s390" ]; then SLKCFLAGS="-O2" LIBDIRSUFFIX="" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" LIBDIRSUFFIX="64" elif [ "$ARCH" = "armv7hl" ]; then SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" LIBDIRSUFFIX="" else SLKCFLAGS="-O2" LIBDIRSUFFIX="" fi(continua)
CWD=$(pwd) TMP=${TMP:-/tmp} PKG=$TMP/package-${PKGNAM} rm -rf $PKG mkdir -p $TMP $PKG cd $TMP rm -rf ${PKGNAM}-${VERSION} tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1 cd ${PKGNAM}-$VERSION || exit 1 # Fix some hard-coded pathnames for 64-bit: cat $CWD/ebook-tools.paths.diff | patch -p1 --verbose || exit 1 # Make sure ownerships and permissions are sane: chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; # Build and install: mkdir -p build cd build cmake \ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ -DCMAKE_INSTALL_PREFIX=/usr \(continua)
-DLIB_INSTALL_DIR=/usr/lib${LIBDIRSUFFIX} \ -DMAN_INSTALL_DIR=/usr/man \ -DSYSCONF_INSTALL_DIR=/etc \ -DINCLUDE_INSTALL_DIR=/usr/include \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ .. make $NUMJOBS || make || exit 1 make install DESTDIR=$PKG || exit 1 cd - # Remove lit2epub binary because it doesn't work without clit (which has # distribution restrictions so we do not include it) rm -f $PKG/usr/bin/lit2epub # Strip binaries: find $PKG | xargs file | grep -e "executable" -e "shared object" \ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null # Add a documentation directory: mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION cp -a \ INSTALL LICENSE README TODO \ $PKG/usr/doc/${PKGNAM}-$VERSION mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cd $PKG /sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
Sito di riferimento per aggiungere software di terze parti in Slackware: raccoglie script shell per generare pacchetti.
Sono disponibili template per creare pacchetti da diversi tipi di sorgenti.
Seguendo le direttive, nuovi script possono essere sottoposti all'approvazione degli amministratori tramite un form web.
Gli script, sono processati e inseriti nel repository tramite git: lo sviluppo e' pubblico
supporto per architetture ulteriori
limiti dovuti alla necessita' di mantenere Slackware semplice
systemd?
Intervista di Patrick Volkerding al Linux Journal (1 aprile 1994)
Intervista di Patrick Volkerding a Linuxquestions (7 giugno 2012)
Eric Hameleers - A History of Slackware Development - T-Dose 2009 (video)
Vincent Batts - Slackware Demystified - South East Linux Fest 2011 (video)
Sito della documentazione ufficiale
Pagina italiana e pagina inglese di Wikipedia
-
per avere un idea del lavoro dello scrivente su SlackBuilds.org
http://slackbuilds.org/cgit/slackbuilds/log/?qt=grep&q=bernardini
http://slackbuilds.org/cgit/slackbuilds/log/?qt=author&q=bernardini
queste slides sono reperibili all'indirizzo