1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-18 00:10:04 +00:00

sysutils/bacula15-server: Add Bacula 15

Coming in with Bacula 15.0.2 server are client, docs, nagios check, and
the static client.

re: https://www.bacula.org/bacula-15-0-2/
This commit is contained in:
Dan Langille 2024-03-28 19:48:01 +00:00
parent 2b27e3b6cc
commit 2b7cf900fb
29 changed files with 981 additions and 0 deletions

View File

@ -148,6 +148,7 @@
SUBDIR += nagios-certexp-plugin
SUBDIR += nagios-check_bacula11
SUBDIR += nagios-check_bacula13
SUBDIR += nagios-check_bacula15
SUBDIR += nagios-check_bacula9
SUBDIR += nagios-check_clamav
SUBDIR += nagios-check_cpu_usage

View File

@ -0,0 +1,27 @@
PORTNAME= bacula
CATEGORIES= net-mgmt
PKGNAMEPREFIX= nagios-check_
PKGNAMESUFFIX= 15
MAINTAINER= dvl@FreeBSD.org
COMMENT= Nagios plugin for Bacula
LIB_DEPENDS+= libbac.so:sysutils/bacula15-client
PLIST= ${.CURDIR}/pkg-plist
PLIST_FILES= libexec/nagios/check_bacula
WITH_NAGIOS_CHECK_ONLY= yes
MASTERDIR= ${.CURDIR}/../../sysutils/bacula15-server
CONFIGURE_ARGS= --enable-client-only \
--disable-build-dird \
--disable-build-stored \
--disable-nls \
--disable-xatt
OPTIONS_DEFINE= #
OPTIONS_DEFAULT=#
NO_CCACHE= yes
.include "${MASTERDIR}/Makefile"

View File

@ -0,0 +1,2 @@
check_bacula is a plugin intended for use with the
Nagios network monitoring system to monitor Bacula.

View File

@ -98,6 +98,10 @@
SUBDIR += bacula13-client-static
SUBDIR += bacula13-docs
SUBDIR += bacula13-server
SUBDIR += bacula15-client
SUBDIR += bacula15-client-static
SUBDIR += bacula15-docs
SUBDIR += bacula15-server
SUBDIR += bacula9-client
SUBDIR += bacula9-client-static
SUBDIR += bacula9-docs

View File

@ -0,0 +1,31 @@
PORTNAME= bacula
PKGNAMESUFFIX= 15-client-static
COMMENT= Network backup solution (static client)
BROKEN_aarch64= Fails to link: missing sbrk
BROKEN_riscv64= Fails to link: missing sbrk
BROKEN_SSL= libressl
WITH_CLIENT_ONLY= yes
PLIST= ${.CURDIR}/pkg-plist
MASTERDIR= ${.CURDIR}/../../sysutils/bacula15-server
PLIST_FILES= sbin/bacula-fd-static \
sbin/bconsole-static
OPTIONS_DEFINE= NLS OPENSSL
OPTIONS_DEFAULT= OPENSSL
CONFIGURE_ARGS+= --disable-build-dird \
--disable-build-stored \
--disable-libtool \
--enable-client-only \
--enable-static-cons \
--enable-static-fd
.include "${MASTERDIR}/Makefile"
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/src/filed/static-bacula-fd ${STAGEDIR}${PREFIX}/sbin/bacula-fd-static
${INSTALL_PROGRAM} ${WRKSRC}/src/console/static-bconsole ${STAGEDIR}${PREFIX}/sbin/bconsole-static

View File

@ -0,0 +1,17 @@
PORTNAME= bacula
PKGNAMESUFFIX= 15-client
COMMENT= Network backup solution (client)
BROKEN_aarch64= Fails to link: missing sbrk
BROKEN_riscv64= Fails to link: missing sbrk
WITH_CLIENT_ONLY=yes
USE_RC_SUBR= bacula-fd
PLIST= ${PKGDIR}/pkg-plist.client
MASTERDIR= ${.CURDIR}/../../sysutils/bacula15-server
OPTIONS_DEFINE= NLS PYTHON IPV6
.include "${MASTERDIR}/Makefile"

View File

@ -0,0 +1,27 @@
PORTNAME= bacula
PORTVERSION= 15.0.2
CATEGORIES= sysutils
MASTER_SITES= SF
PKGNAMESUFFIX= 15-docs
DISTNAME= ${PORTNAME}-docs-${PORTVERSION}
CONFLICTS= bacula9
MAINTAINER= dvl@FreeBSD.org
COMMENT= Bacula document set
WWW= https://www.bacula.org/
USES= tar:bz2
NO_BUILD= yes
NO_ARCH= yes
PORTDOCS= *.pdf
OPTIONS_DEFINE= DOCS
do-install:
${MKDIR} ${STAGEDIR}${DOCSDIR}
${FIND} ${WRKSRC}/manuals/en \
-name "*.pdf" -exec ${INSTALL_DATA} {} ${STAGEDIR}${DOCSDIR}/ \;
.include <bsd.port.mk>

View File

@ -0,0 +1,3 @@
TIMESTAMP = 1711654632
SHA256 (bacula-docs-15.0.2.tar.bz2) = 37834bc602ca25729b39c06f941abdf999a571cae6a2ad1b1d2ad4aa4dc04228
SIZE (bacula-docs-15.0.2.tar.bz2) = 51317810

View File

@ -0,0 +1,11 @@
Bacula is a set of computer programs that permit you (or the system
administrator) to manage backup, recovery, and verification of
computer data across a network of computers of different kinds.
In technical terms, it is a network Client/Server based backup program.
Bacula is relatively easy to use and efficient, while offering many
advanced storage management features that make it easy to find and
recover lost or damaged files. Due to its modular design, Bacula is
scalable from small single computer systems to systems consisting of
hundreds of computers located over a large network.
This port installs the latest documentation for Bacula.

View File

@ -0,0 +1,205 @@
PORTNAME= bacula
DISTVERSION= 15.0.2
CATEGORIES?= sysutils
MASTER_SITES= SF/bacula/bacula/${DISTVERSION}
PKGNAMEPREFIX?= #
PKGNAMESUFFIX?= 15-server
MAINTAINER= dvl@FreeBSD.org
COMMENT?= Network backup solution (server)
WWW= https://www.bacula.org/
LICENSE= AGPLv3
LICENSE_FILE= ${WRKSRC}/LICENSE
USES+= cpe libtool localbase python:env readline shebangfix ssl
SHEBANG_FILES= scripts/get_malware_abuse.ch scripts/key-manager.py.in \
scripts/md5tobase64.py src/cats/make_catalog_backup.pl.in
#scripts/baculabackupreport.in
CONFLICTS?= bacula-server bacula13-server bacula11-server bacula9-server
LIB_DEPENDS+= liblzo2.so:archivers/lzo2
USERS= bacula
GROUPS= ${USERS}
LIB_VERSION= ${PKGVERSION}
PLIST_SUB+= LIB_VERSION=${LIB_VERSION}
GNU_CONFIGURE= yes
USE_LDCONFIG= yes
OPTIONS_DEFINE?= IPV6 MTX NLS S3
MTX_DESC= Install mtx for control of autochanger devices
S3_DESC= Install S3 plugin
.if ${PKGNAMESUFFIX} == "15-server"
OPTIONS_MULTI= BACKEND
OPTIONS_MULTI_BACKEND= MYSQL PGSQL SQLITE3
OPTIONS_DEFAULT+= PGSQL
.endif
OPTIONS_SUB= yes
.if ${PKGNAMESUFFIX} == "15-client" || ${PKGNAMESUFFIX} == "15-server" #Till end of the file
.if !defined(WITH_CLIENT_ONLY)
LIB_DEPENDS+= libbac-${LIB_VERSION}.so:sysutils/bacula15-client
USE_RC_SUBR?= bacula-dir bacula-sd
.endif
.if defined(WITH_CLIENT_ONLY)
SUB_FILES+= pkg-deinstall.client pkg-install.client pkg-message.client
.else
SUB_FILES+= pkg-message.server
.endif
CONFIGURE_ARGS+= --disable-conio \
--enable-batch-insert \
--enable-smartalloc \
--sysconfdir=${ETCDIR} \
--with-baseport=9101 \
--with-db-name=bacula \
--with-db-user=bacula \
--with-dump-email=root@localhost \
--with-job-email=root@localhost \
--with-logdir=/var/log \
--with-plugindir=${PREFIX}/lib \
--with-readline=${LOCALBASE} \
--with-sbin-perm=755 \
--with-scriptdir=${PREFIX}/share/${PORTNAME} \
--with-tcp-wrappers=/usr/lib \
--with-working-dir=${BACULA_DIR}
.if defined(WITH_CLIENT_ONLY)
CONFIGURE_ARGS+= --with-fd-group=wheel \
--with-fd-user=root
.else
CONFIGURE_ARGS+= --with-dir-group=${BACULA_GROUP} \
--with-dir-user=${BACULA_USER} \
--with-sd-group=operator \
--with-sd-user=${BACULA_USER}
.endif
# The user/group IDs below are registered, see
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#users-and-groups
#
BACULA_USER?= bacula
BACULA_GROUP?= ${BACULA_USER}
BACULA_UID?= bacula
BACULA_GID?= ${BACULA_UID}
BACULA_DIR?= /var/db/bacula
PLIST_SUB+= BACULA_DIR=${BACULA_DIR}
SUB_LIST+= BACULA_DIR=${BACULA_DIR} \
BACULA_GID=${BACULA_GID} \
BACULA_GROUP=${BACULA_GROUP} \
BACULA_UID=${BACULA_UID} \
BACULA_USER=${BACULA_USER}
NLS_USES= gettext
NLS_CONFIGURE_ENABLE= nls
# Client only or full server version
.if defined(WITH_CLIENT_ONLY)
CONFFILES= fd
CONFIGURE_ARGS+= --enable-client-only
PKGDEINSTALL= ${FILESDIR}/pkg-deinstall.client
PKGINSTALL= ${FILESDIR}/pkg-install.client
.else
# Server only Options
CONFFILES= sd dir
# Server default database
MYSQL_CONFIGURE_ON= --with-mysql=yes
MYSQL_USES= mysql
MYSQL_SUB_LIST= REQ_MYSQL=mysql
MYSQL_SUB_LIST_OFF= REQ_MYSQL=""
SQLITE3_CONFIGURE_ON= --with-sqlite3=yes
SQLITE3_USES= sqlite:3
PGSQL_CONFIGURE_ON= --with-postgresql=yes
PGSQL_USES= pgsql
PGSQL_SUB_LIST= REQ_PGSQL=postgresql
PGSQL_SUB_LIST_OFF= REQ_PGSQL=""
MTX_RUN_DEPENDS= ${LOCALBASE}/sbin/mtx:misc/mtx
.endif
.include <bsd.port.pre.mk>
MS3_CONFIGURE_ARGS= --enable-s3
MS3_LIB_DEPENDS= libs3.so:sysutils/bacula-libs3
.if defined(WITH_CLIENT_ONLY)
MP8+= bacula.8 bacula-fd.8 bconsole.8
.else
MP8+= bacula-dir.8 bacula-sd.8 bcopy.8 bextract.8 bls.8 bscan.8 \
btape.8 btraceback.8 dbcheck.8 bwild.8 bregex.8
MP1+= bsmtp.1 bacula-tray-monitor.1
.endif
MAKE_ENV+= MAN1="${MP1}" \
MAN8="${MP8}"
post-patch:
# This port does not install docs. See bacula-docs for that
@${REINPLACE_CMD} -e '/docdir/d' ${WRKSRC}/Makefile.in
# Change $(ECHO) to echo in some Makefile.in files
@${REINPLACE_CMD} -e 's|$$(ECHO)|echo|g' \
${WRKSRC}/src/filed/Makefile.in \
${WRKSRC}/src/console/Makefile.in \
${WRKSRC}/src/cats/Makefile.in \
${WRKSRC}/src/dird/Makefile.in \
${WRKSRC}/src/stored/Makefile.in \
${WRKSRC}/src/tools/Makefile.in
# Default bconsole.conf is in ${ETCDIR}
@${REINPLACE_CMD} -e 's|./bconsole.conf|${ETCDIR}/bconsole.conf|g' ${WRKSRC}/src/console/console.c
@${REINPLACE_CMD} -e 's|^MAN8 =|MAN8 ?=|g' -e 's|^MAN1 =|MAN1 ?=|g' ${WRKSRC}/manpages/Makefile.in
.if defined(WITH_CLIENT_ONLY)
# In client port only install startup script out of script dir (see below post-install)
# Dont mkdir ${PREFIX}/share/bacula cause it's empty
@${REINPLACE_CMD} -e 's|^\(fd_subdirs = .*\)scripts\(.*\)|\1\2|g' ${WRKSRC}/Makefile.in
@${REINPLACE_CMD} -e 's|\(.*$${MKDIR} $${DESTDIR}$${scriptdir}\)|#\1|g' ${WRKSRC}/Makefile.in
.else
# In server port don't install filed
@${REINPLACE_CMD} -e '/^fd_subdirs = /s|src/filed||' -e 's|src/console||' \
${WRKSRC}/Makefile.in
.endif
.if !target(post-install)
post-install:
.if defined(WITH_CLIENT_ONLY)
${MV} ${STAGEDIR}${ETCDIR}/bconsole.conf ${STAGEDIR}${ETCDIR}/bconsole.conf.sample
${INSTALL_DATA} ${WRKSRC}/examples/sample-query.sql ${STAGEDIR}${LOCALBASE}/share/bacula/query.sql.sample
.else
${INSTALL_SCRIPT} ${FILESDIR}/chio-bacula ${STAGEDIR}${PREFIX}/sbin
${INSTALL_DATA} ${FILESDIR}/bacula-barcodes ${STAGEDIR}${ETCDIR}/bacula-barcodes.sample
# bacula-dir attempts to install query.sql as bpart of bacula-server, but that should only installed by bacula-client.
${RM} ${STAGEDIR}${LOCALBASE}/share/bacula/query.sql
#the following are installed by the -CLIENT port, and I (ler@lerctr.org)
#don't know how to remove them from being built for the -SERVER port.
${RM} ${STAGEDIR}${LOCALBASE}/lib/bpipe-fd.so
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbac-${LIB_VERSION}.so
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbac.so
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbaccfg-${LIB_VERSION}.so
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbaccfg.so
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbacfind-${LIB_VERSION}.so
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbacfind.so
.endif
for na in ${CONFFILES}; do \
${MV} ${STAGEDIR}${ETCDIR}/bacula-$$na.conf ${STAGEDIR}${ETCDIR}/bacula-$$na.conf.sample; \
done
.endif
.else
.include "${MASTERDIR}/Makefile.common"
.endif # 15-client and 15-server are defined
.include <bsd.port.post.mk>

View File

@ -0,0 +1,13 @@
.include <bsd.port.pre.mk>
post-build:
.if ${PKGNAMEPREFIX} == "nagios-check_"
${MAKE_CMD} -C ${WRKSRC}/examples/nagios/check_bacula
.endif
do-install:
.if ${PKGNAMEPREFIX} == "nagios-check_"
@${MKDIR} ${STAGEDIR}${PREFIX}/libexec/nagios
${INSTALL_PROGRAM} ${WRKSRC}/examples/nagios/check_bacula/check_bacula \
${STAGEDIR}${PREFIX}/libexec/nagios
.endif

View File

@ -0,0 +1,3 @@
TIMESTAMP = 1711652567
SHA256 (bacula-15.0.2.tar.gz) = 55515c2a66af9a86b955daea4089378b864d051b2e6e30383bef36e693acea7a
SIZE (bacula-15.0.2.tar.gz) = 6524812

View File

@ -0,0 +1,51 @@
#
# Bacula barcode simulation file
# used by ${PREFIX}/sbin/chio-bacula (FreeBSD)
#
# The volumenames are returned by the "changer list" command
# labeling in the console is done by "label barcodes"
# (then all volumes belog to the default pool).
# All Lines with an "#" at the bedinning are ignored
#
# !!!! If you export an tape and reinsert another one,
# !!!! don't forget to change the volume name in this file!
#
1:Volume1-100
2:Volume1-101
3:Volume1-102
4:Volume1-103
5:Volume1-104
6:Volume1-105
7:Volume1-106
8:Volume1-107
9:Volume1-108
10:Volume1-109
11:Volume1-110
12:Volume1-111
#
# Further volumes exported from the changer
#
# 36GB AIT2 tapes
#Volume1-100
#Volume1-101
#Volume1-102
#Volume1-103
#Volume1-104
#Volume1-105
#Volume1-106
#Volume1-107
#Volume1-108
#Volume1-109
#Volume1-110
#Volume1-111
#Volume1-112
#Volume1-113
#Volume1-114
#Volume1-115
#
# 50GB AIT2 tapes
#Volume2-200
#Volume2-201
#Volume2-202
#Volume2-203
#Volume2-204

View File

@ -0,0 +1,29 @@
#!/bin/sh
# PROVIDE: bacula_dir
# REQUIRE: DAEMON %%REQ_MYSQL%% %%REQ_PGSQL%%
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# bacula_dir_enable (bool): Set to NO by default.
# Set it to YES to enable bacula_dir.
# bacula_dir_flags (params): Set params used to start bacula_dir.
#
. /etc/rc.subr
name="bacula_dir"
rcvar=${name}_enable
command=%%PREFIX%%/sbin/bacula-dir
load_rc_config $name
: ${bacula_dir_enable="NO"}
: ${bacula_dir_flags=" -u bacula -g bacula -v -c %%PREFIX%%/etc/bacula/bacula-dir.conf"}
: ${bacula_dir_pidfile="/var/run/bacula-dir.9101.pid"}
pidfile="${bacula_dir_pidfile}"
run_rc_command "$1"

View File

@ -0,0 +1,29 @@
#!/bin/sh
# PROVIDE: bacula_fd
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# bacula_fd_enable (bool): Set to NO by default.
# Set it to YES to enable bacula_fd.
# bacula_fd_flags (params): Set params used to start bacula_fd.
#
. /etc/rc.subr
name="bacula_fd"
rcvar=${name}_enable
command=%%PREFIX%%/sbin/bacula-fd
load_rc_config $name
: ${bacula_fd_enable="NO"}
: ${bacula_fd_flags=" -u root -g wheel -v -c %%PREFIX%%/etc/bacula/bacula-fd.conf"}
: ${bacula_fd_pidfile="/var/run/bacula-fd.9102.pid"}
pidfile="${bacula_fd_pidfile}"
run_rc_command "$1"

View File

@ -0,0 +1,29 @@
#!/bin/sh
# PROVIDE: bacula_sd
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# bacula_sd_enable (bool): Set to NO by default.
# Set it to YES to enable bacula_sd.
# bacula_sd_flags (params): Set params used to start bacula_sd.
#
. /etc/rc.subr
name="bacula_sd"
rcvar=${name}_enable
command=%%PREFIX%%/sbin/bacula-sd
load_rc_config $name
: ${bacula_sd_enable="NO"}
: ${bacula_sd_flags=" -u bacula -g bacula -v -c %%PREFIX%%/etc/bacula/bacula-sd.conf"}
: ${bacula_sd_pidfile="/var/run/bacula-sd.9103.pid"}
pidfile="${bacula_sd_pidfile}"
run_rc_command "$1"

View File

@ -0,0 +1,200 @@
#!/bin/sh
#
# Bacula interface to FreeBSD chio autoloader command with
# multiple drive support
# (By Lars Köller, lars+bacula@koellers.net, 2004)
#
# If you set in your Device resource
#
# Changer Command = "path-to-this-script/chio-bacula" %c %o %S %a
# you will have the following input to this script:
#
# chio-bacula "changer-device" "command" "slot" "archive-device" "drive-index"
# $1 $2 $3 $4 $5
# for example:
#
# chio-bacula /dev/sg0 load 1 /dev/nst0 0 (on a FreeBSD system)
#
# If you need to to an offline, refer to the drive as $4
# e.g. mt -f $f offline
#
# Many changers need an offline after the unload. Also many
# changers need a sleep 60 after the mtx load.
#
# N.B. If you change the script, take care to return either
# the mtx exit code or a 0. If the script exits with a non-zero
# exit code, Bacula will assume the request failed.
#
me=$(basename $0)
# Debug output, take care: this file is writable by user bacula!
#LOG=/var/db/bacula/chio-bacula.log
#exec 2>>$LOG
#echo "------------------------- $(date) Start $(basename $0) -------------------------" >> $LOG
#set -x
# Debug
logger -p user.err "$me $@"
# This simulates a barcode reader in the changer.
# The labels of the virtual barcode reader are located in the BARCODE_FILE
SIMULATE_BARCODE=true
BARCODE_FILE=/usr/local/etc/bacula/bacula-barcodes
MTX=/bin/chio
# Set default values (see case statement below for
# free mapping of drive index and tape device
# We have a double drive Qualstar where drive 1 is the default bacula drive
#TAPE=/dev/bacula-tape
TAPE=/dev/nrsa0
DRIVE=0
# Time to wait for (un)loading
SLEEP=20
usage()
{
echo ""
echo "The $me script for bacula"
echo "--------------------------------------"
echo ""
echo "usage: $me <changer-device> <command> [slot] [devicename of tapedrive] [drive index]"
echo ""
echo "Valid commands:"
echo ""
echo "unload Unloads a tape into the slot"
echo " from where it was loaded."
echo "load <slot> Loads a tape from the slot <slot>"
echo " (slot-base is calculated to 1 as first slot)"
echo "list Lists full storage slots"
echo "loaded Gives slot from where the tape was loaded."
echo " 0 means the tape drive is empty."
echo "slots Gives number of available slots."
echo ""
echo "Example:"
echo " $me /dev/changer load 1 loads a tape from slot 1"
echo ""
exit 2
}
# The changer device
if [ -z "$1" ] ; then
usage;
else
CHANGER=$1
fi
# The command
if [ -z "$2" ] ; then
usage;
else
COMMAND=$2
fi
# The slot number
if [ ! -z "$3" ]; then
SLOT=$3
# btape fill says "... slot 1 drive 0" :-(
if [ "$SLOT" = "slot" ]; then
shift
SLOT=$3
fi
fi
# Set tape device
if [ ! -z "$4" ]; then
TAPE=$4
fi
# Here you can map bacula drive number to any tape device
# DRIVE is the chio drive number used below by chio!
case $5 in
0)
# First Drive in Changer is Bacula drive
DRIVE=0
#TAPE=/dev/bacula-tape
TAPE=/dev/nrsa0
;;
1)
DRIVE=1
#TAPE=/dev/bacula-tape2
TAPE=/dev/nrsa1
;;
esac
#
# Main
#
case ${COMMAND} in
unload)
# enable the following line if you need to eject the cartridge
mt -f ${TAPE} off
sleep 2
# if we have a slot, try it
if [ ! -z "$SLOT" ]; then
${MTX} -f ${CHANGER} move drive ${DRIVE} slot $((${SLOT}-1))
exit $?
fi
# Try other way (works if source element information is valid for drive)
${MTX} -f ${CHANGER} return drive ${DRIVE}
# If the changer is power cycled with a tape loaded in a drive
# we can compute the slot in case of a complete filled magazine, with
# one slot free.
if [ "$?" != "0" ]; then
free_slot=`${MTX} -f ${CHANGER} stat | grep "^slot " | grep -v "FULL" | awk '{print $2}'`
free_slot=${free_slot%:}
${MTX} -f ${CHANGER} move drive ${DRIVE} slot $free_slot
fi
;;
load)
${MTX} -f ${CHANGER} move slot $((${SLOT}-1)) drive ${DRIVE}
rtn=$?
# Increase the sleep time if you have a slow device
sleep $SLEEP
exit $rtn
;;
list)
if [ "${SIMULATE_BARCODE}" = "true" ]; then
if [ -f "$BARCODE_FILE" ]; then
cat $BARCODE_FILE | grep -v -e "^#" -e "^$"
exit 0
else
echo "Barcode file $BARCODE_FILE missing ... exiting!"
exit 1
fi
else
${MTX} -f ${CHANGER} status | grep "^slot .*: .*FULL>" | awk '{print $2}' | awk -F: '{print $1+1" "}' | tr -d "[\r\n]"
fi
;;
loaded)
# echo "Request loaded"
${MTX} -f ${CHANGER} status -S > /tmp/mtx.$$
rtn=$?
# Try to get chio slot source from drive entry
SLOT=$(cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL> .*slot" | awk '{print $6+1}' | tr -d ">")
if [ -z "$SLOT" ]; then
# This handles the case a source slot is not available (power on
# of the changer with a drive loaded) and all other slots are
# occupied with a tape!
SLOT=$(cat /tmp/mtx.$$ | grep "^slot .*: <ACCESS>" | awk '{print $2+1}')
if [ -z "$SLOT" ]; then
echo 0
else
echo $SLOT
fi
else
echo $SLOT
fi
# All tapes are in the slots
#cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: .* source: <>" | awk "{print 0}"
rm -f /tmp/mtx.$$
exit $rtn
;;
slots)
# echo "Request slots"
${MTX} -f ${CHANGER} status | grep "^slot " | tail -1 | awk '{print $2+1}' | tr -d ":"
;;
*)
usage
;;
esac

View File

@ -0,0 +1,13 @@
--- src/baconfig.h.orig 2021-02-05 21:23:44 UTC
+++ src/baconfig.h
@@ -45,6 +45,10 @@
#define tls_psk_default 0
#endif
+#ifndef ENODATA
+#define ENODATA EPIPE
+#endif
+
#ifndef ETIME
#define ETIME ETIMEDOUT
#endif

View File

@ -0,0 +1,11 @@
--- src/console/Makefile.in.orig 2021-02-05 21:23:44 UTC
+++ src/console/Makefile.in
@@ -128,7 +128,7 @@ uninstall:
depend:
@$(MV) Makefile Makefile.bak
@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
+ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
@$(CXX) -S -M $(CPPFLAGS) $(CONS_INC) -I$(srcdir) -I$(basedir) *.c >> Makefile
@if test -f Makefile ; then \
$(RMF) Makefile.bak; \

View File

@ -0,0 +1,11 @@
--- src/dird/Makefile.in.orig 2021-02-05 21:23:44 UTC
+++ src/dird/Makefile.in
@@ -150,7 +150,7 @@ uninstall:
depend:
@$(MV) Makefile Makefile.bak
@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
+ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
@$(CXX) -S -M $(CPPFLAGS) $(XINC) -I$(srcdir) -I$(basedir) *.c >> Makefile
@if test -f Makefile ; then \
$(RMF) Makefile.bak; \

View File

@ -0,0 +1,12 @@
--- src/filed/Makefile.in.orig 2023-11-24 14:41:20 UTC
+++ src/filed/Makefile.in
@@ -196,7 +196,8 @@ uninstall:
depend:
@$(MV) Makefile Makefile.bak
@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
+ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
+
@$(CXX) -S -M $(CPPFLAGS) $(XINC) $(LZO_INC) $(ZSTD_INC) $(AFS_CFLAGS) $(GPFS_CFLAGS) -I$(srcdir) -I$(basedir) *.c >> Makefile
@if test -f Makefile ; then \
$(RMF) Makefile.bak; \

View File

@ -0,0 +1,11 @@
--- src/qt-console/bat.pro.in.orig 2015-08-13 13:52:24 UTC
+++ src/qt-console/bat.pro.in
@@ -19,7 +19,7 @@ TEMPLATE = app
TARGET = bat
DEPENDPATH += .
INCLUDEPATH += .. . ./console ./restore ./select
-LIBS += -L../lib -lbaccfg -lbac -L../findlib -lbacfind @OPENSSL_LIBS@
+LIBS += -L../lib -lbaccfg -lbac -L../findlib -lbacfind @OPENSSL_LIBS@ -lintl
LIBTOOL_LINK = @QMAKE_LIBTOOL@ --silent --tag=CXX --mode=link
LIBTOOL_INSTALL = @QMAKE_LIBTOOL@ --silent --mode=install
QMAKE_LINK = $${LIBTOOL_LINK} $(CXX)

View File

@ -0,0 +1,30 @@
#!/bin/sh
PATH=/bin:/usr/bin:/usr/sbin
# Note how to delete UID/GID
USER=%%BACULA_USER%%
GROUP=%%BACULA_GROUP%%
UID=%%BACULA_UID%%
GID=%%BACULA_UID%%
BACULA_DIR=%%BACULA_DIR%%
TMPFILE=/tmp/services-$RANDOM-$$
case "$2" in
"DEINSTALL")
# Delete entries in /etc/services
sed -e '/# Bacula port start/,/# Bacula port end/{' \
-e 'd' \
-e '}' /etc/services > $TMPFILE
mv -f $TMPFILE /etc/services
if [ -d ${BACULA_DIR} ]; then
echo "Check if ${BACULA_DIR} is empty and delete it to permanently remove the bacula port."
fi
if pw groupshow "${USER}" 2>/dev/null 1>&2; then
echo "To delete Bacula group permanently, use 'pw groupdel ${GROUP}'"
fi
;;
esac

View File

@ -0,0 +1,13 @@
#!/bin/sh
PATH=/bin:/usr/bin:/usr/sbin
# Always add lines in /etc/services
grep -q "bacula-dir" /etc/services
if [ "$?" != "0" ]; then
echo "# Bacula port start
bacula-dir 9101/tcp #Bacula director daemon
bacula-fd 9102/tcp #Bacula file daemon
bacula-sd 9103/tcp #Bacula storage daemon
# Bacula port end" >> /etc/services
fi

View File

@ -0,0 +1,10 @@
[
{ type: install
message: <<EOM
NOTE:
Sample files are installed in %%PREFIX%%/etc/bacula:
bconsole.conf.sample, bacula-fd.conf.sample
EOM
}
]

View File

@ -0,0 +1,59 @@
[
{ type: install
message: <<EOM
bacula server was installed
A database upgrade is required if upgrading from Bacula < 9.0.
See %%DATADIR%%/update_bacula_tables
An auto-changer manipulation script based on FreeBSDs
chio command is included and installed at
%%PREFIX%%/sbin/chio-bacula
Please have a look at it if you want to use an
autochanger. You have to configure the usage in
%%PREFIX%%/etc/bacula/bacula-dir.conf
Take care of correct permissions for changer and
tape device (e.g. /dev/ch0 and /dev/n[r]sa0) i.e.
they must be accessible by user bacula.
Due to lack of some features in the FreeBSD tape driver
implementation you MUST add some OS dependent options to
the bacula-sd.conf file:
Hardware End of Medium = no;
Backward Space Record = no;
Backward Space File = no;
With 2 filemarks at EOT (see man mt):
Fast Forward Space File = no;
BSF at EOM = yes;
TWO EOF = yes;
With 1 filemarks at EOT (see man mt):
Fast Forward Space File = yes;
BSF at EOM = no;
TWO EOF = no;
NOTE: YOU CAN SWITCH EOT model ONLY when starting
from scratch with EMPTY tapes.
It is also important that all the scripts accessed
by RunBeforeJob and RunAfterJob will be executed by
the user bacula. Check your permissions.
For USB support read the bacula manual. It could be necessary
to configure/compile a new kernel.
Look at %%PREFIX%%/share/bacula/update_bacula_tables for
database update procedure. Details can be found in the
ReleaseNotes
If you are using sqlite you need to run the make_sqlite_tables script as
the bacula user. Do this using 'sudo su -m bacula'.
EOM
}
]

View File

@ -0,0 +1,9 @@
Bacula is a set of computer programs that permit you (or the system
administrator) to manage backup, recovery, and verification of
computer data across a network of computers of different kinds.
In technical terms, it is a network Client/Server based backup program.
Bacula is relatively easy to use and efficient, while offering many
advanced storage management features that make it easy to find and
recover lost or damaged files. Due to its modular design, Bacula is
scalable from small single computer systems to systems consisting of
hundreds of computers located over a large network.

View File

@ -0,0 +1,100 @@
@sample(,bacula,640) %%ETCDIR%%/bacula-barcodes.sample
@sample(,bacula,) %%ETCDIR%%/bacula-dir.conf.sample
@sample(,bacula,) %%ETCDIR%%/bacula-sd.conf.sample
lib/libbaccats-%%LIB_VERSION%%.so
lib/libbaccats.so
%%MYSQL%%lib/libbaccats-mysql-%%LIB_VERSION%%.so
%%PGSQL%%lib/libbaccats-postgresql-%%LIB_VERSION%%.so
%%SQLITE3%%lib/libbaccats-sqlite3-%%LIB_VERSION%%.so
%%MYSQL%%lib/libbaccats-mysql.so
%%PGSQL%%lib/libbaccats-postgresql.so
%%SQLITE3%%lib/libbaccats-sqlite3.so
lib/libbacsd-%%LIB_VERSION%%.so
lib/libbacsd.so
lib/libbacsql-%%LIB_VERSION%%.so
lib/libbacsql.so
%%S3%%lib/bacula-sd-cloud-driver-%%LIB_VERSION%%.so
%%S3%%lib/bacula-sd-cloud-driver.so
%%S3%%lib/bacula-sd-cloud-s3-driver-%%LIB_VERSION%%.so
%%S3%%lib/bacula-sd-cloud-s3-driver.so
sbin/bacula
sbin/bacula-dir
sbin/bacula-sd
sbin/bcopy
sbin/bdirjson
sbin/bsdjson
sbin/bextract
sbin/bls
sbin/bregex
sbin/bscan
sbin/bsmtp
sbin/btape
sbin/btraceback
sbin/bwild
sbin/chio-bacula
sbin/dbcheck
sbin/get_malware_abuse.ch
sbin/md5tobase64.py
@owner bacula
@group bacula
%%DATADIR%%/bacula
%%DATADIR%%/bacula-ctl-dir
%%DATADIR%%/bacula-ctl-fd
%%DATADIR%%/bacula-ctl-sd
%%DATADIR%%/bacula-tray-monitor.desktop
%%DATADIR%%/baculabackupreport
%%DATADIR%%/bacula_config
%%DATADIR%%/bconsole
%%DATADIR%%/btraceback.dbx
%%DATADIR%%/btraceback.gdb
%%DATADIR%%/btraceback.mdb
%%DATADIR%%/create_bacula_database
%%DATADIR%%/install-key-manager.sh
%%DATADIR%%/isworm
%%DATADIR%%/key-manager.py
%%DATADIR%%/tapealert
%%MYSQL%%%%DATADIR%%/create_mysql_database
%%PGSQL%%%%DATADIR%%/create_postgresql_database
%%SQLITE3%%%%DATADIR%%/create_sqlite3_database
%%DATADIR%%/delete_catalog_backup
%%DATADIR%%/disk-changer
%%DATADIR%%/drop_bacula_database
%%DATADIR%%/drop_bacula_tables
%%MYSQL%%%%DATADIR%%/drop_mysql_database
%%PGSQL%%%%DATADIR%%/drop_postgresql_database
%%SQLITE3%%%%DATADIR%%/drop_sqlite3_database
%%MYSQL%%%%DATADIR%%/drop_mysql_tables
%%PGSQL%%%%DATADIR%%/drop_postgresql_tables
%%SQLITE3%%%%DATADIR%%/drop_sqlite3_tables
%%DATADIR%%/grant_bacula_privileges
%%MYSQL%%%%DATADIR%%/grant_mysql_privileges
%%PGSQL%%%%DATADIR%%/grant_postgresql_privileges
%%SQLITE3%%%%DATADIR%%/grant_sqlite3_privileges
%%DATADIR%%/make_bacula_tables
%%DATADIR%%/make_catalog_backup
%%DATADIR%%/make_catalog_backup.pl
%%MYSQL%%%%DATADIR%%/make_mysql_tables
%%PGSQL%%%%DATADIR%%/make_postgresql_tables
%%SQLITE3%%%%DATADIR%%/make_sqlite3_tables
%%DATADIR%%/mtx-changer
%%DATADIR%%/mtx-changer.conf
%%DATADIR%%/update_bacula_tables
%%MYSQL%%%%DATADIR%%/update_mysql_tables
%%PGSQL%%%%DATADIR%%/update_postgresql_tables
%%SQLITE3%%%%DATADIR%%/update_sqlite3_tables
@owner
@group
man/man1/bsmtp.1.gz
man/man1/bacula-tray-monitor.1.gz
man/man8/bacula-dir.8.gz
man/man8/bacula-sd.8.gz
man/man8/bcopy.8.gz
man/man8/bextract.8.gz
man/man8/bls.8.gz
man/man8/bregex.8.gz
man/man8/bscan.8.gz
man/man8/btape.8.gz
man/man8/btraceback.8.gz
man/man8/bwild.8.gz
man/man8/dbcheck.8.gz
@dir(bacula,bacula,) %%BACULA_DIR%%

View File

@ -0,0 +1,20 @@
@sample(,bacula,640) %%ETCDIR%%/bacula-fd.conf.sample
@sample(,bacula,640) %%ETCDIR%%/bconsole.conf.sample
lib/libbac-%%LIB_VERSION%%.so
lib/libbac.so
lib/libbaccfg-%%LIB_VERSION%%.so
lib/libbaccfg.so
lib/libbacfind-%%LIB_VERSION%%.so
lib/libbacfind.so
lib/bpipe-fd.so
man/man8/bacula.8.gz
man/man8/bacula-fd.8.gz
man/man8/bconsole.8.gz
sbin/bacula-fd
sbin/bbconsjson
sbin/bfdjson
@(,bacula,750) sbin/bconsole
@dir(bacula,bacula,) %%BACULA_DIR%%
@dir share/bacula
@dir(,bacula,) %%ETCDIR%%
@sample(,bacula,644) share/bacula/query.sql.sample