Tftpd
Материал из pNp Wiki
Версия от 12:31, 24 января 2019; Andy (обсуждение | вклад)
Содержание
Необходимость
Иногда, требуется некое программное обеспечение, отсуствующее в репозитории, либо собранное не так, как требуется в данном, конкретном, случае. Исходя из этого, для поддержания системы в работоспособном состоянии и простоты сопровождения, ВСЕГДА небходимо собирать пакет
Specfile
%define tftp tftpd Summary: The client for the Trivial File Transfer Protocol (TFTP) Name: tftp Version: 5.2 Release: 7%{?dist} License: BSD Group: Applications/Internet URL: http://www.kernel.org/pub/software/network/tftp/ Source0: http://www.kernel.org/pub/software/network/tftp/tftp-hpa/tftp-hpa-%{version}.tar.bz2 Source1: tftpd.sh Source2: tftpd Patch0: tftp-0.40-remap.patch Patch2: tftp-hpa-0.39-tzfix.patch Patch3: tftp-0.42-tftpboot.patch Patch4: tftp-0.49-chk_retcodes.patch Patch5: tftp-hpa-0.49-fortify-strcpy-crash.patch Patch6: tftp-0.49-cmd_arg.patch Patch7: tftp-hpa-0.49-stats.patch Patch8: tftp-hpa-5.2-pktinfo.patch BuildRequires: tcp_wrappers-devel readline-devel autoconf %description The Trivial File Transfer Protocol (TFTP) is normally used only for booting diskless workstations. The tftp package provides the user interface for TFTP, which allows users to transfer files to and from a remote machine. This program and TFTP provide very little security, and should not be enabled unless it is expressly needed. %package server Group: System Environment/Daemons Summary: The server for the Trivial File Transfer Protocol (TFTP) Requires(post): chkconfig Requires(preun): chkconfig # This is for /sbin/service Requires(preun): initscripts Requires(postun): initscripts %description server The Trivial File Transfer Protocol (TFTP) is normally used only for booting diskless workstations. The tftp-server package provides the server for TFTP, which allows users to transfer files to and from a remote machine. TFTP provides very little security, and should not be enabled unless it is expressly needed. %prep %setup -q -n tftp-hpa-%{version} %patch0 -p1 -b .zero %patch2 -p1 -b .tzfix %patch3 -p1 -b .tftpboot %patch4 -p1 -b .chk_retcodes %patch5 -p1 -b .fortify-strcpy-crash %patch6 -p1 -b .cmd_arg %patch7 -p1 -b .stats %patch8 -p1 -b .pktinfo %build autoreconf -fisv %configure make %{?_smp_mflags} %install rm -rf ${RPM_BUILD_ROOT} mkdir -p ${RPM_BUILD_ROOT}%{_bindir} mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man{1,8} mkdir -p ${RPM_BUILD_ROOT}%{_sbindir} mkdir -p ${RPM_BUILD_ROOT}%{_initrddir} mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/ mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/lib/tftpboot make INSTALLROOT=${RPM_BUILD_ROOT} SBINDIR=%{_sbindir} MANDIR=%{_mandir} INSTALL='install -p' install install -p -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_initrddir}/tftpd mv ${RPM_BUILD_ROOT}%{_sbindir}/in.tftpd ${RPM_BUILD_ROOT}%{_sbindir}/tftpd install -p -m 755 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/tftpd %post server # This adds the proper /etc/rc*.d links for the script /sbin/chkconfig --add %{tftp} %preun server if [ $1 -eq 0 ] ; then /sbin/service %{tftp} stop >/dev/null 2>&1 /sbin/chkconfig --del %{tftp} fi %postun server if [ "$1" -ge "1" ] ; then /sbin/service %{tftp} condrestart >/dev/null 2>&1 || : fi %clean rm -rf ${RPM_BUILD_ROOT} %files %doc README README.security CHANGES %{_bindir}/tftp %{_mandir}/man1/* %files server %doc README README.security CHANGES %config(noreplace) %{_sysconfdir}/sysconfig/tftpd %{_sbindir}/tftpd %{_mandir}/man8/* %attr(700,nobody,nobody) %dir %{_localstatedir}/lib/tftpboot %{_initrddir}/tftpd %changelog * Mon Feb 18 2013 Andrew Vedischev <andrey.vidischev@orange.com> - 5.2-7 - repacked for RHEL 6.X, or CentOS 6.X - startup script added - removed xinet from buildreq
Startup script
#!/bin/sh # # tftpd Startup script for tftp # # chkconfig: 2345 50 60 # description: Starts, stops tftp server daemon # ### BEGIN INIT INFO # Provides: tftpd # Required-Start: $local_fs $network $remote_fs # Required-Stop: $local_fs $network $remote_fs # Should-Start: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: IPv4 Trivial File Transfer Protocol server # Description: tftpd is a server for the Trivial File Transfer Protocol. \ # The TFTP protocol is extensively used to support remote booting \ # of diskless devices. The server is normally started by inetd, \ # but can also run standalone. # ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions exec="/usr/sbin/tftpd" prog="tftpd" pidfile="/var/run/tftpd" [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog lockfile=/var/lock/subsys/$prog start() { [ -x $exec ] || exit 5 [ -f $config ] || exit 6 echo -n $"Starting $prog: " # if not running, start it up here, usually something like "daemon $exec" daemon --pidfile="$pidfile" $exec -l -P "$pidfile" $TFTPD_OPTIONS retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " # stop it here, often "killproc $prog" killproc -p "$pidfile" $exec retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { stop start } reload() { restart } force_reload() { restart } rh_status() { # run checks to determine if the service is running or use generic status status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 restart ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" exit 2 esac exit $?
Links
Основы сборки и шаблоны для спеков и стартовых скриптов