Pagina 1 di 2
come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 0:09
da inux
ciao è la seconda volta che ci ritorno ma stavolta voglio andare fino in fondo.vorrei fare dei pacchetti con slackbuild ho provato a leggere il wiki ma non ho capito cosa devo fare.
1_scaricare pacchetto tar.gz del programma.
2_lo slackbuild,ne scarico uno per tutti o devo trovare gli slack di tutti i pacchetti tar.gz?
3_ci sono altri files che devo scaricare?se si,dove li trovo?
raga sono in crisi non sò da che parte cominciare aiutoooo!!!!!

Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 1:02
da albatros
No, ogni programma ha il suo slackbuild.
Oltre allo slackbuild dovresti scaricare lo slack-desc (che è la descrizione di cosa fa il pacchetto e che ti viene visualizzato quando lo installi) ed eventualmente un file doinst.sh, che però molto spesso non è detto ci sia.
Di solito trovi tutto nella directory src del pacchetto, scarichi e dai sh nome-dello-slackbuild.
Hai dato un'occhiata anche a S4D?
Se conosci un minimo di sh/bash puoi dare un'occhiata allo slackbuild, non sono difficili da leggere, di solito, o quantomeno è facile capire dove mettere le mani per ottimizzare o personalizzare il pacchetto.
Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 1:09
da inux
si ho guardato s4d ma non riesco a capire.lo slackbuild quindi lo trovo dentro i pacchetti .tar.gz?
Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 1:12
da Dani
No te lo devi scrivere tu...In genere si ha uno script standard da modificare al volo in base al pacchetto.
Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 1:19
da inux
ok ma quindi devo scaricarmi i 2 files slackbuild e slack-desc per poi modificarli?
Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 2:50
da Dani
No se ti vanno bene...
Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 3:35
da albatros
In S4D Samiel ti spiega come costruire uno slackbuild partendo da 0.
I files tar.gz contengono generalmente "solo" i sorgenti, se hai uno slackbuild già pronto puoi usarlo così com'è o modificarlo secondo le tue esigenze, altrimenti te lo devi scrivere, insieme allo slack-desc (non obbligatorio, ma assai consigliabile - presta attenzione alla formattazione).
Uno slackbuild è solo uno script della shell, per costruire il pacchetto esegui lo script che compie in successione una serie di operazioni e produce in output un pacchetto tgz.
Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 9:39
da inux
stò cercando di seguire i passi di s4d:ho scaricato il sorgente di moodin.tar.gz lo devo scompattare o no?nella mia home(/home/inux#)ho scaricato il sorgente di moodin scompattato,slackbuild slack-desc trovati da internet ve li posto :
Codice: Seleziona tutto
#!/bin/sh
# $Id: moodin.SlackBuild,v 1.5 2007/03/23 09:00:30 root Exp root $
# Copyright (c) 2007 Eric Hameleers <alien@slackware.com>
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this software for
# any purpose with or without fee is hereby granted, provided that
# the above copyright notice and this permission notice appear in all
# copies.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
# CONTRIBUTORS 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.
# -----------------------------------------------------------------------------
#
# Slackware SlackBuild script
# ===========================
# By: Eric Hameleers <alien@slackware.com>
# For: moodin
# Descr: Splash Screen Engine for KDE
# URL: http://www.kde-look.org/content/show.php?content=25705
# Needs:
# Changelog:
# 0.4.2-1: 25/Aug/2005 by Eric Hameleers <alien@sox.homeip.net>
# * Initial build.
# 0.4.2-2: 23/Mar/2007 by Eric Hameleers <alien@slackware.com>
# * Made the SlackBuild script compatible with the new slackware
# -current (other paths for KDE and X)
#
# Run 'sh moodin.SlackBuild --cleanup' to build a Slackware package.
# The package (.tgz) plus descriptive .txt file are created in /tmp .
# Install using 'installpkg'.
#
# -----------------------------------------------------------------------------
# --- INIT ---
# Set initial variables:
PRGNAM=moodin
VERSION=${VERSION:-0.4.2}
ARCH=${ARCH:-i486}
BUILD=${BUILD:-2}
DOCS="AUTHORS BUGS ChangeLog COPYING CREDITS FAQ LICENSE MAINTAINERS \
README* TODO src/doc/THEMEOPTIONS"
# Where do we look for sources?
CWD=`pwd`
SRCDIR=`dirname $0`
[ "${SRCDIR:0:1}" == "." ] && SRCDIR=${CWD}/${SRCDIR}
# Place to build (TMP) package (PKG) and output (OUTPUT) the program:
TMP=${TMP:-/tmp/build}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
SOURCE="$SRCDIR/${PRGNAM}-${VERSION}.tar.gz"
SRCURL="http://moodwrod.com/files/ksplash-engine-moodin_${VERSION}.tar.gz"
##
## --- with a little luck, you won't have to edit below this point --- ##
##
# Exit the script on errors:
set -e
trap 'echo "$0 FAILED at line $LINENO!" | tee $OUTPUT/error-${PRGNAM}.log' ERR
# Catch unitialized variables:
set -u
P1=${1:-1}
# Slackware 11 and up need other option (gcc > 3.3.x)
if [ `gcc -dumpversion | tr -d '.' |cut -c 1-2` -gt 33 ]; then
MOPT=tune
else
MOPT=cpu
fi
case "$ARCH" in
i386) SLKCFLAGS="-O2 -march=i386 -m${MOPT}=i686"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
;;
i486) SLKCFLAGS="-O2 -march=i486 -m${MOPT}=i686"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
;;
s390) SLKCFLAGS="-O2"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
;;
powerpc) SLKCFLAGS="-O2"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
;;
x86_64) SLKCFLAGS="-O2 -fPIC"
SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64"
;;
athlon-xp) SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
SLKLDFLAGS=""; LIBDIRSUFFIX=""
;;
esac
if [ ! -d $TMP/tmp-$PRGNAM ]; then
mkdir -p $TMP/tmp-$PRGNAM # location to build the source
elif [ "$P1" != "--oldbuild" ]; then
# If the "--oldbuild" parameter is present, we keep
# the old build files and continue;
# By default we remove the remnants of previous build and continue:
rm -rf $TMP/tmp-$PRGNAM/*
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG # place for the package to be built
else
rm -rf $PKG/* # We always erase old package's contents:
fi
if [ ! -d $OUTPUT ]; then
mkdir -p $OUTPUT # place for the package to be saved
fi
# --- SOURCE FILE AVAILABILITY ---
if ! [ -f ${SOURCE} ]; then
if ! [ "x${SRCURL}" == "x" ]; then
# Check if the $SRCDIR is writable at all - if not, download to $OUTPUT
[ -w "$SRCDIR" ] || SOURCE="$OUTPUT/`basename $SOURCE`"
echo "Source '`basename ${SOURCE}`' not available yet..."
echo "Will download file to `dirname $SOURCE`"
wget -nv -O "${SOURCE}" "${SRCURL}" || true
if [ $? -ne 0 ]; then
echo "Downloading '`basename ${SOURCE}`' failed... aborting the build."
mv -f "${SOURCE}" "${SOURCE}".FAIL
exit 1
fi
else
echo "File '`basename ${SOURCE}`' not available... aborting the build."
exit 1
fi
fi
if [ "$P1" == "--download" ]; then
echo "Download complete."
exit 0
fi
# --- PACKAGE BUILDING ---
echo "++"
echo "|| $PRGNAM-$VERSION"
echo "++"
cd $TMP/tmp-$PRGNAM
echo "Extracting the source archive(s) for $PRGNAM..."
if `file ${SOURCE} | grep -q ": bzip2"`; then
tar -xjvf ${SOURCE}
elif `file ${SOURCE} | grep -q ": gzip"`; then
tar -xzvf ${SOURCE}
fi
chown -R root:root *
chmod -R u+w,go+r-w,a-s *
mv ${PRGNAM} ${PRGNAM}-${VERSION}
cd ${PRGNAM}-${VERSION}
# --- BUILDING ---
echo Building ...
LDFLAGS="$SLKLDFLAGS" \
CFLAGS="$SLKCFLAGS" \
./configure --prefix=`kde-config --prefix` \
2>&1 | tee $OUTPUT/configure-${PRGNAM}.log
make 2>&1 | tee $OUTPUT/make-${PRGNAM}.log
#
# Install all the needed stuff to the package dir
#
# Use installwatch if available, to produce a logfile of the installation
# process that is more easily readable:
if `which installwatch > /dev/null 2>&1`; then
installwatch -o $OUTPUT/install-${PRGNAM}.log make DESTDIR=$PKG install
else
make DESTDIR=$PKG install 2>&1 |tee $OUTPUT/install-${PRGNAM}.log
fi
# --- DOCUMENTATION ---
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true
chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/*
# Compress the man page(s)
if [ -d $PKG/usr/man ]; then
find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \;
for i in `find $PKG/usr/man -type l -name "*.?"` ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
fi
# Strip binaries
cd $PKG
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
cd -
# --- OWNERSHIP, RIGHTS ---
chmod -R o-w $PKG
# --- PACKAGE DESCRIPTION ---
mkdir -p $PKG/install
cat $SRCDIR/slack-desc > $PKG/install/slack-desc
if [ -f $SRCDIR/doinst.sh ]; then
cat $SRCDIR/doinst.sh >> $PKG/install/doinst.sh
fi
# --- BUILDING ---
# Build the package:
cd $PKG
makepkg --linkadd y --chown n $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz 2>&1 | tee $OUTPUT/makepkg-${PRGNAM}.log
cd $OUTPUT
md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz.md5
cd -
cat $PKG/install/slack-desc | grep "^${PRGNAM}" > $OUTPUT/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.txt
# --- CLEANUP ---
# Clean up the extra stuff:
if [ "$P1" = "--cleanup" ]; then
rm -rf $TMP/tmp-$PRGNAM
rm -rf $PKG
fi
questo è lo slackbuild adesso vi posto lo slackdesc :
Codice: Seleziona tutto
#!/bin/sh
CWD=`pwd`
TMP=${TMP:-/tmp}
PKG=$TMP/package-moodin
VERSION=0.4.2
ARCH=${ARCH:-x86_64}
BUILD=1
if [ "$ARCH" = "i386" ]; then
SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
fi
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
rm -rf $PKG
mkdir -p $PKG
cd $TMP
rm -rf moodin-$VERSION
tar xzvf $CWD/moodin-$VERSION.tar.gz
cd moodin-$VERSION
chown -R root.root .
find . -perm 777 -exec chmod 755 {} \;
find . -perm 664 -exec chmod 644 {} \;
LDFLAGS=-L/usr/lib64 \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure --prefix=/opt/kde --disable-debug \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux
make
make install DESTDIR=$PKG
( cd $PKG
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
mkdir -p $PKG/usr/doc/moodin-$VERSION
cp -a \
AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
$PKG/usr/doc/moodin-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
if [ -f $CWD/slack-required ]; then
cat $CWD/slack-required > $PKG/install/slack-required
fi
cd $PKG
makepkg -l y -c n $TMP/moodin-$VERSION-$ARCH-$BUILD.tgz
#
exit
come dice s4d io digito da console : sh moodin.slackbuild
sh: moodin.slackbuild: No such file or directory
mi potete spiegare perchè mi dice cosi?dove stò sbagliando?grazie ciao

Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 11:03
da albatros
inux ha scritto:sh: moodin.slackbuild: No such file or directory
Ma il tuo slackbuild non si chiama moodin.SlackBuild ?
(ricorda che linux è CaSe SeNsItIvE)
Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 11:52
da inux
non cambia nulla anche digitando
/home/inux# sh slackbuild
sh: slackbuild: No such file or directory
non riesco a capire non è che lo devo rendere eseguibile?
Re: come costruire pacchetti con slackbuild?
Inviato: sab 2 feb 2008, 12:03
da albatros
Non mi sono spiegato bene: come si chiama il tuo slackbuild? Il nome del file qual è?
slackbuild? No, perché la risposta è stata: sh: slackbuild: No such file or directory
moodin.slackbuild? No, perché la risposta è stata: sh: moodin.slackbuild: No such file or directory
Siccome nello slackbuild c'è scritto:
#!/bin/sh
# $Id: moodin.SlackBuild,v 1.5 2007/03/23 09:00:30 root Exp root $
e anche:
# Run 'sh moodin.SlackBuild --cleanup' to build a Slackware package
suppongo che lo slackbuild, a meno che tu non lo abbia rinominato, si chiami:
moodin.SlackBuild
che è diverso da moodin.slackbuild, perché linux è case sensitive, distingue cioè fra maiuscole e minuscole.
Io farei come dicono le istruzioni qui sopra:
esegui sh moodin.SlackBuild --cleanup per costruire un pacchetto per slackware.
In generale per eseguire uno script della shell puoi dare sh nome-dello-script.
Se lo rendi eseguibile con chmod allora puoi dare ./nome-dello-script o, se la directory in cui si trova è in $PATH, puoi dare semplicemente nome-dello-script .
Spero di essere stato abbastanza chiaro, adesso...
Ti consiglio comunque un'infarinatura di sh/bash, se ti piace usare linux...
P.S.
Attenzione, che questo slackbuild è scritto per la versione 0.4.2 di moodin, se devi compilare una versione successiva devi cambiare la versione nella riga:
VERSION=${VERSION:-0.4.2}
Re: come costruire pacchetti con slackbuild?
Inviato: dom 3 feb 2008, 1:25
da inux
grazie adesso a funzionato avevi ragione sbagliavo a digitare il nome adesso però mi da questo messaggio:
root@darkstar:/home/inux# sh moodin.SlackBuild
Source 'moodin-0.4.2.tar.gz' not available yet...
Will download file to /home/inux/.
++
|| moodin-0.4.2
++
Extracting the source archive(s) for moodin...
chown: cannot access `*': No such file or directory
moodin.SlackBuild FAILED at line 166!
sai dirmi cosa significa?ciao

Re: come costruire pacchetti con slackbuild?
Inviato: dom 3 feb 2008, 10:26
da inux
ciao ho provato a modificare questo SlackBuild potete vedere se va bene o manca qualcosa?premetto che è solo un'esercitazione scusate se fa un pò schifo.
Codice: Seleziona tutto
#!/bin/bash
#hevily based on the Slackware 12.0 SlackBuild
#http://www.slacky.eu/
#
# SlackBuild by inux
#
NAME=moodin
VERSION=0.4.2
test -z "$ARCH" && ARCH=i486
test -z "$TMP" && TMP=/tmp
BUILD=1gal
PKG=$TMP/package-$NAME moodin
CWD=`pwd`
TARBALL=$NAME-$VERSION.tar.gz
PACK=$NAME-$VERSION-$ARCH-$BUILD.tgz
if [ $ARCH == "i486" ]; then
OPTFLAGS="-O2 -march=i486 -mtune=i686"
elif [ $ARCH == "athlon-xp" ]; then
OPTFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer -pipe"
elif [ $ARCH == "pentium4" ]; then
OPTFLAGS="-O2 -march=pentium4 -fomit-frame-pointer -pipe"
elif [ $ARCH == "pentiumm" ]; then
OPTFLAGS="-O2 -march=pentium-m -fomit-frame-pointer -pipe"
fi
function get_sources()
{
wget http://blabla.org/$TARBALL || exit 1
}
TARGET=i486
test -e $PKG && rm -rf $PKG
test -e $TMP/$NAME-$VERSION && rm -rf $TMP/$NAME-$VERSION
test ! -e $TARBALL && get_sources
tar xvjf $TARBALL -C $TMP
cd $TMP/$NAME-$VERSION
CFLAGS=${OPTFLAGS} \
CXXFLAGS=${OPTFLAGS} \
sh configure --prefix=/usr \
--program-prefix="" \
--program-suffix="" \
--target=$TARGET-slackware-linux
make -j3 || exit 1
make install DESTDIR=$PKG
mkdir -p -m 755 $PKG/usr/doc/$NAME-$VERSION
cp -a COPYING \
AUTHORS \
ChangeLog \
INSTALL \
README \
TODO \
NEWS \
THANKS \
LICENSE \
$PKG/usr/doc/$NAME-$VERSION
cd $PKG
chmod 644 $PKG/usr/doc/$NAME-$VERSION/*
cp -a $CWD/slack-desc $CWD/$NAME.SlackBuild $PKG/usr/doc/$NAME-$VERSION
chown -R root.root .
chown -R root.bin usr/bin/
find . -exec file {} \; | grep "shared object" | cut -d : -f1 | xargs strip --strip-unneeded 2> /dev/null
find . -exec file {} \; | grep "executable" | cut -d : -f1 | xargs strip 2> /dev/null
gzip -9 $PKG/usr/man/*/*
gzip -9 $PKG/usr/info/*/*
rm -f $PKG/usr/info/dir
mkdir $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
echo -ne "\nmaking $NAME package.. "
cd $PKG
makepkg -c n -l y $CWD/$PACK &>/dev/null
echo "done"
[ "$1" = "--cleanup" ] && {
echo -ne "cleaning up.. "
rm -rf $TMP/$NAME-$VERSION
rm -rf $PKG
echo "done"
}
## EOF ##
Re: come costruire pacchetti con slackbuild?
Inviato: dom 3 feb 2008, 11:31
da slucky
A parte poi il discorso di auto-costruirselo lo SlackBuild, che è sempre cosa buona e giusta

puoi anche utilizzare come "base" gli SlackBuild della 12 o Current ( se usi la current) che trovi nella directory /source oppure online sul sito SlackBuilds.org ne trovi tantissimi altri, in genere ti basta modificare questo parametro:
VERSION=1.0.2
ARCH=${ARCH:-i486}
BUILD=1
ad es. stai lavorando sui sorgenti di k3b-1.0.4 allora cambi nome versione VERSION=1.0.4, personalizzi anche lo slack-desc, poi il resto già lo conosci
Se usi quelli di Pat non puoi che andare sul sicuro, come si dice "simplicity is divine"
p.s: più slacker (pigro) di così non esiste!

Re: come costruire pacchetti con slackbuild?
Inviato: dom 3 feb 2008, 12:10
da inux
non è che non ho voglia di scriverlo ma non lo so scrivere o meglio non so da che parte cominciare almeno cosi inizio a vedere come funziona poi magari posso anche scrivermelo da solo ma devo prima capire dove mettere le mani e soprattutto cosa vogliono dire tutte le scritte.alla prima parte ci sono devi solo mettere la versione e altre cose abbastanza semplici è il resto che è ostrogoto.per imparare a farmelo da solo intendo una cosa fatta bene devo imparare il linguaggio di script?fatemi sapere qulcosa è molto importante ciao.