Differences between revisions 58 and 59
Revision 58 as of 2005-12-20 04:33:45
Size: 13745
Editor: FrankThomas
Comment: reject list: packages are lintian clean
Revision 59 as of 2005-12-23 05:26:34
Size: 13746
Editor: FrankThomas
Comment: added one space
Deletions are marked like this. Additions are marked like this.
Line 26: Line 26:
 1. The project specific application (e.g.`setiathome`) that is started by the BOINC core client.  1. The project specific application (e.g. `setiathome`) that is started by the BOINC core client.

BOINC - Berkeley Open Infrastructure for Network Computing

On this page:

  • [#Introduction Introduction]
  • [#Installation Installation]
  • [#Troubleshooting Troubleshooting]
  • [#?DevInfos Information for developers]

On sub pages:

  • BOINC/ClientBenchmarks and Optimisation

?Anchor(Introduction)

Introduction

A detailed introduction to [http://boinc.berkeley.edu/ BOINC] itself is available on the Wiki pages of [http://boinc-doc.net/boinc-wiki/index.php?title=BOINC_FAQ:_Introduction_To_BOINC boinc-doc.net] and [http://en.wikipedia.org/wiki/BOINC en.wikipedia.org]. In short, BOINC provides an infrastructure for distributed computing that is currently applied for various scientific problems. Hence, everybody can do something beneficial to the world at large while one's computer is not in use.

The main crisicism of the BOINC project is that it would be difficult to install. Well, to install packages in Debian is not difficult and the motivation to create packages for this worthwhile cause requires no further explaination, except maybe the following special hint. Debian is special for its support of many different architectures, which is only sustainable because of an automated compilation of novel packages. Thus, the provision of BOINC on Debian significantly contributes to the acceptance of the project in all these non-mainstream architectures. Furthermore, the frequently distributed Live CDs of Debian may bring functional BOINC installations to the masses.

Technical overview

From the user's perspective, BOINC has three parts:

  1. The server that the data flow to which, after registration to the project(s), is no longer of interest.
  2. The BOINC core client that is commonly wrapped by the BOINC Manager (boincmgr) and the only program that is actually started by the user.

  3. The project specific application (e.g. setiathome) that is started by the BOINC core client.

The speed of the processor is measured by the BOINC core client. One gets the more credits, the faster the BOINC core client says the individual machine is. Hence, it makes perfect sense to have a very much optimized binary of the BOINC core client, if one is interested in the stats. However, the project specific application that does the real work, does not go any faster from that. And this is where the real interest is in. Hence, the ultimate goal is to have packages for the applications, too. Some are only distributed as binaries, though, which renders this process difficult.

?Anchor(Installation)

Installation

Installation of binary packages

If you are running DebianUnstable you should add the following lines to your /etc/apt/sources.list file:

# BOINC packages for Debian "sid" (unstable)
deb     http://pkg-boinc.alioth.debian.org/debian unstable main non-free
deb-src http://pkg-boinc.alioth.debian.org/debian unstable main non-free

For DebianTesting use these lines for your /etc/apt/sources.list file:

# BOINC packages for Debian "etch" (testing)
deb     http://pkg-boinc.alioth.debian.org/debian testing main
deb-src http://pkg-boinc.alioth.debian.org/debian testing main

And for DebianSarge use these lines for your /etc/apt/sources.list file:

# BOINC packages for Debian 3.1 "sarge" (stable)
deb     http://pkg-boinc.alioth.debian.org/debian sarge main
deb-src http://pkg-boinc.alioth.debian.org/debian sarge main

We are also providing packages for the Debian derivative [http://www.ubuntu.com/ Ubuntu]. Here are the corresponding lines for your /etc/apt/sources.list file:

# BOINC packages for Ubuntu 5.10 "Breezy Badger"
deb     http://pkg-boinc.alioth.debian.org/ubuntu breezy universe
deb-src http://pkg-boinc.alioth.debian.org/ubuntu breezy universe

Now update the package index files and install the BOINC core client and the BOINC Manager. Unfortunately the latter is not available for DebianSarge because of a missing build dependency (wxWidgets 2.6).

apt-get update
apt-get install boinc-client boinc-manager

Finally, run the graphical user interface boincmgr and follow the instructions to attach a new project to your BOINC core client. A non-graphical alternative to boincmgr is the boinc_cmd program, which is included in the boinc-client package.

Installation from source

To install the BOINC packages from source one of the deb-src lines from the last section must be present in your /etc/apt/sources.list file. Also make sure that you have the build-essential and fakeroot packages installed on your system.

  1. Prepare a source directory and download the BOINC source package and it's build dependencies:

    mkdir -p ~/src/boinc
    cd !$
    apt-get build-dep boinc
    apt-get source boinc
  2. Change to the BOINC directory and build the sources. Before running dpkg-buildpackage you can apply patches to the BOINC source or set compiler flags to optimize the BOINC core client (see also: [#Optimizing Optimizing the core client] and ?/ClientBenchmarks).

    cd boinc-X.Y.Z/
    dpkg-buildpackage -rfakeroot -us -uc
  3. After dpkg-buildpackage successfully finishes the build you can install your custom built packages:

    cd ~/src/boinc
    dpkg -i boinc-client_X.Y.Z-R_ARCH.deb boinc-manager_X.Y.Z-R_ARCH.deb

If dpkg-buildpackage fails to build the BOINC packages this probably indicates a bug in our sources and it is worth reporting it to the pkg-boinc-devel mailing list pkg-boinc-devel@lists.alioth.debian.org.

Information on how to change compiler settings to optimise the client is given at the BOINC/ClientBenchmarks page.

?Anchor(Troubleshooting)

Troubleshooting

Bug tracking

Everything works fine but some submissions get evaluated as erroneous

If this is fewer than 10 in 100 times then this may be some physiological behaviour. The submitted results are not all 100% identical when run on different machines.

Where to find status reports on clients

The boinc-client installed by the Debian package does not perform the actual computation. That is performed by the binary downloaded dynamically by that client. The web site of the project features entries for each result which may be indicative of one problem or the other.

E.g. for Einstein@Home to see the interesting graphics the X display requires to be accessible. When the client is started as a different user than the one running the X server, a very likely szenario, then no window can be opened by the boinc-client. The error is sadly not forwarded properly to the calling application (like boincmgr) but appears in the results entry ([http://einstein.phys.uwm.edu/result.php?resultid=11933009 see here]). An 'xhost +' allowed the window to open.

Command Line Only

Successfully running BOINC from the command line may take a little work. The package installs boinc_client as a daemon service running under user boinc. When working from the command line only, this means using boinc_cmd to communicate with the boinc_client service.

boinc_cmd can be a little frustration to work with, the man page needs a volunteer to step up and the feedback from the command is minimalistic. By default, the output from boinc_client is piped to log files in /var/lib/boinc-client/ (stdoutdae.txt and stderrdae.txt). These will need to be consulted when troubleshooting.

The first command you should use should be

boinc_cmd --get_state

Why not try it! When it works, you'll see lots of information about the projects you are (or are not) running but it's likely not to work just yet.

Authorization

The first stumbling block is that (for security reasons) boinc_cmd should not be authorized to connect to the daemon initially. boinc_client will have invented a random password (to protect the connection to the boinc_client daemon and is nothing at all to do with project passwords) and put it into /var/lib/boinc-client/gui_rpc_auth.cfg. You'll probably want to edit this file so that it contains the password you want to use.

boinc_client will need to be restarted for this change to take effect. This can be done thus:

/etc/init.d/boinc-client restart

Now try

boinc_cmd --host localhost --passwd <YOUR PASSWORD> --get_state

Hopefully it should work now.

Quick Note About Switch Order

boinc_cmd seems to be pretty sensitive to the order of the switches on the command line. So,

boinc_cmd --host localhost --passwd <YOUR PASSWORD> --get_state

may work but

boinc_cmd  --get_state --host localhost --passwd <YOUR PASSWORD>

may not.

Signing Up

When using the command line, you'll need to sign up using a form on the project website. In return, you will receive an email containing important information looking something like:

Welcome to SETI@home.

This email confirms your account with SETI@home:
    Project URL:         http://setiathome.berkeley.edu
    Account Key:         xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    User name:           Your User Name
    E-mail:              email@example.com


For further information and assistance with SETI@home go to http://setiathome.berkeley.edu

You now need to ask boinc_client to attach each project you want to run. Use

boinc_cmd --host localhost --passwd <YOUR PASSWORD>  --project_attach http://setiathome.berkeley.edu xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

where xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx is the account key contained in the email. To check that this has been successful, use:

boinc_cmd --host localhost --passwd <YOUR PASSWORD> --get_state 

You should now see your projects listed under Projects, a little like

...
======== Projects ========
1) -----------
   name: SETI@home
   master URL: http://setiathome.berkeley.edu/
...

and a lot of other information as well.

If this doesn't work for you, start by consulting the logs.

?Anchor(DevInfos)

Information for developers

Using the Subversion repository

Development is coordinated through a [http://svn.debian.org/wsvn/pkg-boinc Subversion repository]. It follows a brief HOWTO for working with this repository. For a detailed introduction in Subversion have a look at the [http://svnbook.red-bean.com/ Version Control with Subversion] book.

  • Download the files from the the repository. Substitute smoe-guest in the URL with your userid:

    svn co svn+ssh://smoe-guest@svn.debian.org/svn/pkg-boinc
  • Now, files can be edited and subsequently be submitted (checked in) back to the repository:

    svn ci
  • To get the latest version again, run update without the reqirement of specifying the URL again, which is stored in local files:

    svn up
  • The program [http://packages.debian.org/unstable/devel/svn-buildpackage svn-buildpackage] is nice for creating Debian packages directly from a Subversion working directory. Before building packages you need a BOINC .orig.tar.gz file, see [http://svn.debian.org/wsvn/pkg-boinc/trunk/boinc/debian/README.Debian-source?op=file README.Debian-source]. Once you obtained a source tarball run

    svn-buildpackage -rfakeroot

    in the directory trunk/boinc/ and subsequently inspect the file trunk/boinc/.svn/deb-layout. That file defines origDir, the directory where the .orig.tar.gz files are stored. Once this variable is adjusted another run of svn-buildpackage -rfakeroot should build BOINC source and binary packages.

For remaining questions send an email to our [http://lists.alioth.debian.org/mailman/listinfo/pkg-boinc-devel mailing list].

?Anchor(TODO)

To-do list

  • Things that need to be done before uploading to DebianUnstable:

    • Write expressive long descriptions for boinc-manager and boinc-dev.

    • Checks against http://ftp-master.debian.org/REJECT-FAQ.html

      OpenSSL

      Not applicable - BOINC is LGPL and not GPL

      CDBS

      Not applicable

      PHP

      Not applicable

      License

      Transition

      fine (Steffen)

      Experimental library

      fine (Frank) - wxWidgets is in sid

      Hijack

      fine

      Package split

      fine (Frank)

      FTBFSIASW

      fine

      Copyright

      fine (Frank)

      License II

      fine (Frank) - we have copies of every license in debian/copright

      Non-main

      fine (Steffen)

      Package Content

      fine (Steffen)

      Policy Violation

      should be fine - if not lintian/linda will complain

      Contents of orig.tar.gz

      fine (Frank)

      Lintian

      fine

      rpath

      fine (Frank)

      Package name

      fine

      Common license

      fine (Frank)

  • General major TODOs:
    • Write expressive long descriptions for boinc-server.

    • Implement a working solution for boinc-client and boinc-app-* packages.

    • Use test/test_sanity.py to check runtime dependencies of the boinc-server package.

    • Have a look at: https://uimon.cern.ch/twiki/bin/view/LHCAtHome/BOINCserverRPM - Can we adopt some ideas for our boinc-server package?

  • General minor TODOs:
    • Explain in boinc-client's manpage or README how to restrict GUI RPC access by changing the permission of the gui_rpc_auth.cfg file.

    • Revise all manpages.
  • Thoughts for the Wiki
    • Explain how to set up a project
    • Create more sub pages for
      • Trouble shooting
  • Things that need to be done before releasing the next upstream release:
    • Remove 01_amd64-gcc4-fixes.dpatch in 5.3.* or 5.4.*, since it was applied upstream in their MAIN branch.