Paketierung aus GIT-Repository

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
boerner86
Beiträge: 16
Registriert: 18.05.2013 09:46:33

Paketierung aus GIT-Repository

Beitrag von boerner86 » 29.09.2013 08:39:38

Hallo,

ich setzte Kolab (kolab.org) als Mailserver ein.
Leider gibt es keine aktuellen Pakete für debian, da die Entwickler mit CentOS arbeiten.

Ich würde mich gerne in die Paketierung einarbeiten und die Sources selbständig kompilieren.
Die aktuellen Sources finden sich unter git.kolab.org.

Könnte mir jemand helfen/ein tutorial zukommen lassen, der davon Ahnung hat?

Viele Grüße
boerner

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Paketierung aus GIT-Repository

Beitrag von rendegast » 29.09.2013 13:02:48

Hier gibt es eine nette Anleitung für wine im chroot,
das war mein Leitfaden.

Zunächst mal ein paar mounts in chroot:

Code: Alles auswählen

mount /proc     ${chr_path}/proc                --bind
mount /sys      ${chr_path}/sys         --bind
mount /dev      ${chr_path}/dev         --bind
mount /dev/pts  ${chr_path}/dev/pts     --bind                  # dev/pts/ wird von apt benutzt
#mount /dev/shm ${chr_path}/dev/shm/    --bind

#mount tmpfs    ${chr_path}/dev/shm/    -t tmpfs                # mittlerweile ein Link ->/run/shm
#mount tmpfs    ${chr_path}/run/                -t tmpfs
mount /run      ${chr_path}/run/                --bind                  # 'rbind'?, wegen lock/ und ..?
(Anmerkung, dadurch kann das chroot eigentlich im System herumfuhrwerken,
ich benutze es aber nur für diese dedizierte Aufgabe der gelegentlichen wine-Builds.)
Dann wechseln per 'chroot ....'
(eventuelle upgrades)
git-Abzüge

Code: Alles auswählen

cd /usr/src/wine
git clean -d -f
git pull

Der build in einem lndir-Verzeichnis (Debianxutils-dev):

Code: Alles auswählen

ischroot || exit 1

apt-get install xutils-dev      # lndir

BUILD_DIR=./wine-build

cd $BUILD_DIR
NULLOUT="/dev/null"
lndir ../wine   >$NULLOUT               # /dev/null per Syntaxhighlighting "ausgeblendet"

cd $BUILD_DIR
[ -f config.status ] || ./configure --prefix=/usr
nice make -j2                           # 1.7.0, erstellt ~ 700MB
(eigentlich möchte ich eine "saubere" Aktualisierung,
bislang mache ich zuvor 'rm -rf ./wine-build/*' mit einer Komplettkompilierung.)

Abschließend Paketierung

Code: Alles auswählen

ischroot || exit 1
which checkinstall || exit 1

BUILD_DIR=./wine-build

#cd $BUILD_DIR/ && checkinstall --install=no

#PACKAGE_VERSION="$(cat $BUILD_DIR/VERSION | awk '{print $NF}')"
#PACKAGE_VERSION="$(cat $BUILD_DIR/configure | awk -F= '$0~/PACKAGE_VERSION=/ {print $NF}')"
eval $(cat $BUILD_DIR/configure | awk -F= '$0~/PACKAGE_VERSION=/')

PKGNAME="wine1.7"
OPTS="
--pkgname \"${PKGNAME}\"
--pkgversion \"${PACKAGE_VERSION}\"
--pkgrelease \"0eigenbau\"
--pakdir \"/usr/src\"
--maintainer \"buildmaster@localhost\"
--provides \"${PKGNAME}-i386,wine,wine-i386,wine1.6,wine1.6-i386,wine1.5,wine1.5-i386,wine1.4,wine1.4-i386\"
"
#--provides \"wine,wine-i386\" 
#--provides \"wine, wine-i386, wine1.6, wine1.6-i386, wine1.5, wine1.5-i386, wine1.4, wine1.4-i386\"
echo "wine aus wine.git, 32bit, selbstgemacht, $(date +%Y%m%d)
" > $BUILD_DIR/description-pak

echo $OPTS
mount | grep /var/tmp || mount -v tmpfs ../../var/tmp -t tmpfs
cd $BUILD_DIR/ && checkinstall --install=no $OPTS               # 1.7.0, braucht ~ 500MB in /var/tmp/
und Repo-Erstellung per apt-ftparchiv.

Das ganze anzupassen auf Dein kolab.

Mich wundert selbst, daß ein bis auf die Paketheader-Info eigentlich optionsloses 'checkinstall' dabei so gut funktioniert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten