Unix client package layout
The purpose of this page is to describe the layout of files for installation of the BOINC client software on Unix machines. That means various distros of Linux, but also FreeBSD, OpenBSD, Sun, HP, AIX, and any other Unix. It is desirable, as much as is possible, to keep things the same so that volunteers who are not Unix experts can still understand what is what and what is where and ask questions, without having to get into specifics of which distro they are using. It also helps when answering questions, as we don't have to preface a response with "if you have [flavor]..."
Files and directories should be placed in accordance with the guiding principles of the Filesystem Hierarchy Standard, which may be found at http://www.pathname.com/fhs/pub/fhs-2.3.html
Working directory
This is /var/lib/boinc
on Fedora, but /var/lib/boinc-client
on Debian. Can we agree on only one of these?
Configuration files for the core client
These are cc_config.xml
, global_prefs_override.xml
, gui_rpc_auth.cfg
, and remote_hosts.cfg
. Debian, for example, puts these in /etc/boinc-client/
and has appropriate symlinks in the working directory
WHY? -EAM
It is policy in Debian that all configuraton files must reside in
/etc
-FSTThat makes sense only for files which the sysadmin would edit to change configuration (like
/etc/default/boinc-client
) but not these .xml files, which are basically only saved state. They are not really "configuration" files in the Unix sense. -EAMI think this is wrong, they are configuration files. System administrators are supposed to edit them, they are not state files. Just have a look at ClientMessages and PrefsOverride, these pages will confirm this. -FST Yup, I see what you mean. So I'm wondering if it would not be better to have the CC check for these files in multiple places: use the file in the working directory, if it exists, else use the one in /etc/boinc-client, if it exists. -EAM This seems to be a good idea and I support it. -FST I think we then need to enter a ticket to request it. I shall do so. -EAM The ticket has been created, refer to #627. -FST
Executable files
The proper names of the executable files were debated in April 2008. The result seems to be
/usr/bin/boinc
for the client/usr/bin/boinccmd
for the command line tool/usr/bin/boincmgr
for the GUI tool (the BOINC Manager)
Previous names or alternate names can be supported via soft-links. These are to be added in the packaging step, and should not be created in the Makefile.
init script to start/stop daemon
The init script to start/stop the client running as a Unix daemon is
/etc/init.d/boinc
Though one may find /etc/init.d/boinc-client
, since the Debian packages started using that.
If the client executable is simply
boinc
then the init script should have the same name -EAM
config file read by the init script
/etc/default/boinc
on Debian/etc/sysconfig/boinc
on Fedora
Same comment as above applies. The name should match the name of the init script.
Unix man pages
Under /usr/share/man/man1
and /usr/share/man/man7
, respectively, the files:
boinc.1
for the clientboinccmd.1
for the command line toolboincmgr.1
for the Managerboinc.7
for BOINC in general
Change the names as needed to match any changes in command names.
log rotation
This file instructs logrotate how to rotate the logs in the working directory
We have no choice over where this goes, it has to be where logrotate
expects to find it. I believe this is /etc/logrotate.d
I developed a working logrotate config file. We found that the daemon must be stopped and started in order for the logs to be rotated. -KSM
It seems that path to the log files has to be hardcoded into this file. Anybody making their own package needs to adjust that path, possibly as a part of an installation script. -EAM
bash command completion script
The file client/scripts/boinc.bash
in SVN (documented at BashCommandCompletion) is
a command completion script for boinc
and boinccmd
for the BASH shell. Name this script boinc
and put it in the directory pointed to by $BASH_COMPLETION_DIR
. Any scripts placed in this directory will be sourced by interactive BASH shells. It is usually
/etc/bash_completion.d
and is defined at the beginning of BASH's main completion script (which is usually /etc/bash_completion
).
/etc/bash_completion.d/boinc