transmission-4-centos-7
Files to support installation of the Transmission 4.0 client on CentOS 7.
Repository contents
This directory contains:
-
An Ansible task/playbook to compile and install Transmission 4.0 on CentOS 7
-
A systemd unit file suitable for running the Transmission 4.0 daemon
-
logrotate, sysconfig, and tmpfiles.d configuration files for the Transmission 4.0 daemon
The Ansible task
The transmission4-installation.yaml file is an Ansible task that will build and install Transmission 4.0 from source on CentOS 7. It can be included from your playbook, or run as its own independent playbook. Configuration and usage are described below.
Configuring the Ansible task
Set the options in the "General configuration, "Transmission configuration," and "cURL configuration" sections to your
liking. The default values should work for most cases. If you include
the task from within your own playbook, you can
define any of the following variables there to override the task defaults:
build_directory
- a temporary directory for downloading and compiling filesdo_cleanup
- whether or not to automatically delete build artifacts after successful installationtransmission_version
- the target transmission version e.g. '4.0.0'trasmission_sha256
- sha256 of the .tar.xz distribution of the target transmission versiontransmission_configure_options
- CMake3 options for configuring Transmissioncurl_configure_options
- configure options for cURL
Running the Ansible task
You can either ansible.builtin.include
the .yaml file from your own playbook, or use it as a stand-alone
playbook by uncommenting a few lines and specifying your own hosts:
value.
Running the task performs the following actions:
-
Create a temporary build directory (by default,
/tmp/transmission4
) -
Check to see if cURL 7.77.0 or newer is present; if not, download and install a temporary copy of the latest cURL release in the build directory. Transmission 4 requires libcurl features not available in cURL < 7.77.0.
-
Install several prerequisites (via yum) required for the build process: cmake3, gettext, intltool, m4, make, openssl-devel, perl-XML-Parser, pkgconfig
-
Temporarily install (via yum) the Red Hat Developer Toolset 7.0. CentOS 7 has gcc-c++ version 4.8.5, which is not sufficient to compile Transmission 4.0. The devtools-7 package provides gcc-c++ 7.3.1.
-
Download, compile, and install the specified Transmission version
-
Add a
transmission
user and group to the system, if they don't already exist -
Create
/var/lib/transmission
where the daemon will write its files -
Install a systemd unit file, plus logrotate, sysconfig, and tmpfiles.d configuration files for Transmission; those files are all downloaded from this repository
-
After successful installation, the Red Hat Developer Toolset 7.0 will be uninstalled, and the temporary build directory will be removed. You can disable this by setting
do_cleanup
to false.
The following will be added to your system if they don't already exist:
- a "transmission" user and group, which will run the transmission daemon
- /etc/logrotate.d/transmission4-daemon
- /etc/sysconfig/transmission4-daemon
- /etc/systemd/system/transmission4-daemon.service
- /etc/tmpfiles.d/transmission4-daemon.conf
- /var/lib/transmission
- /var/log/transmission
Notes and caveats
The Ansible task installs a systemd unit file, but it doesn't automatically start or enable the service. You'll need
to do that yourself with systemctl start transmission4-daemon
and systemctl enable transmission4-daemon
.
A settings.json
file is not installed. If you have a settings.json
file you want to use, place it into
/var/lib/transmission
prior to starting the transmission4-daemon service. Otherwise, Transmission will create a default
settings file the first time it runs.
I only use the Transmission daemon and the web interface, so that's all I've tested. Building the Qt client is
configured to "AUTO" by default, which I suppose will compile the GUI if you're running in a desktop environment. You'll
at least end up with the CLI binaries: transmission-cli
, transmission-create
, transmission-daemon
, transmission-edit
,
transmission-remote
, and transmission-show
.
The Transmission 4.0 binaries will be installed to /usr/local/bin
. If you already have Transmission 3.0 from
the excellent Geekery repository -- which installs its binaries to
/usr/bin
instead -- you'll end up with both versions of Transmission installed. This is intentional. Running the
Ansible task shouldn't clobber or overwrite any existing files, and the system files it installs are all named
using a transmission4
scheme to keep them separate from Transmission 3.0.
Bugs
If you encounter a problem with the Ansible task, please open a new issue in this repository.