Содержит каталог debian/
необходимый для создания пакета Debian (или Ubuntu)
конкретных версий Asterisk PBX.
Поместите в каталог debian распакованный архив Asterisk и создайте необходимые файлы *.deb
. Смотрите подробные инструкции ниже.
Большое спасибо команде Debian за создание исходных файлов и обмен ими! Отправная точка для этого каталога debian/
взята из репозитория Debian AnonSCM.
Если вы довольны этими файлами без каких-либо дополнительных изменений, то можете получить предварительно скомпилированные бинарные пакеты непосредственно из OSSO ppa. См.раздел Использование OSSO ppa.
$ ./build.sh
...
$ find ./dist
...
./dist/jessie/asterisk_11.25.3-0osso1+deb8/asterisk_11.25.3-0osso1+deb8_amd64.changes
./dist/jessie/asterisk_11.25.3-0osso1+deb8/asterisk_11.25.3-0osso1+deb8_amd64.deb
...
That should be enough to get the debian packages. For verbose building, see below:
Installing build prerequisites:
# apt-get install debhelper dpkg-dev quilt build-essential
Installing build dependencies (11-jessie):
# apt-get install libncurses5-dev libjansson-dev libxml2-dev \
libsqlite3-dev libreadline-dev unixodbc-dev libmysqlclient-dev
# apt-get install corosync-dev dahdi-source libcurl4-openssl-dev \
libgsm1-dev libtonezone-dev libasound2-dev libpq-dev \
libbluetooth-dev autoconf libnewt-dev libsqlite0-dev \
libspeex-dev libspeexdsp-dev libpopt-dev libiksemel-dev \
freetds-dev libvorbis-dev libsnmp-dev libc-client2007e-dev \
libgmime-2.6-dev libjack-dev libcap-dev libopenr2-dev \
libresample1-dev libneon27-dev libical-dev libsrtp0-dev \
libedit-dev
# apt-get install libpjproject-dev
Ensure that you have a sane .quiltrc
so you can test the quilt patches.
$ cat >~/.quiltrc <<EOF
QUILT_PATCHES=debian/patches
QUILT_NO_DIFF_INDEX=1
QUILT_NO_DIFF_TIMESTAMPS=1
QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
QUILT_DIFF_OPTS="--show-c-function"
EOF
Fetching the latest Asterisk, creating a local scratchpad repository and
moving the debian/
dir to the untarred Asterisk source.
$ VERSION=11.20.0
$ wget "http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${VERSION}.tar.gz" \
-O "asterisk_${VERSION}.orig.tar.gz"
$ tar zxf "asterisk_${VERSION}.orig.tar.gz"
$ cd asterisk-${VERSION}
$ git init
$ git add -fA # adds all files, even the .gitignored ones
$ git commit -m "clean ${VERSION}"
$ cp -a ~/asterisk-deb/debian debian # or use a bind-mount
Test that all patches apply:
$ quilt push -a
Refreshing the quilt patches (optional). By altering the 'Now at patch'
needle you can refresh from a certain patch (your own?) and onwards.
$ quilt pop -a; \
until quilt push | grep 'Now at patch'; do true; done; \
quilt pop; while quilt push; do quilt refresh; done
After preparing the build, there is nothing more to do except run
dpkg-buildpackage
and wait.
Before this step, you can add/edit your own patches. See
Quilting and patching_ below.
Don't forget to update the changelog
if you change anything.
$ #vim debian/changelog
$ DEB_BUILD_OPTIONS=parallel=6 dpkg-buildpackage -us -uc
If you want to build locally to test, instead of building a package, you'll do this:
quilt push -a
./bootstrap.sh
./configure --prefix=/usr/ --mandir=\${prefix}/share/man \
--infodir=\${prefix}/share/info --disable-asteriskssl --with-gsm \
--with-imap=system --without-pwlib --enable-dev-mode
make menuconfig
make
sudo make install
If you want to add/change source, you can append to the Debian quilt patches.
You'll want to test this on a locally compiled build, without packaging it for every change. Set up your build like this:
$ git clone https://github.com/asterisk/asterisk
$ # or: http://gerrit.asterisk.org/asterisk
$ cd asterisk
$ git fetch --all # make sure we also fetch all tags
$ cp -a ~/asterisk-deb/debian debian # or use a bind-mount
Select the version. Depending on what you previously did, you'll need only some of these. Consult your local source of git knowledge for more information.
$ git reset # unstages staged changes
$ git checkout . # drops all changes
$ git clean -fdxe debian # drop all untracked files except 'debian/'
$ VERSION=11.20.0
$ git checkout -b local-${VERSION} ${VERSION} # branch tag 11.20.0 onto local-11.20.0
First, you have to patch all of the Debian/OSSO changes. Commit the quilted stuff so it's not in the way when you start editing.
$ quilt push -a
$ git commit -m "WIP: asterisk-deb quilted"
Now you can start changing stuff, compiling, installing. Et cetera.
$ ./bootstrap.sh
$ ./configure --enable-dev-mode
$ make menuconfig
... change stuff ...
$ make && sudo make install
When you're happy with the result, you write the changes to a Debian patch file:
$ git diff > debian/patches/my-awesome-changes.patch
$ echo my-awesome-changes.patch >> debian/patches/series
$ git checkout . # drop the local changes
$ quilt push # reapply the changes, using quilt
For bonus points, you'll edit your newly generated debian/patches/my-awesome-changes.patch
and add appropriate header values as described in
DEP3, Patch Tagging Guidelines.
Store your updated patches in your own repository, and rebase your changes
against changes in asterisk-deb
.
After quilting or a failed build, you may run into this:
make[1]: Entering directory '/home/osso/asterisk/asterisk-11.25.1' if [ ! -r configure.debian_sav ]; then cp -a configure configure.debian_sav; fi cp: cannot stat 'configure': No such file or directory debian/rules:76: recipe for target 'override_dh_autoreconf' failed make[1]: *** [override_dh_autoreconf] Error 1
That is fixed either by forcing configure to be back in place, or simply by using a pristine Asterisk source directory.
See INSTALL.rst
in this directory for tips on how to install it.
If you're happy with these files without any additional changes, you can fetch precompiled binary packages from the OSSO ppa if you like.
USE IT AT YOUR OWN RISK. OSSO DOES NOT GUARANTEE AVAILABILITY OF THE SERVER. OSSO DOES NOT GUARANTEE THAT THE FILES ARE SANE.
$ sudo sh -c 'cat >/etc/apt/sources.list.d/osso-ppa-osso.list' <<EOF
deb http://ppa.osso.nl/debian jessie osso
deb-src http://ppa.osso.nl/debian jessie osso
EOF
$ wget -qO- https://ppa.osso.nl/[email protected] | sudo apt-key add -
$ sudo tee /etc/apt/preferences.d/asterisk >/dev/null << EOF
Package: asterisk asterisk-*
Pin: release o=OSSO ppa
Pin-Priority: 600
EOF
$ sudo apt-get update
$ sudo apt-get install asterisk
/Walter Doekes <[email protected]> Tue, 11 Oct 2016 14:07:55 +0200