Archlinux Installation Instructions
WARNING!!! Installing fuerte on Arch Linux can be done but it's not a clean or well documented process yet.:
- You may find that additional pacman packages need to be installed in the setup phase.
- Installing the core libraries does work but see the note if cmake fails.
- Build higher-level/tools step works but be prepared to be a build ninja...
Contents
Prerequisites
Here's a list of Arch Linux packages to install before you get started.
sudo pacman -S python2 gcc boost cmake libyaml yaml-cpp python2-yaml python2-matplotlib python2-nose nvidia-cg-toolkit wxpython python-paramiko sip fltk sdl_image cppunit wxgtk swig python2-sip pygtk tinyxml zziplib python2-numpy python2-pyqt python-imaging netpbm intel-tbb lsb-release doxygen graphviz jshon
jshon is required for packer to execute correctly.
AUR Packages
You will need to build some packages from AUR. I use packer to do this but you can also do it by hand or with other build tools. First get packer which is just a bash script which adds extra capabilities to pacman.
git clone git://github.com/bruenig/packer.git
Now make packer executable with a "chmod a+x packer" add packer to your PATH, for example bash would be something like:
export PATH=~/packer:$PATH
Next use packer to build and install these packages from AUR.
packer -S log4cxx python-empy gtest assimp
Note: As of this writing, python-empy does not support Python 3, but the package build system may attempt to use Python 3 to install it. To work around this, edit 'PKGBUILD' to use python2 to run setup.py, rather than python.
While you are at it you may as well install the AUR packages required for the higher-level build. Note: pcl-ros takes a while to build.
packer -S ros-on-arch qhull-ros pcl-ros swig-wx
Note: If you are using 64-bit Arch Linux, you may get an error about a conflict with gcc-libs-multilib. To resolve this, manually install gcc-libs-multilib with pacman. See this wiki page for further information.
The Python Issue
There are presently issues with the different ways Ubuntu and Arch deal with python. Basically Ubuntu has 'python' and 'python3' while Arch has 'python2' and 'python3' with /usr/bin/python linked to python3. Various techniques for handling this have been proposed. Select one of the following or add a technique if you have a suggestion.
Python Workaround 1
Link python -> python2
sudo rm /usr/bin/python sudo ln -s /usr/bin/python2 /usr/bin/python
WARNING: This has the potential to break a lot of system packages that expect /usr/bin/python to be python3 instead of python2.
Python Workaround 2
Since changing the link /usr/bin/python to point to python2 might have unforeseen side effects like breaking other packages that use python, fixing all #!/usr/bin/env python lines in ROS should be preferred. This can be done with the following shell command:
for file in $(grep -rl 'env python *$' .); do sed -i 's/env python *$/env python2/g' $file done
Note: the command changes all python scripts without notification. Only execute it in your ROS directory.
Python Workaround 3
This seems to be necessary to get ROS to start compiling on the newest Arch Linux 64.
Run the following shell script in ~/ros-underlay:
for file in $(grep -rl '/usr/bin/python *$' .); do sed -i 's/\/usr\/bin\/python *$/\/usr\/bin\/python2/g' $file done
Then rename the 'empy' cmake file.
mv ~/ros-underlay/catkin/cmake/empy.cmake ~/ros-underlay/catkin/cmake/python-empy.cmake
ROS Python Tools
You will need to install rosinstall and rospkg using easy_install (advanced options for easy_install):
sudo easy_install-2.7 -U rosinstall vcstools rospkg rosdep
SVN Based Install (download-and-compile)
There is an AUR package to automate the core libraries install (the 'install core libraries' step below). It's called ros-core
rosinstall
The following steps requires two separate installation steps and will compile ROS-related code into two separate places/layers:
Download and install the underlying core ROS libraries and tools into /opt/ros/fuerte.
Download and build higher-level ROS libraries using rosmake in ~/ros.
The compiled code from (1) is installed into /opt/ros/fuerte. While it is possible to install elsewhere (e.g. /usr), this is not well tested and you will encounter various problems along the way (e.g. having to change rosinstall files, having to manually install system dependencies, etc...). Please see REP 122: Filesystem Hiearchy Layout for more detailed documentation on how the installed files are placed.
The compiled code from (2) is simply built using rosmake, which is familiar to users of previous versions of ROS. The higher-level ROS stacks are download and build in subdirectories inside the ~/ros directory.
Layer 1: Install core libraries
The following instructions will create a system install of the core ROS libraries and tools. The installation is done using standard CMake/make tools, so experts can adjust to their liking.
ROS-Full: ROS package, build, communication, tutorials and graphical tools.
rosinstall --catkin ~/ros-underlay http://ros.org/rosinstalls/fuerte-ros-full.rosinstall
ROS-Base: (Bare Bones) ROS package, build, and communication libraries.
rosinstall --catkin ~/ros-underlay http://ros.org/rosinstalls/fuerte-ros-base.rosinstall
Build and install the underlay into /opt/ros/fuerte:
cd ~/ros-underlay mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=/opt/ros/fuerte -DSETUPTOOLS_DEB_LAYOUT=OFF make -j8 sudo make install
Temporary Note: If the cmake step fails try changing the catkin entry in .rosinstall from 'wg-debs/catkin.git' to 'willowgarage/catkin.git'.
Verify the installed environment:
. /opt/ros/fuerte/setup.sh which roscore
You should see:
/opt/ros/fuerte/bin/roscore
You can delete ~/ros-underlay now, if you wish. The ROS core libraries are now installed onto your system.
Layer 2: Higher-level robotics libraries and tools
Now it's time to create the second layer, which contains your main robotics libraries (e.g. navigation) as well as visualization tools like rviz. You will build this layer using rosmake, but it is not installed.
There are many different libraries and tools in ROS. We provided four default configurations to get you started.
NOTE: The rosinstall installation files below assume that you've installed into /opt/ros/fuerte, so you will need to change them manually if you have a different install path.
Desktop-Full Install: (Recommended): ROS Full, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
rosinstall ~/ros "http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=fuerte&variant=desktop-full&overlay=no"
Desktop Install: : ROS Full, rviz, and robot-generic libraries
rosinstall ~/ros "http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=fuerte&variant=desktop&overlay=no"
NOTE: the instructions above download all stacks inside the ~/ros folder. If you prefer a different location, simply change the ~/ros in the commands above.
NOTE: you may need to add another stack to .rosinstall
cat >> ~/ros/.rosinstall <<'===' - tar: {local-name: protobuf, uri: 'https://code.ros.org/svn/release/download/stacks/protobuf/protobuf-0.1.0/protobuf-0.1.0.tar.bz2', version: protobuf-0.1.0} ===
Please reference REP 113 for description of other available configurations.
Environment Setup
You'll now need to update your environment. You can do this by typing:
source ~/ros/setup.bash
It's convenient if the ROS environment variables are automatically added to your bash session every time a new shell is launched, which you can do with the command below:
echo "source ~/ros/setup.bash" >> ~/.bashrc . ~/.bashrc
For Zsh users, change the last line of ~/ros/setup.zsh to
source $ROS_ROOT/tools/rosbash/roszsh
before running source ~/ros/setup.zsh Similarly, have the setup script called at the start of each new shell session with
echo "source ~/ros/setup.zsh" >> ~/.zshrc . ~/.zshrc
Build Higher-level/tools (Layer 2)
Note: This presently works but you will need to create a patch. See https://code.ros.org/trac/ros-pkg/ticket/5417 for clues The following should work:
cd ~/ros wget https://code.ros.org/trac/ros-pkg/raw-attachment/ticket/5417/ros.patch patch -p0 ros.patch
Also: you will need to create a link to https://github.com/hauptmech/rosdistro/raw/arch_pkgs3/rosdep/archlinux.yaml
sudo sh -c "echo 'yaml https://github.com/hauptmech/rosdistro/raw/arch_pkgs3/rosdep/archlinux.yaml' > /etc/ros/rosdep/sources.list.d/10-local.list"
First, initialize your rosdep. ROS Fuerte comes with rosdep 2. If you get a message that your default sources list exists, then don't worry as it means you've done this before.
sudo rosdep init rosdep update
Now, use rosdep 2 to install system dependencies. Many of the system dependencies will install into /opt/ros/fuerte and will not be usable if you have changed the installation prefix.
rosdep install -a
Finally, build the ROS stacks using rosmake.
rosmake -a