TOR Browser Bundle
Peter Smout
smoutpete at gmail.com
Wed Sep 10 01:08:16 UTC 2014
On 10/09/14 01:36, Rusty Shakelford wrote:
> On Tue, 9 Sep 2014 07:54:10 +0100
> Avi Greenbury <lists at avi.co> wrote:
>
>> Rusty Shakelford wrote:
>>> Is there any good step by step documentation on installing the TOR browser bundle on Ubuntu?
>>>
>>> What I found was over my head and I can't seem to follow it well enough to make it work for me.
>>
>> How far have you been able to get? Broadly, you should be able to
>> extract the tarball (which Doug has already covered), go into the
>> resulting directory (likely named 'tor-browser_en-US') and run
>> 'start-tor-browser'. It can take a while to start fully.
>>
>> Does that process work? If so, is the issue in getting it 'fully'
>> installed such that you can launch it from menus and suchlike? If not,
>> at which point does it do something unexpected, and what does it do,
>> or not do?
>>
>> --
>> Avi
>
> Thank you for your help.
> I would idealy like to be able to lock an icon to the launcher however I am flexible as long as I can start it and make it run.
>
> I downloaded the Tar file and extracted it to usr/local/src
> As you said I now have a folder called "tor-browser_en-US".
> After trying to run "start Tor browser" Gedit opens with the following information which makes no sense to me at all.
>
> #!/bin/sh
> #
> # GNU/Linux does not really require something like RelativeLink.c
> # However, we do want to have the same look and feel with similar features.
> #
> # To run in debug mode simply pass --debug
> #
> # Copyright 2011 The Tor Project. See LICENSE for licensing information.
>
> complain_dialog_title="Tor Browser Bundle"
>
> # First, make sure DISPLAY is set. If it isn't, we're hosed; scream
> # at stderr and die.
> if [ "x$DISPLAY" = "x" ]; then
> echo "$complain_dialog_title must be run within the X Window System." >&2
> echo "Exiting." >&2
> exit 1
> fi
>
> # Do not (try to) connect to the session manager
> unset SESSION_MANAGER
>
> # Determine whether we are running in a terminal. If we are, we
> # should send our error messages to stderr...
> ARE_WE_RUNNING_IN_A_TERMINAL=0
> if [ -t 1 -o -t 2 ]; then
> ARE_WE_RUNNING_IN_A_TERMINAL=1
> fi
>
> # ...unless we're running in the same terminal as startx or xinit. In
> # that case, the user is probably running us from a GUI file manager
> # in an X session started by typing startx at the console.
> #
> # Hopefully, the local ps command supports BSD-style options. (The ps
> # commands usually used on Linux and FreeBSD do; do any other OSes
> # support running Linux binaries?)
> ps T 2>/dev/null |grep startx 2>/dev/null |grep -v grep 2>&1 >/dev/null
> not_running_in_same_terminal_as_startx="$?"
> ps T 2>/dev/null |grep xinit 2>/dev/null |grep -v grep 2>&1 >/dev/null
> not_running_in_same_terminal_as_xinit="$?"
>
> # not_running_in_same_terminal_as_foo has the value 1 if we are *not*
> # running in the same terminal as foo.
> if [ "$not_running_in_same_terminal_as_startx" -eq 0 -o \
> "$not_running_in_same_terminal_as_xinit" -eq 0 ]; then
> ARE_WE_RUNNING_IN_A_TERMINAL=0
> fi
>
> # Complain about an error, by any means necessary.
> # Usage: complain message
> # message must not begin with a dash.
> complain () {
> # Trim leading newlines, to avoid breaking formatting in some dialogs.
> complain_message="`echo "$1" | sed '/./,$!d'`"
>
> # If we're being run in a terminal, complain there.
> if [ "$ARE_WE_RUNNING_IN_A_TERMINAL" -ne 0 ]; then
> echo "$complain_message" >&2
> return
> fi
>
> # Otherwise, we're being run by a GUI program of some sort;
> # try to pop up a message in the GUI in the nicest way
> # possible.
> #
> # In mksh, non-existent commands return 127; I'll assume all
> # other shells set the same exit code if they can't run a
> # command. (xmessage returns 1 if the user clicks the WM
> # close button, so we do need to look at the exact exit code,
> # not just assume the command failed to display a message if
> # it returns non-zero.)
>
> # First, try zenity.#!/bin/sh
> #
> # GNU/Linux does not really require something like RelativeLink.c
> # However, we do want to have the same look and feel with similar features.
> #
> # To run in debug mode simply pass --debug
> #
> # Copyright 2011 The Tor Project. See LICENSE for licensing information.
>
> complain_dialog_title="Tor Browser Bundle"
>
> # First, make sure DISPLAY is set. If it isn't, we're hosed; scream
> # at stderr and die.
> if [ "x$DISPLAY" = "x" ]; then
> echo "$complain_dialog_title must be run within the X Window System." >&2
> echo "Exiting." >&2
> exit 1
> fi
>
> # Do not (try to) connect to the session manager
> unset SESSION_MANAGER
>
> # Determine whether we are running in a terminal. If we are, we
> # should send our error messages to stderr...
> ARE_WE_RUNNING_IN_A_TERMINAL=0
> if [ -t 1 -o -t 2 ]; then
> ARE_WE_RUNNING_IN_A_TERMINAL=1
> fi
>
> # ...unless we're running in the same terminal as startx or xinit. In
> # that case, the user is probably running us from a GUI file manager
> # in an X session started by typing startx at the console.
> #
> # Hopefully, the local ps command supports BSD-style options. (The ps
> # commands usually used on Linux and FreeBSD do; do any other OSes
> # support running Linux binaries?)
> ps T 2>/dev/null |grep startx 2>/dev/null |grep -v grep 2>&1 >/dev/null
> not_running_in_same_terminal_as_startx="$?"
> ps T 2>/dev/null |grep xinit 2>/dev/null |grep -v grep 2>&1 >/dev/null
> not_running_in_same_terminal_as_xinit="$?"
>
> # not_running_in_same_terminal_as_foo has the value 1 if we are *not*
> # running in the same terminal as foo.
> if [ "$not_running_in_same_terminal_as_startx" -eq 0 -o \
> "$not_running_in_same_terminal_as_xinit" -eq 0 ]; then
> ARE_WE_RUNNING_IN_A_TERMINAL=0
> fi
>
> # Complain about an error, by any means necessary.
> # Usage: complain message
> # message must not begin with a dash.
> complain () {
> # Trim leading newlines, to avoid breaking formatting in some dialogs.
> complain_message="`echo "$1" | sed '/./,$!d'`"
>
> # If we're being run in a terminal, complain there.
> if [ "$ARE_WE_RUNNING_IN_A_TERMINAL" -ne 0 ]; then
> echo "$complain_message" >&2
> return
> fi
>
> # Otherwise, we're being run by a GUI program of some sort;
> # try to pop up a message in the GUI in the nicest way
> # possible.
> #
> # In mksh, non-existent commands return 127; I'll assume all
> # other shells set the same exit code if they can't run a
> # command. (xmessage returns 1 if the user clicks the WM
> # close button, so we do need to look at the exact exit code,
> # not just assume the command failed to display a message if
> # it returns non-zero.)
>
> # First, try zenity.
> zenity --error \
> --title="$complain_dialog_title" \
> --text="$complain_message"
> if [ "$?" -ne 127 ]; then
> return
> fi
>
> # Try kdialog.
> kdialog --title "$complain_dialog_title" \
> --error "$complain_message"
> if [ "$?" -ne 127 ]; then
> return
> fi
>
> # Try xmessage.
> xmessage -title "$complain_dialog_title" \
> -center \
> -buttons OK \
> -default OK \
> -xrm '*message.scrollVertical: Never' \
> "$complain_message"
> if [ "$?" -ne 127 ]; then
> return
> fi
>
> # Try gxmessage. This one isn't installed by default on
> # Debian with the default GNOME installation, so it seems to
> # be the least likely program to have available, but it might
> # be used by one of the 'lightweight' Gtk-based desktop
> # environments.
> gxmessage -title "$complain_dialog_title" \
> -center \
> -buttons GTK_STOCK_OK \
> -default OK \
> "$complain_message"
> if [ "$?" -ne 127 ]; then
> return
> fi
> }
>
> if [ "`id -u`" -eq 0 ]; then
> complain "The Tor Browser Bundle should not be run as root. Exiting."
> exit 1
> fi
>
> debug=0
> usage_message="usage: $0 [--debug]"
> # !!! We may have more than one argument, changed -eq to -ge in if & elif clauses below
> if [ "$#" -ge 1 -a \( "x$1" = "x--debug" -o "x$1" = "x-debug" \) ]; then
> debug=1
> shift # pop the debug argument
> printf "\nDebug enabled.\n\n"
> elif [ "$#" -ge 1 -a \( "x$1" = "x--help" -o "x$1" = "x-help" \) ]; then
> echo "$usage_message"
> exit 0
> fi
>
> # If the user hasn't requested 'debug mode', close whichever of stdout
> # and stderr are not ttys, to keep Firefox and the stuff loaded by/for
> # it (including the system's shared-library loader) from printing
> # messages to $HOME/.xsession-errors . (Users wouldn't have seen
> # messages there anyway.)
> #
> # If the user has requested 'debug mode', don't muck with the FDs.
> if [ "$debug" -ne 1 ]; then
> if [ '!' -t 1 ]; then
> # stdout is not a tty
> exec >/dev/null
> fi
> if [ '!' -t 2 ]; then
> # stderr is not a tty
> exec 2>/dev/null
> fi
> fi
>
> # If XAUTHORITY is unset, set it to its default value of $HOME/.Xauthority
> # before we change HOME below. (See xauth(1) and #1945.) XDM and KDM rely
> # on applications using this default value.
> if [ -z "$XAUTHORITY" ]; then
> XAUTHORITY=~/.Xauthority
> export XAUTHORITY
> fi
>
> # If this script is being run through a symlink, we need to know where
> # in the filesystem the script itself is, not where the symlink is.
> myname="$0"
> if [ -L "$myname" ]; then
> # XXX readlink is not POSIX, but is present in GNU coreutils
> # and on FreeBSD. Unfortunately, the -f option (which follows
> # a whole chain of symlinks until it reaches a non-symlink
> # path name) is a GNUism, so we have to have a fallback for
> # FreeBSD. Fortunately, FreeBSD has realpath instead;
> # unfortunately, that's also non-POSIX and is not present in
> # GNU coreutils.
> #
> # If this launcher were a C program, we could just use the
> # realpath function, which *is* POSIX. Too bad POSIX didn't
> # make that function accessible to shell scripts.
>
> # If realpath is available, use it; it Does The Right Thing.
> possibly_my_real_name="`realpath "$myname" 2>/dev/null`"
> if [ "$?" -eq 0 ]; then
> myname="$possibly_my_real_name"
> else
> # realpath is not available; hopefully readlink -f works.
> myname="`readlink -f "$myname" 2>/dev/null`"
> if [ "$?" -ne 0 ]; then
> # Ugh.
> complain "start-tor-browser cannot be run using a symlink on this operating system."
> fi
> fi
> fi
>
> # Try to be agnostic to where we're being started from, chdir to where
> # the script is.
> mydir="`dirname "$myname"`"
> test -d "$mydir" && cd "$mydir"
>
> # This is a fix for an ibus issue on some Linux systems. See #9353 for more
> # details. The symlink needs to be created before we change HOME.
> if [ ! -d ".config/ibus" ]; then
> mkdir -p .config/ibus
> ln -nsf ~/.config/ibus/bus .config/ibus
> fi
>
> # If ${PWD} results in a zero length HOME, we can try something else...
> if [ ! "${PWD}" ]; then
> # "hacking around some braindamage"
> HOME="`pwd`"
> export HOME
> surveysays="This system has a messed up shell.\n"
> else
> HOME="${PWD}"
> export HOME
> fi
>
> SYSARCHITECTURE=$(getconf LONG_BIT)
> TORARCHITECTURE=$(expr "$(file Tor/tor)" : '.*ELF \([[:digit:]]*\)')
>
> if [ $SYSARCHITECTURE -ne $TORARCHITECTURE ]; then
> complain "Wrong architecture? 32-bit vs. 64-bit."
> exit 1
> fi
>
> LD_LIBRARY_PATH="${HOME}/Tor/"
> export LD_LIBRARY_PATH
>
> # XXX: Debug mode for Firefox??
>
> # not in debug mode, run proceed normally
> printf "\nLaunching Tor Browser Bundle for Linux in ${HOME}\n"
> cd "${HOME}"
> # XXX Someday we should pass whatever command-line arguments we got
> # (probably filenames or URLs) to Firefox.
> # !!! Dash above comment! Now we pass command-line arguments we got (except --debug) to Firefox.
> # !!! Use at your own risk!
> # Adding --class argument for fixing bug 11102.
> ./Browser/firefox -no-remote --class "Tor Browser" -profile Data/Browser/profile.default "${@}"
> exitcode="$?"
> if [ "$exitcode" -ne 0 ]; then
> complain "Tor Browser exited abnormally. Exit code: $exitcode"
> exit "$exitcode"
> else
> printf '\nTor Browser exited cleanly.\n'
> fi
> zenity --error \
> --title="$complain_dialog_title" \
> --text="$complain_message"
> if [ "$?" -ne 127 ]; then
> return
> fi
>
> # Try kdialog.
> kdialog --title "$complain_dialog_title" \
> --error "$complain_message"
> if [ "$?" -ne 127 ]; then
> return
> fi
>
> # Try xmessage.
> xmessage -title "$complain_dialog_title" \
> -center \
> -buttons OK \
> -default OK \
> -xrm '*message.scrollVertical: Never' \
> "$complain_message"
> if [ "$?" -ne 127 ]; then
> return
> fi
>
> # Try gxmessage. This one isn't installed by default on
> # Debian with the default GNOME installation, so it seems to
> # be the least likely program to have available, but it might
> # be used by one of the 'lightweight' Gtk-based desktop
> # environments.
> gxmessage -title "$complain_dialog_title" \
> -center \
> -buttons GTK_STOCK_OK \
> -default OK \
> "$complain_message"
> if [ "$?" -ne 127 ]; then
> return
> fi
> }
>
> if [ "`id -u`" -eq 0 ]; then
> complain "The Tor Browser Bundle should not be run as root. Exiting."
> exit 1
> fi
>
> debug=0
> usage_message="usage: $0 [--debug]"
> # !!! We may have more than one argument, changed -eq to -ge in if & elif clauses below
> if [ "$#" -ge 1 -a \( "x$1" = "x--debug" -o "x$1" = "x-debug" \) ]; then
> debug=1
> shift # pop the debug argument
> printf "\nDebug enabled.\n\n"
> elif [ "$#" -ge 1 -a \( "x$1" = "x--help" -o "x$1" = "x-help" \) ]; then
> echo "$usage_message"
> exit 0
> fi
>
> # If the user hasn't requested 'debug mode', close whichever of stdout
> # and stderr are not ttys, to keep Firefox and the stuff loaded by/for
> # it (including the system's shared-library loader) from printing
> # messages to $HOME/.xsession-errors . (Users wouldn't have seen
> # messages there anyway.)
> #
> # If the user has requested 'debug mode', don't muck with the FDs.
> if [ "$debug" -ne 1 ]; then
> if [ '!' -t 1 ]; then
> # stdout is not a tty
> exec >/dev/null
> fi
> if [ '!' -t 2 ]; then
> # stderr is not a tty
> exec 2>/dev/null
> fi
> fi
>
> # If XAUTHORITY is unset, set it to its default value of $HOME/.Xauthority
> # before we change HOME below. (See xauth(1) and #1945.) XDM and KDM rely
> # on applications using this default value.
> if [ -z "$XAUTHORITY" ]; then
> XAUTHORITY=~/.Xauthority
> export XAUTHORITY
> fi
>
> # If this script is being run through a symlink, we need to know where
> # in the filesystem the script itself is, not where the symlink is.
> myname="$0"
> if [ -L "$myname" ]; then
> # XXX readlink is not POSIX, but is present in GNU coreutils
> # and on FreeBSD. Unfortunately, the -f option (which follows
> # a whole chain of symlinks until it reaches a non-symlink
> # path name) is a GNUism, so we have to have a fallback for
> # FreeBSD. Fortunately, FreeBSD has realpath instead;
> # unfortunately, that's also non-POSIX and is not present in
> # GNU coreutils.
> #
> # If this launcher were a C program, we could just use the
> # realpath function, which *is* POSIX. Too bad POSIX didn't
> # make that function accessible to shell scripts.
>
> # If realpath is available, use it; it Does The Right Thing.
> possibly_my_real_name="`realpath "$myname" 2>/dev/null`"
> if [ "$?" -eq 0 ]; then
> myname="$possibly_my_real_name"
> else
> # realpath is not available; hopefully readlink -f works.
> myname="`readlink -f "$myname" 2>/dev/null`"
> if [ "$?" -ne 0 ]; then
> # Ugh.
> complain "start-tor-browser cannot be run using a symlink on this operating system."
> fi
> fi
> fi
>
> # Try to be agnostic to where we're being started from, chdir to where
> # the script is.
> mydir="`dirname "$myname"`"
> test -d "$mydir" && cd "$mydir"
>
> # This is a fix for an ibus issue on some Linux systems. See #9353 for more
> # details. The symlink needs to be created before we change HOME.
> if [ ! -d ".config/ibus" ]; then
> mkdir -p .config/ibus
> ln -nsf ~/.config/ibus/bus .config/ibus
> fi
>
> # If ${PWD} results in a zero length HOME, we can try something else...
> if [ ! "${PWD}" ]; then
> # "hacking around some braindamage"
> HOME="`pwd`"
> export HOME
> surveysays="This system has a messed up shell.\n"
> else
> HOME="${PWD}"
> export HOME
> fi
>
> SYSARCHITECTURE=$(getconf LONG_BIT)
> TORARCHITECTURE=$(expr "$(file Tor/tor)" : '.*ELF \([[:digit:]]*\)')
>
> if [ $SYSARCHITECTURE -ne $TORARCHITECTURE ]; then
> complain "Wrong architecture? 32-bit vs. 64-bit."
> exit 1
> fi
>
> LD_LIBRARY_PATH="${HOME}/Tor/"
> export LD_LIBRARY_PATH
>
> # XXX: Debug mode for Firefox??
>
> # not in debug mode, run proceed normally
> printf "\nLaunching Tor Browser Bundle for Linux in ${HOME}\n"
> cd "${HOME}"
> # XXX Someday we should pass whatever command-line arguments we got
> # (probably filenames or URLs) to Firefox.
> # !!! Dash above comment! Now we pass command-line arguments we got (except --debug) to Firefox.
> # !!! Use at your own risk!
> # Adding --class argument for fixing bug 11102.
> ./Browser/firefox -no-remote --class "Tor Browser" -profile Data/Browser/profile.default "${@}"
> exitcode="$?"
> if [ "$exitcode" -ne 0 ]; then
> complain "Tor Browser exited abnormally. Exit code: $exitcode"
> exit "$exitcode"
> else
> printf '\nTor Browser exited cleanly.\n'
> fi
>
Hi,
Make the 'Start Tor Browser' script executable, (right click -
<properties> permissions, check the executable box, I am uncertain of
the command line method but it involves the 'chmod' command, and I am
sure google will help!).
Then the script should work.
I don't know if compressing the file into .tar format removes the
permissions or weather it is a security thing to prevent infections etc,
but that script is the way I start tor browser when needed.
Hope this helps you to stay anonymous and prevent the governments from
snooping on your every move :D
Pete S
PS: If you are of a sensitive nature or easily offended do not delve
too deeply into 'The Onion Network 'there be dragons in there' ;)
I found this link a good starting point: http://pastebin.com/ADTynHbX
but it maybe out of date by now!!!
More information about the ubuntu-users
mailing list