2 # - stop using nobody group
5 %bcond_without python # Python binding
6 %bcond_with dnscrypt # dnscrypt support
7 %bcond_with dnstap # dnstap replication support
8 %bcond_with redis # cachedb support for redis (using hiredis)
9 %bcond_with systemd # systemd support
10 %bcond_without tests # unit tests
12 Summary: Recursive, validating DNS resolver
13 Summary(pl.UTF-8): Rekurencyjny, weryfikujący resolver DNS
18 Group: Applications/Network
19 Source0: https://www.unbound.net/downloads/%{name}-%{version}.tar.gz
20 # Source0-md5: 00bf61460c87c2542bcb68d52a2e5195
22 Source2: %{name}.service
23 Source3: https://data.iana.org/root-anchors/icannbundle.pem
24 # Source3-md5: d00ef4e253e99e93ee020da5ad5e7d9a
25 Source4: ftp://ftp.internic.net/domain/named.cache
26 # Source4-md5: a551fabe906ec055e7f563276dad9c35
27 Patch0: %{name}-default_trust_anchor.patch
28 Patch1: %{name}-sh.patch
29 URL: http://unbound.net/
30 BuildRequires: autoconf >= 2.56
31 BuildRequires: automake
33 BuildRequires: expat-devel >= 1.95
35 %{?with_dnstap:BuildRequires: fstrm-devel}
36 %{?with_redis:BuildRequires: hiredis-devel}
37 BuildRequires: libevent-devel
38 %{?with_dnscrypt:BuildRequires: libsodium-devel}
39 BuildRequires: libtool
40 BuildRequires: linux-libc-headers >= 7:2.6.30
41 BuildRequires: openssl-devel >= 1.0.0
42 %{?with_dnstap:BuildRequires: protobuf-c-devel}
43 BuildRequires: rpmbuild(macros) >= 1.671
44 %{?with_systemd:BuildRequires: systemd-devel}
46 BuildRequires: python3-devel
47 BuildRequires: python3-modules
48 BuildRequires: swig-python >= 2.0.1
50 Provides: user(unbound)
51 Requires(post,preun): /sbin/chkconfig
52 Requires(postun): /usr/sbin/userdel
53 Requires(pre): /bin/id
54 Requires(pre): /usr/sbin/useradd
55 Requires: systemd-units >= 38
56 Requires: %{name}-libs = %{version}-%{release}
57 Suggests: openssl-tools
58 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
61 Unbound is a validating, recursive, and caching DNS resolver.
63 The C implementation of Unbound is developed and maintained by NLnet
64 Labs. It is based on ideas and algorithms taken from a Java prototype
65 developed by Verisign labs, Nominet, Kirei and ep.net.
67 Unbound is designed as a set of modular components, so that also
68 DNSSEC (secure DNS) validation and stub-resolvers (that do not run as
69 a server, but are linked into an application) are easily possible.
71 %description -l pl.UTF-8
72 Unbound to weryfikujący, rekurencyjny i cache'ujący resolver (kod
73 rozwiązujący nazwy) DNS.
75 Implementacja Unbound w C jest tworzona i utrzymywana przez NLnet
76 Labs. Jest oparta na pomysłach i algorytmach zaczerpniętych z
77 prototypu w Javie stworzonego przez Verisign Labs, Nominet, Kirei oraz
80 Unbound został zaprojektowany jako zbiór modularnych komponentów, więc
81 możliwe są także weryfikacja DNSSEC (bezpieczny DNS) oraz
82 resolvery-zaślepki (nie działające jako serwer, ale wbudowane w
86 Summary: Unbound shared library
87 Summary(pl.UTF-8): Biblioteka współdzielona Unbound
89 Conflicts: unbound < 1.4.18-1
92 Unbound shared library.
94 %description libs -l pl.UTF-8
95 Biblioteka współdzielona Unbound.
98 Summary: Header files for unbound library
99 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki unbound
100 Group: Development/Libraries
101 Requires: %{name}-libs = %{version}-%{release}
102 Requires: openssl-devel >= 1.0.0
105 Header files for unbound library.
107 %description devel -l pl.UTF-8
108 Pliki nagłówkowe biblioteki unbound.
111 Summary: Static unbound library
112 Summary(pl.UTF-8): Statyczna biblioteka unbound
113 Group: Development/Libraries
114 Requires: %{name}-devel = %{version}-%{release}
117 Static unbound library.
119 %description static -l pl.UTF-8
120 Statyczna biblioteka unbound.
122 %package -n python3-unbound
123 Summary: Python interface to unbound library
124 Summary(pl.UTF-8): Pythonowy interfejs do biblioteki unbound
125 Group: Libraries/Python
126 Requires: %{name}-libs = %{version}-%{release}
127 Obsoletes: python-unbound < 1.13.1-2
129 %description -n python3-unbound
130 Python interface to unbound library.
132 %description -n python3-unbound -l pl.UTF-8
133 Pythonowy interfejs do biblioteki unbound.
146 PYTHON=%{__python3} \
147 %{?with_dnscrypt:--enable-dnscrypt} \
148 %{?with_dnstap:--enable-dnstap} \
149 %{?with_systemd:--enable-systemd} \
150 --with-chroot-dir="" \
151 --with-conf-file=%{_sysconfdir}/%{name}/%{name}.conf \
152 --with-libevent=/usr \
153 --with-libexpat=/usr \
154 %{?with_redis:--with-libhiredis=/usr} \
155 --with-pidfile=/run/%{name}.pid \
156 %{__with_without python pyunbound} \
157 %{__with_without python pythonmodule} \
158 --with-rootkey-file=/var/lib/%{name}/root.key \
159 --with-rootcert-file=%{_sysconfdir}/%{name}/icannbundle.pem
168 rm -rf $RPM_BUILD_ROOT
169 install -d $RPM_BUILD_ROOT{/etc/rc.d/init.d,%{systemdunitdir},/var/lib/%{name}}
172 DESTDIR=$RPM_BUILD_ROOT
174 cp -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
175 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.service
176 cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/icannbundle.pem
177 cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/named.cache
179 touch $RPM_BUILD_ROOT/var/lib/%{name}/root.key
181 # obsoleted by pkg-config
182 %{__rm} $RPM_BUILD_ROOT%{_libdir}/libunbound.la
185 %{__rm} $RPM_BUILD_ROOT%{py3_sitedir}/_unbound.la
186 %py3_comp $RPM_BUILD_ROOT%{py3_sitedir}
187 %py3_ocomp $RPM_BUILD_ROOT%{py3_sitedir}
191 rm -rf $RPM_BUILD_ROOT
194 /sbin/chkconfig --add %{name}
195 %systemd_post %{name}.service
196 %service %{name} restart
199 %useradd -u 196 -g 99 -d /tmp -s /bin/false -c "unbound user" unbound
202 if [ "$1" = "0" ]; then
203 %service -q %{name} stop
204 /sbin/chkconfig --del %{name}
206 %systemd_preun %{name}.service
209 if [ "$1" = "0" ]; then
214 %triggerpostun -- %{name} < 1.4.22-1
215 %systemd_trigger %{name}.service
217 %post libs -p /sbin/ldconfig
218 %postun libs -p /sbin/ldconfig
221 %defattr(644,root,root,755)
222 %doc doc/{CREDITS,Changelog,FEATURES,LICENSE,README,TODO,control_proto_spec.txt,example.conf,ietf67-design-02.pdf,requirements.txt}
223 %attr(754,root,root) /etc/rc.d/init.d/unbound
224 %{systemdunitdir}/%{name}.service
225 %attr(751,unbound,root) %dir %{_sysconfdir}/%{name}
226 %attr(640,unbound,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/unbound.conf
227 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/named.cache
228 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/icannbundle.pem
229 %attr(755,root,root) %{_sbindir}/unbound
230 %attr(755,root,root) %{_sbindir}/unbound-anchor
231 %attr(755,root,root) %{_sbindir}/unbound-checkconf
232 %attr(755,root,root) %{_sbindir}/unbound-control*
233 %attr(755,root,root) %{_sbindir}/unbound-host
234 %{_mandir}/man1/unbound-host.1*
235 %{_mandir}/man5/unbound.conf.5*
236 %{_mandir}/man8/unbound-checkconf.8*
237 %{_mandir}/man8/unbound.8*
238 %{_mandir}/man8/unbound-anchor.8*
239 %{_mandir}/man8/unbound-control*.8*
240 %dir %attr(755,unbound,nobody) /var/lib/%{name}
241 %ghost /var/lib/%{name}/root.key
244 %defattr(644,root,root,755)
245 %attr(755,root,root) %{_libdir}/libunbound.so.*.*.*
246 %attr(755,root,root) %ghost %{_libdir}/libunbound.so.8
249 %defattr(644,root,root,755)
250 %attr(755,root,root) %{_libdir}/libunbound.so
251 %{_pkgconfigdir}/libunbound.pc
252 %{_includedir}/unbound.h
253 %{_mandir}/man3/libunbound.3*
254 %{_mandir}/man3/ub_*.3*
257 %defattr(644,root,root,755)
258 %{_libdir}/libunbound.a
261 %files -n python3-unbound
262 %defattr(644,root,root,755)
263 %attr(755,root,root) %{py3_sitedir}/_unbound.so*
264 %{py3_sitedir}/__pycache__/unbound*.pyc
265 %{py3_sitedir}/unbound.py
266 %{py3_sitedir}/unboundmodule.py