Integrate jbash's RPM spec into build process. (Requires "rpmbuild" to

build properly.  Works fine on redhat 9.  YMMV.)


svn:r1199
This commit is contained in:
Nick Mathewson 2004-03-02 19:09:30 +00:00
parent 4f6cf727b9
commit a1503f667e
5 changed files with 130 additions and 150 deletions

View File

@ -9,3 +9,13 @@ EXTRA_DIST = INSTALL README AUTHORS LICENSE ChangeLog
#install-data-local: #install-data-local:
# $(INSTALL) -m 755 -d $(LOCALSTATEDIR)/lib/tor # $(INSTALL) -m 755 -d $(LOCALSTATEDIR)/lib/tor
dist-rpm: dist
rm -rf /tmp/tor-rpm-build
mkdir /tmp/tor-rpm-build
for subdir in BUILD RPMS SOURCES SPECS SRPMS; do \
mkdir /tmp/tor-rpm-build/$$subdir; \
done
cp tor-$(VERSION).tar.gz /tmp/tor-rpm-build/SOURCES
rpmbuild -ba --define '_topdir /tmp/tor-rpm-build' contrib/tor.spec
mv /tmp/tor-rpm-build/*RPMS/* .

View File

@ -184,5 +184,5 @@ AC_SUBST(LOCALSTATEDIR)
echo "confdir: $CONFDIR" echo "confdir: $CONFDIR"
AC_OUTPUT(Makefile contrib/tor.sh contrib/torify contrib/Makefile src/config/torrc doc/tor.1 src/Makefile doc/Makefile src/config/Makefile src/common/Makefile src/or/Makefile) AC_OUTPUT(Makefile contrib/tor.sh contrib/torify contrib/Makefile contrib/tor.spec src/config/torrc doc/tor.1 src/Makefile doc/Makefile src/config/Makefile src/common/Makefile src/or/Makefile)

View File

@ -1,6 +1,6 @@
confdir = $(sysconfdir)/tor confdir = $(sysconfdir)/tor
EXTRA_DIST = tor-tsocks.conf torify.1 EXTRA_DIST = tor-tsocks.conf torify.1 tor.spec
conf_DATA = tor-tsocks.conf conf_DATA = tor-tsocks.conf

View File

@ -1,148 +0,0 @@
%define rellevel 1
%define relbase std.%{rellevel}
%define rhrel %([ -f /etc/redhat-release ] && (sed -e 's/^Red Hat Linux release //' -e 's/ .*$//' -e 's/\\./_/g' -e 's/^.*$/.rh&/' < /etc/redhat-release))
%define blddate %(date -u +"%Y%m%d%H%M")
%define release %{relbase}%{rhrel}.%{blddate}
%define initdir /etc/rc.d/init.d
Summary: tor: anonymizing overlay network for TCP
Name: tor
Version: 0.0.2pre20
Vendor: R. Dingledine <arma@seul.org>
Release: %{release}
License: BSD-like
Group: Applications/Internet
URL: http://freehaven.net/tor
Source0: http://freehaven.net/tor/dist/tor-0.0.2pre19.tar.gz
Requires(pre): shadow-utils, /usr/bin/id, /bin/date, /bin/sh
Requires(pre): %{_sbindir}/useradd, %{_sbindir}/groupadd
BuildRoot: %{_tmppath}/%{name}-%{version}-%{relbase}-root
%description
Tor is a connection-based low-latency anonymous communication system which
addresses many flaws in the original onion routing design.
In brief, Onion Routing is a connection-oriented anonymizing communication
service. Users choose a source-routed path through a set of nodes, and
negotiate a "virtual circuit" through the network, in which each node
knows its predecessor and successor, but no others. Traffic flowing down
the circuit is unwrapped by a symmetric key at each node, which reveals
the downstream node.
Basically Tor provides a distributed network of servers ("onion
routers"). Users bounce their tcp streams (web traffic, ftp, ssh, etc)
around the routers, and recipients, observers, and even the routers
themselves have difficulty tracking the source of the stream.
Note that Tor does no protocol cleaning. That means there is a danger that
application protocols and associated programs can be induced to reveal
information about the initiator. Tor depends on Privoxy and similar protocol
cleaners to solve this problem.
Client applications can use the Tor network by connecting to the local
onion proxy. If the application itself does not come with socks support
you can use a socks client such as tsocks. Some web browsers like mozilla
and web proxies like privoxy come with socks support, so you don't need an
extra socks client if you want to use Tor with them.
Remember that this is alpha code, and the network is very small -- Tor will
not provide anonymity currently.
This package provides the "tor" program, which serves as both a client
and a relay node. Scripts will automatically create a "tor" user and
group, set tor up to run as a daemon, and automatically start it at
installation time.
%prep
%setup -q
# Patch the startup script to use the right user and group IDs, store
# the PID in a subdirectory of /var/run (so tor doesn't have to start
# as root) and add in a control line for chkconfig. This (BSD? Debian?)
# script will work, but doesn't use all the weird Red Hat macros to make
# the boot sequence look pretty.
ed -s tor.sh.in << '/EOF/' > /dev/null
# Change the PID file location
,s/^TORPID=\(.*\)\/run\/tor.pid/TORPID=\1\/run\/tor\/tor.pid/
#
# Set user to "tor" before starting tor
,s/^\([ ]*\)\(\$TORBIN.*\)$/\1\/bin\/su -s \/bin\/sh -c "\2" tor/
#
# Add user and group to command line. Suspenders and belt.
,s/^TORARGS="\(.*\)"/TORARGS="\1 --user tor --group tor"/
#
# Add control lines for chkconfig
1a
# chkconfig: 2345 90 10
# description: Onion router
.
#
# Save and exit ed
w
q
/EOF/
%build
%configure
%__make
%install
%makeinstall
# Install init script.
%__mkdir_p ${RPM_BUILD_ROOT}%{initdir}
%__install -m 755 tor.sh ${RPM_BUILD_ROOT}%{initdir}/tor
# Directories that don't have any preinstalled files
%__mkdir_p -m 700 ${RPM_BUILD_ROOT}/var/lib/tor
%__mkdir_p -m 755 ${RPM_BUILD_ROOT}/var/run/tor
%__mkdir_p -m 755 ${RPM_BUILD_ROOT}/var/log/tor
%clean
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT}
%pre
[ -f %{initdir}/tor ] && /sbin/service tor stop
if [ ! -n "`/usr/bin/id -g tor 2>/dev/null`" ]; then
# One would like to default the GID, but doing that properly would
# require thought.
%{_sbindir}/groupadd tor 2> /dev/null
fi
if [ ! -n "`/usr/bin/id -u tor 2>/dev/null`" ]; then
# One would also like to default the UID, but doing that properly would
# also require thought.
if [ -x /sbin/nologin ]; then
%{_sbindir}/useradd -g tor -d / -s /sbin/nologin tor 2> /dev/null
else
%{_sbindir}/useradd -g tor -d / -s /bin/false tor 2> /dev/null
fi
fi
%post
/sbin/chkconfig --add tor
/sbin/service tor start
%preun
/sbin/service tor stop
/sbin/chkconfig --del tor
%files
%defattr(-,root,root)
%doc AUTHORS INSTALL LICENSE README
%{_mandir}/man*/*
%{_bindir}/tor
%{initdir}/tor
%dir %{_sysconfdir}/tor/
%config(noreplace) %{_sysconfdir}/tor/torrc
%config(noreplace) %{_sysconfdir}/tor/dirservers
%attr(-,tor,tor) %dir /var/lib/tor
%attr(-,tor,tor) %dir /var/run/tor
%attr(-,tor,tor) %dir /var/log/tor
%changelog
* Sat Jan 17 2004 John Bashinski <jbash@velvet.com>
- Basic spec file; tested with Red Hat 9.

118
contrib/tor.spec.in Normal file
View File

@ -0,0 +1,118 @@
%define rellevel 2
%define relbase std.%{rellevel}
%define rhrel %([ -f /etc/redhat-release ] && (sed -e 's/^Red Hat Linux release //' -e 's/ .*$//' -e 's/\\./_/g' -e 's/^.*$/.rh&/' < /etc/redhat-release))
%define blddate %(date -u +"%Y%m%d%H%M")
%define release %{relbase}%{rhrel}.%{blddate}
%define initdir /etc/rc.d/init.d
Summary: tor: The Onion Router; patent-free Onion Routing
Name: tor
Version: @VERSION@
Vendor: R. Dingledine <arma@seul.org>
Release: %{release}
License: BSD-like
Group: Applications/Internet
URL: http://freehaven.net/tor
Source0: http://freehaven.net/tor/dist/tor-%{version}.tar.gz
Requires(pre): shadow-utils, /usr/bin/id, /bin/date, /bin/sh
Requires(pre): %{_sbindir}/useradd, %{_sbindir}/groupadd
BuildRoot: %{_tmppath}/%{name}-%{version}-%{relbase}-root
%description
Tor is a system that conceals the sources of TCP connections
by relaying those connections through multiple independently administered
forwarding nodes; it is a "cascaded mix" system. Among older systems,
Tor is most similar to Onion Routing. The basic concept of Tor is also
similar to that of the Zero Knowledge Freedom system or the Java Anonymous
Proxy. The "onions" used in Tor are similar in concept to the reply blocks
used with type I "cypherpunks" anonymous remailers. Feeding phrases
from this paragraph into search engines should give you more background
information than you really want.
This package provides the "tor" program, which serves as both a client
and a relay node. Scripts will automatically create a "tor" user and
group, set tor up to run as a daemon, and automatically start it at
installation time.
%prep
%setup -q
# Patch the startup script to use the right user and group IDs. Force
# the use of /bin/sh as the shell for the "tor" account.
ed -s contrib/tor.sh.in << '/EOF/' > /dev/null
,s/^TORUSER=$/TORUSER=tor/
,s/^TORGROUP=$/TORGROUP=tor/
,s:/bin/su:/bin/su -s /bin/sh:
#
# Save and exit ed
w
q
/EOF/
%build
%configure
%__make
%install
%makeinstall
# Install init script.
%__mkdir_p ${RPM_BUILD_ROOT}%{initdir}
%__install -m 755 contrib/tor.sh ${RPM_BUILD_ROOT}%{initdir}/tor
# Directories that don't have any preinstalled files
%__mkdir_p -m 700 ${RPM_BUILD_ROOT}/var/lib/tor
%__mkdir_p -m 755 ${RPM_BUILD_ROOT}/var/run/tor
%__mkdir_p -m 755 ${RPM_BUILD_ROOT}/var/log/tor
%clean
[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT}
%pre
[ -f %{initdir}/tor ] && /sbin/service tor stop
if [ ! -n "`/usr/bin/id -g tor 2>/dev/null`" ]; then
# One would like to default the GID, but doing that properly would
# require thought.
%{_sbindir}/groupadd tor 2> /dev/null
fi
if [ ! -n "`/usr/bin/id -u tor 2>/dev/null`" ]; then
# One would also like to default the UID, but doing that properly would
# also require thought.
if [ -x /sbin/nologin ]; then
%{_sbindir}/useradd -r -g tor -d / -s /sbin/nologin tor 2> /dev/null
else
%{_sbindir}/useradd -r -g tor -d / -s /bin/false tor 2> /dev/null
fi
fi
%post
/sbin/chkconfig --add tor
/sbin/chkconfig tor && /sbin/service tor start
%preun
/sbin/chkconfig tor && /sbin/service tor stop
/sbin/chkconfig --del tor
%files
%defattr(-,root,root)
%doc AUTHORS INSTALL LICENSE README
%{_mandir}/man*/*
%{_bindir}/tor
%{_bindir}/torify
%{initdir}/tor
%dir %{_sysconfdir}/tor/
%config(noreplace) %{_sysconfdir}/tor/torrc
%config(noreplace) %{_sysconfdir}/tor/dirservers
%config(noreplace) %{_sysconfdir}/tor/tor-tsocks.conf
%attr(-,tor,tor) %dir /var/lib/tor
%attr(-,tor,tor) %dir /var/run/tor
%attr(-,tor,tor) %dir /var/log/tor
%changelog
* Sat Jan 17 2004 John Bashinski <jbash@velvet.com>
- Basic spec file; tested with Red Hat 9.