@01micko: Ok, well if you want to test out a rough version then I provide a link to my multichrome script below. Before you try it I should explain a few things.
Firstly this version does
not make Slackware packages. This is conscious decision because I want to be able to run multiple versions of Chrome on a variety of distros and do not want to have to create unique packaging scripts for each of the distros. However this is not such an issue as it might initially seem. The vast majority of Chrome is installed into /opt/google. The only things that go outside of this directory in the official packages are the repository setup files (in /etc), a symlink to the binary (in /usr/bin), the man page and desktop shortcuts + associated icons. All of those other things are therefore effectively optional. Everything you actually need to run Chrome stays in /opt/google. My script therefore retains only the essential components meaning that unistall is as easy as removing the relevant directory from /opt/google.
What my script therefore does is to check for the latest version of Chrome from the 'stable', 'beta' and 'unstable' channels and then downloads the relevant rpm package. Next it converts these rpm packages into simple tar archives. The conversion involves patching the install path so that the versions do not clash (and hence overwite) each other and then making a tar file from this. To install/upgrade you can simply untar these archives into the root (/) directory.
I should also clarify why patching is needed. Chrome expects to be installed into /opt/google/chrome. The binaries themselves have this full path
hardcoded into them. My script therefore patches the binary such that a stable version looks for itself in /opt/google/chrom
s, a beta version looks for itself in /opt/google/chrom
b and an unstable version looks for itself in /opt/google/chrom
u. I then actually place Chrome into a directory named as follows /opt/google/google-chrome-
channel-
version-number.
architecture, for example the current stable version for 64Bit would be installed in /opt/google/google-chrome-stable-27.0.1453.93-200836.x86_64/. Finally I drop a symlink in /opt/google named chrom
s (or chrom
b or chrom
u for beta and unstable respectively) pointing to this version. I do things this way so that it is possible to have multiple versions of Chrome from one channel installed in addition to multiple channels. If that sounds confusing, consider the following directory listing from my machine:
Code:
$ ls -l /opt/google/
total 48
lrwxrwxrwx 1 root root 45 May 30 19:50 chromb -> google-chrome-beta-28.0.1500.29-202781.x86_64/
lrwxrwxrwx 1 root root 47 May 30 19:50 chroms -> google-chrome-stable-27.0.1453.93-200836.x86_64/
lrwxrwxrwx 1 root root 48 May 30 00:57 chromu -> google-chrome-unstable-29.0.1521.3-202710.x86_64/
drwxr-xr-x 5 root root 4096 May 10 12:05 google-chrome-beta-27.0.1453.73-197225.x86_64/
drwxr-xr-x 5 root root 4096 May 10 12:05 google-chrome-beta-27.0.1453.81-198567.x86_64/
drwxr-xr-x 5 root root 4096 May 22 13:32 google-chrome-beta-27.0.1453.93-200836.x86_64/
drwxr-xr-x 6 root root 4096 May 24 18:54 google-chrome-beta-28.0.1500.20-201172.x86_64/
drwxr-xr-x 6 root root 4096 May 30 00:57 google-chrome-beta-28.0.1500.29-202781.x86_64/
drwxr-xr-x 5 root root 4096 May 10 12:05 google-chrome-stable-26.0.1410.63-192696.x86_64/
drwxr-xr-x 5 root root 4096 May 22 13:32 google-chrome-stable-27.0.1453.93-200836.x86_64/
drwxr-xr-x 6 root root 4096 May 22 13:32 google-chrome-unstable-28.0.1500.20-201172.x86_64/
drwxr-xr-x 6 root root 4096 May 10 12:05 google-chrome-unstable-28.0.1500.3-198635.x86_64/
drwxr-xr-x 6 root root 4096 May 10 12:05 google-chrome-unstable-28.0.1500.5-199062.x86_64/
drwxr-xr-x 6 root root 4096 May 28 15:38 google-chrome-unstable-29.0.1516.3-201887.x86_64/
drwxr-xr-x 6 root root 4096 May 30 23:10 google-chrome-unstable-29.0.1521.3-202710.x86_64/
With the above setup if I run
/opt/google/chroms/google-chrome it would start the 27.0.1453.93 stable version, whereas
/opt/google/chromb/google-chrome would start the 28.0.1500.29 beta version and
/opt/google/chromu/google-chrome would start the 29.0.1521.3 unstable version.
The trick with the symlinks means that should I decide to go back one stable version (e.g. to version 27.0.1453.93), I need only update the /opt/google/chrom
s accordingly.
Everything above deals with allowing multiple versions of Chrome to be
installed side by side, however
running them side by side also involves having to deal with the fact that they would all try to use the same profile. By default Chrome uses the directory ~/.config/google-chrome/ to store its profile. You can however override this and use any directory you like with the command line argument
--user-data-dir=. To avoid having to constantly remember to use this you can setup the following bash aliases:
Code:
alias chrome-stable="/opt/google/chroms/google-chrome --user-data-dir=$HOME/.config/google-chrome/stable"
alias chrome-beta="/opt/google/chromb/google-chrome --user-data-dir=$HOME/.config/google-chrome/beta"
alias chrome-unstable="/opt/google/chromu/google-chrome --user-data-dir=$HOME/.config/google-chrome/unstable"
This means that you can just type
chrome-stable to start the current stable, with the
chrome-beta and
chrome-unstable commands starting Chrome from their respective channels. Additionally the multichrome script as has a nice feature that will setup shortcuts for your desktop environment allowing you to start the various Chrome channels graphically without them clobbering each others profiles. By default running the multichrome script converts the relevant rpm to tar. However with the '
-s' argument it will instead setup icons and shortcuts for any versions installed via this system. For example with my /opt/google setup as above I would get the following:
Code:
$ multichrome -s
/home/ruario/.local/share/icons/hicolor/128x128/apps/google-chrome-stable.png
/home/ruario/.local/share/icons/hicolor/16x16/apps/google-chrome-stable.png
/home/ruario/.local/share/icons/hicolor/22x22/apps/google-chrome-stable.png
/home/ruario/.local/share/icons/hicolor/24x24/apps/google-chrome-stable.png
/home/ruario/.local/share/icons/hicolor/256x256/apps/google-chrome-stable.png
/home/ruario/.local/share/icons/hicolor/32x32/apps/google-chrome-stable.png
/home/ruario/.local/share/icons/hicolor/48x48/apps/google-chrome-stable.png
/home/ruario/.local/share/icons/hicolor/64x64/apps/google-chrome-stable.png
/home/ruario/.local/share/applications/google-chrome-stable.desktop
/home/ruario/.local/share/icons/hicolor/128x128/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/16x16/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/22x22/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/24x24/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/256x256/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/32x32/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/48x48/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/64x64/apps/google-chrome-beta.png
/home/ruario/.local/share/applications/google-chrome-beta.desktop
/home/ruario/.local/share/icons/hicolor/128x128/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/16x16/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/22x22/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/24x24/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/256x256/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/32x32/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/48x48/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/64x64/apps/google-chrome-unstable.png
/home/ruario/.local/share/applications/google-chrome-unstable.desktop
Note: You may need to restart your Desktop Environment for your new shortcuts to appear!
Should I remove the stable versions, running this command again would result in the following:
Code:
$ multichrome -s
removed ‘/home/ruario/.local/share/icons/hicolor/128x128/apps/google-chrome-stable.png’
removed ‘/home/ruario/.local/share/icons/hicolor/16x16/apps/google-chrome-stable.png’
removed ‘/home/ruario/.local/share/icons/hicolor/22x22/apps/google-chrome-stable.png’
removed ‘/home/ruario/.local/share/icons/hicolor/24x24/apps/google-chrome-stable.png’
removed ‘/home/ruario/.local/share/icons/hicolor/256x256/apps/google-chrome-stable.png’
removed ‘/home/ruario/.local/share/icons/hicolor/32x32/apps/google-chrome-stable.png’
removed ‘/home/ruario/.local/share/icons/hicolor/48x48/apps/google-chrome-stable.png’
removed ‘/home/ruario/.local/share/icons/hicolor/64x64/apps/google-chrome-stable.png’
removed ‘/home/ruario/.local/share/applications/google-chrome-stable.desktop’
/home/ruario/.local/share/icons/hicolor/128x128/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/16x16/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/22x22/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/24x24/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/256x256/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/32x32/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/48x48/apps/google-chrome-beta.png
/home/ruario/.local/share/icons/hicolor/64x64/apps/google-chrome-beta.png
/home/ruario/.local/share/applications/google-chrome-beta.desktop
/home/ruario/.local/share/icons/hicolor/128x128/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/16x16/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/22x22/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/24x24/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/256x256/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/32x32/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/48x48/apps/google-chrome-unstable.png
/home/ruario/.local/share/icons/hicolor/64x64/apps/google-chrome-unstable.png
/home/ruario/.local/share/applications/google-chrome-unstable.desktop
Note: You may need to restart your Desktop Environment for your new shortcuts to appear!
So with that all said, you can
get the multichrome script from here. Just run it, pick which channel you wish to update and wait for the tar file to be created. To install simply extract into root, e.g.:
Code:
# tar xf google-chrome-unstable-29.0.1521.3-202710.x86_64.tar -C /