One guy said:
I'm going tell
you why it is that I use Debian and no other
distro:
- I want to compile as little software as
possible!
- I want the bleeding edge!
That's right! I do not give a rat's ass about
stability or any of that crap."
|
It sounds like the guy is running Sid, an unstable branch
of Debian. Good for him. But I chose Debian, not, say, Ubuntu
or Fedora Core because of its stability. That means that your
applications will run the same way every day, and your system
won't be screwed up after an upgrade. The only problem with
Etch is that the software is a bit obsolete.
Another guy said:
Why is this so
hard to understand?
Etch is Stable!!!
That means, you take it as it is. If you add anything
from outside sources, you are no longer running
Etch.
|
It's not quite clear from this statement what outside
sources are meant. But don't worry much about it. There's no
way to install anything from non-Etch repositories without
breaking your system with unmet dependencies.
One more guy said:
I
typically associate Etch with terms such as
"rock-solid stability" and the like, but I guess the
problem with that is that you have to sacrifice
up-to-date software. I don't want to make such
sacrifices, which basically means that I could have
stayed with Ubuntu, as I have used that most and I
doubt it is less stable than lenny.
|
OK, nobody actually has a clue how to run Debian Stable
and up-to-date software at the same time, when it is so easy.
Much easier than to read bug reports and back up your entire
hard drive before each upgrade. I don't want to sacrifice
anything, either. I want to use the latest Gimp, Evolution,
Gnome and KDE while running rock-solid Etch which never
crashes. And I am doing that right now, writing these very
words in Gnome-2.20.2 on my Etch Linux debian 2.6.18-4-686 #1
SMP Mon Mar 26 17:17:36 UTC 2007 i686 GNU/Linux.
I decided to write my own tutorial about how I did
that.
First step, platform and desktop: "GARNOME is more than
just the basic GNOME desktop. The developers have built a
fully configurable, customizable and usable desktop
environment that can be installed directly into a users home
directory. This allows people who are running older
distributions, or who are using corporate desktops to use an
interface that is both attractive and current, while not
affecting the underlying operation of their existing desktop"
- from GARNOME Documentation.
I would also add that after building Garnome you will get
a bunch of latest libraries and packages which can be reused
next time for compiling other software. We won't touch Debian
repositories. There's no way to install packages from other
releases. We will compile everything by ourselves. Maybe it
sounds somewhat inconvenient, but we have to sacrifice
convenience for stability and contemporaneity. And it's fun
actually. Besides, natively compiled software will be
adjusted to your box architecture and environment. That means
that it will be much more stable and faster than the one from
outside.
This tutorial has nothing to do with the unstable stuff at
all. If you check the developers websites, they always claim
that their software is the latest stable one. That's it. No
less and no more. All you need is to download a copy of
Garnome, change the directory to its ./desktop and run "make
paranoid-install". Garnome will start building your new
desktop right away. Great compiling "Automatix" from Gnome
developers! It is worth spending a couple of days on it.
That's how long it takes to compile everything. Eventually
you will get a neat folder of approximately 2 G size. But
most likely you don't need so much stuff. Be bold to delete
some folders, if you don't want them. Don't waste your time.
Start right now.
It is not advisable to run garnome-installer as root, and
I would also mention that it is preferable to run it from an
unusable user account. If you don't have any, you'd better
create one. Otherwise some programs like Evolution and the
ones dependent on the older GTK+ likely won't work. Garnome
can change some configuration files. it doesn't matter,
though, if you are going to get rid of your older Gnome,
Make your .bashrc look like the one below. That will make
pkg-config use the libraries that are already compiled and
installed into ~/garnome. And it would be nice to remove all
other PKG_CONFIG_PATH's from your .bashrc. Why? See the
explanation further on.
|
|
GARNOME=/dir/where/you/put/it
PATH=$GARNOME/bin:$PATH
export PATH
PKG_CONFIG_PATH=$GARNOME/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH
LD_LIBRARY_PATH=$GARNOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
|
|
NOTE: you might want to add the paths two times because
pkg-config can fail to find the right directory. I am not
quite sure why. I guess this is an ownership issue.
For building Garnome you need to install some packages.
These ones are taken from Garnome documentation:
|
|
libbz2-dev zlib1g-dev libxcursor-dev libxft-dev
libpng3-dev libjpeg62-dev libtiff4-dev
libncurses5-dev libpopt-dev libexpat1-dev
libsmbclient-dev hermes1-dev docbook-xml docbook-xsl
openjade python2.4-dev python-pyrex
libxml-parser-perl libfreetype6-dev libexif-dev
libpisock-dev libreadline5-dev or libreadline4-dev
libaspell-dev libldap2-dev libkrb5-dev libgnutls-dev
libvorbis-dev libsdl-dev liboil0.3-dev libssl-dev
libxkbfile-dev libsexy-dev doxygen libpcre3-dev
libcurl3-dev libgpgme11-dev libperl-dev
libxml-simple-perl imagemagick libgdbm-dev
libcupsys2-dev liblame-dev libmpeg2-4-dev libmad0-dev
libiw-dev libgdk-pixbuf-dev cracklib2-dev
cracklib-runtime libogg-dev libvorbis-dev
libdvdread3-dev liba52-0.7.4-dev libxss-dev
libsqlite0-dev liblcms1-dev libsqlite3-dev
libgphoto2-2-dev libgdbm-dev libid3tag0-dev
libflac-dev libgtkspell-dev libsysfs-dev xnest
|
|
And these ones I encountered during compiling:
|
|
python-gtk2-dev python2.5-dev libpisock-dev
libusb-dev x11proto-dmx-dev libgmp3-dev libgmpxx4
libltdl3-dev libreadline5-dev libxdamage-dev
x11proto-damage-dev libxcomposite-dev
x11proto-xf86misc-dev x11proto-xf86vidmode-dev
libdb4.4-dev libedit2 openssh-client libbluetooth2
libbluetooth2-dev libopenobex1 autoconf automake
libsgutils1-dev autogen libopts25 libopts25-dev
libgc-dev
|
|
If you need to compile something from outside Garnome, do
it with
|
|
./configure --prefix=/home/rex/garnome
--exec_prefix=/home/rex/garnome
--bindir=/home/rex/garnome/bin
--sbindir=/home/rex/garnome/sbin
--libexecdir=/home/rex/garnome/libexec
--datadir=/home/rex/garnome/share
--sysconfdir=/home/rex/garnome/etc
--sharedstatedir=/home/rex/garnome/share
--localstatedir=/home/rex/garnome/var
--libdir=/home/rex/garnome/lib
--infodir=/home/rex/garnome/info
--includedir=/home/rex/garnome/include
--mandir=/home/rex/garnome/man --disable-static
--disable-maintainer-mode --disable-debug
--disable-tests
|
|
NOTE: "rex" is my user account.
These are the options that Garnome uses itself. Your
libraries and executables will be put into garnome, where
pkg-congif will find them.
I borrowed two boxes from the
Debian website. Sometimes some development packages can be
missing. If you get an error that some files (usually with
the extensions .so or .h) can't be found, use the lower box,
where you can search for the package to whom this file
belongs. Packages can be searched by their names and
description in the upper box.
Search
package directories
Search
the contents of packages
This search engine allows you to search the
contents of Debian distributions for any files (or
just parts of file names) that are part of packages.
You can also get a full list of files in a given
package.
|
If you get an error like this:
|
|
configure: error: ImageMagick is required to build
tango-icon-theme
|
|
it means that pkg-config cannot find the file with the
extension .pc which describes available packages for linking.
In our case only two directories will be used by pkg-config
to look for these files, /usr/lib/pkgconfig and
~/garnome/lib/pkgconfig. Of course, you can add more, if you
like. But I wouldn't recommend that. Because you never know
which directory pkg-config will choose, and, if the right
options required by Garnome were not built into the package,
you will be buried under errors that the compiler will throw
upon you, unless you are quite sure, of course.
You can check if the package is available with the
command:
|
|
pkg-config --cflags --libs some_package
|
|
So the fix for ImageMagick will be to go to lower box
above and type "imagemagic.pc". The output will give two
packages, "graphicsmagick-libmagick-dev-compat" and "
libmagick9-dev". You will have to experiment a bit here which
one to choose. I chose graphicsmagick-libmagick-dev-compat,
and it's fine.
I wouldn't recommend to use ldconfig. It fixes some things
but breaks others.
Download Garnome
Open terminal and type:
|
|
cd /to/the/directory/where/you/put/Garnome
tar -jxvf garnome-2.20.2.tar.bz2
cd garnome-2.20.2/desktop
make paranoid-install
|
|
|
Summery
and Possible Errors |
|
|
desktop |
|
While
Compiling
evolution-data-server-1.12.2 |
ERROR:
e2k-global-catalog.c: In function 'ntlm_bind':
e2k-global-catalog.c:242: warning: pointer targets in
assignment differ in signedness
e2k-global-catalog.c:243: warning: implicit declaration of
function 'ldap_ntlm_bind'
e2k-global-catalog.c:243: error: 'LDAP_AUTH_NTLM_REQUEST'
undeclared (first use in this function)
e2k-global-catalog.c:243: error: (Each undeclared identifier
is reported only once
e2k-global-catalog.c:243: error: for each function it appears
in.)
e2k-global-catalog.c:257: warning: implicit declaration of
function 'ldap_parse_ntlm_bind_result'
e2k-global-catalog.c:278: warning: pointer targets in
assignment differ in signedness
e2k-global-catalog.c:279: error: 'LDAP_AUTH_NTLM_RESPONSE'
undeclared (first use in this function)
e2k-global-catalog.c: In function 'get_sid_values':
e2k-global-catalog.c:548: warning: pointer targets in passing
argument 2 of 'e2k_sid_new_from_binary_sid' differ in
signedness
make[8]: *** [e2k-global-catalog.lo] Error 1
FIX:
We need openldap. It is already installed into garnome,
though, but there's something weird about it. Openldap
depends on Berkeley DB. Package libdb4.4-dev should solve
this issue in most cases. If not, download db-4.6.21.tar.gz
from Oracle and install it into /usr/include and
/usr/local/lib or into ~/garnome/include and ~/garnome/lib
correspondently.
Download openldap-2.4.6 and compile it with
./configure --prefix=/home/rex/garnome
--exec_prefix=/home/rex/garnome
--bindir=/home/rex/garnome/bin
--sbindir=/home/rex/garnome/sbin
--libexecdir=/home/rex/garnome/libexec
--datadir=/home/rex/garnome/share
--sysconfdir=/home/rex/garnome/etc
--sharedstatedir=/home/rex/garnome/share
--localstatedir=/home/rex/garnome/var
--libdir=/home/rex/garnome/lib
--infodir=/home/rex/garnome/info
--includedir=/home/rex/garnome/include
--mandir=/home/rex/garnome/man --disable-static
--disable-maintainer-mode --disable-debug --disable-tests
Then
cd
/home/rex/Desktop/Downloads/garnome-2.20.2/desktop/evolution-data-server
make clean
make install
When done:
cd /home/rex/Desktop/Downloads/garnome-2.20.2/desktop/
make paranoid-install
|
desktop |
|
While
Building
evolution-exchange-2.12.2 |
ERROR:
mail-stub.c:31:21: error: e2k-uri.h: No such file or
directory
mail-stub.c:32:23: error: e2k-types.h: No such file or
directory
It might seem that apt-get install
libexchange-storage1.2-dev can fix it, but:
ERROR:
e-book-backend-exchange.c:58:30: error: exchange-esource.h:
No such file or directory
FIX:
Download libexchange-storage1.2-dev_1.12.1-1_i386.deb from
Sid.
dpkg -i --force-depends
libexchange-storage1.2-dev_1.12.1-1_i386.deb
cd
~/Desktop/Downloads/garnome-2.20.2/desktop/evolution-exchange
make install
When done:
dpkg --purge libexchange-storage1.2-dev
|
desktop |
|
While
Building seahorse-2.20.1 |
ERROR:
/libglib-2.0.so -Wl,--rpath -Wl,/home/rex/garnome/lib
seahorse-agent-main.o: In function `main':
seahorse-agent-main.c:(.text+0x15d): undefined reference to
`seahorse_agent_ssh_prefork'
seahorse-agent-main.c:(.text+0x18f): undefined reference to
`seahorse_agent_ssh_postfork'
seahorse-agent-status.o: In function
`on_settings_childsetup':
seahorse-agent-status.c:(.text+0x20d): undefined reference to
`seahorse_agent_ssh_childsetup'
collect2: ld returned 1 exit status
make[4]: *** [seahorse-agent] Error 1
FIX:
apt-get install openssh-server
Nothing fancy but annoying.
|
fifth-toe
|
|
Tip: How to
Compile Gimp-2.4.2 |
cd
/home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe/gimp
make clean, if necessary
cd
/home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe/gimp
make install
When downloading and extracting are done, close the
terminal.
Download gimp-2.4.2.tar.bz2
Substitute the content of
/home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe/gimp/work/main.d/gimp-2.4.1
folder with the one from gimp-2.4.2.tar.bz2
cd
/home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe/gimp
make install
Garnome will think that it compiles gimp-2.4.1 while
building gimp-2.4.2. Not a huge trick, though. Just a way to
get it.
ERROR:
Resolving victoria.acc.umu.se... 130.239.18.177,
2001:6b0:e:2018::177
Connecting to victoria.acc.umu.se|130.239.18.177|:80...
connected.
HTTP request sent, awaiting response... 404 Not Found
13:06:45 ERROR 404: Not Found.
make[2]: ***
[http//ftp.gnome.org/pub/GNOME/sources/gimp-help/2./gimp-help-2-0.13.tar.gz]
Error 1
FIX:
Download gimp-help-2.4.0.tar.bz2 and put it into
/home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe/gimp-help/download
cd
/home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe/gimp-help/download
tar -jxvf gimp-help-2.4.0.tar.bz2
mv gimp-help-2.4.0 gimp-help-2-0.13
tar -czvf gimp-help-2-0.13.tar.gz gimp-help-2-0.13
Open
file:///home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe/gimp-help/checksums
Delete strange characters on the left. Leave
download/gimp-help-2.0.13.tar.gz on the right.
cd
/home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe/gimp-help/
make install
The same trick.
cd /home/rex/Desktop/Downloads/garnome-2.20.2/fifth-toe
make paranoid-install
Some packages in this directory failed to compile. I got
all sorts of absolutely weird errors. I didn't have enough
time to figure out why. Maybe Etch's libraries are too old
for them or the packages themselves are too buggy. I don't
know. I just deleted them from Garnome to continue
paranoid-install.
So I removed:
libgda
libbtctl
gnome-phone-manager
lock-keys-applet
dhcdbd from bootstrap
NetworkManager
screem
thoggen
wireless-applet
|
hacker-tools |
|
While
Building Alleyoop |
ERROR: *** libiberty required to build Alleyoop.
FIX:
I deleted this package. It requires libiberty.so which is
sort of unofficial and located only in one place. There's no
libiberty even in Sid. I don't have enough time to fix all
the stuff that I don't really need.
|
hacker-tools |
|
While
Building genius-1.0.2 |
ERROR:
New enough MPFR (2.2.0+) not found, see
http://www.mpfr.org
FIX:
Download mpfr-2.3.0.tar.bz2, compile and install with the
prefix I already described.
|
|
|
No errors |
|
|
|
|
|
|
No errors |
|
|
|
|
|
|
No errors |
|
|
|
|
|
|
No errors |
|
|
|
|
|
|
No errors.
I took only libiconv, as recommended by Garnome
people. |
I share my computer with another user. If you want Garnome
to be accessible by a different user, change its ownership to
root and make a symlink to it from /opt:
chown -R root ~/garnome
cd /opt
ln -s ~/garnome
Create file "garnome-session" with the following
content:
|
#!/bin/bash
GARNOME=/opt/garnome
su -c "rm -rf $GARNOME/var/run/messagebus.pid;
\
rm -rf $GARNOME/var/run/avahi-daemon/pid; \
rm -rf $GARNOME/var/run/haldaemon.pid; \
rm -rf $GARNOME/var/run/dbus/pid;
\/opt/garnome/bin/dbus-daemon
--config-file=$GARNOME/etc/dbus-1/system.conf; \
$GARNOME/sbin/avahi-daemon; \
$GARNOME/sbin/avahi-dnsconfd; \
$GARNOME/sbin/hald"GARNOME=/opt/garnome
LD_LIBRARY_PATH=$GARNOME/lib:$LD_LIBRARY_PATH
PYTHONPATH=$GARNOME/lib/python2.4/site-packages: \
$GARNOME/lib/python2.4/site-packages/gtk-2.0
PKG_CONFIG_PATH=$GARNOME/lib/pkgconfig:/usr/lib/pkgconfig
GDK_USE_XFT=1
XDG_DATA_DIRS=$GARNOME/share
XDG_CONFIG_DIRS=$GARNOME/etc/xdg
MANPATH=$GARNOME/man:$MANPATH
DBUS_LAUNCH="$GARNOME/bin/dbus-launch
--exit-with-session"
export PATH LD_LIBRARY_PATH PYTHONPATH
PKG_CONFIG_PATH \
GDK_USE_XFT XDG_DATA_DIRS XDG_CONFIG_DIRS MANPATH
DBUS_LAUNCHexec $DBUS_LAUNCH
$GARNOME/bin/gnome-session
|
|
Create file Garnome.desktop with the following content:
|
[Desktop Entry]
Name=Garnome
Exec=/usr/bin/garnome-session
|
|
Run:
|
chmod a+x /home/rex/Garnome.desktop
cp /home/rex/Garnome.desktop /usr/share/xsessions
|
|
Presumably you can start garnome-session with startx after
putting "garnome-session" into your ~/xinitrc or
/etc/X11/xinit/xinitrc. It works, but windows manager doesn't
start. If you encounter this problem, until you find a proper
solution, a temporary workaround can be to put into your
.xinitrc:
The green leaf wallpaper will greet you, but you will have
to kill X manually with Alt-Ctrl-Backspace keys combination,
when you log off, because windows manager is not killed this
way. I don't worry about it. It's OK, if launched via gdm.
Also Garnome goes with it's own gdm, but installation of it
needs hacking, too.
If you want to get rid of your older Gnome, remove the
following dependencies. I ripped them from metapackages with
apt-cache depends:
You might also want to remove the orphaned libraries. Do
it with deborphan: