'''Foresight Linux''' ist eine relativ neue Distribution (seit 2004), die auf [[rPath Linux]] mit dem Paketsystem Conary ([[http://wiki.rpath.com/wiki/Conary:QuickReference|Conary-Quickreference]]) basiert. Foresight speziell setzt vor allem darauf jeweils das neueste GNOME anzubieten. Ist es für Anfänger geeignet? Grundsätzlich ja, denn alle Einstellungen können grafisch vorgenommen werden. Es gibt allerdings noch keinen GUI-Installer-Updater. Dieser ist im Entstehen und basiert auch PackageKit. Foresight vollzieht rollende Updates d.h. das es stetig aktualisiert wird und das Releases lediglich eine Art Snapshot sind.
 
 * Webseite http://www.foresightlinux.com/
 * Chat: irc://chat.freenode.net/foresight  | auf deutsch: [[irc://chat.freenode.net/foresight-de|#foresight-de]]
 * DistroWatch: [[http://distrowatch.com/table.php?distribution=foresight|Foresight_Linux]]

Die Community hat eine große Deckung mit der rPath-Community. rPath gehört weder zu den debianbasierten, noch zu den RPM-basierten Distributionen. Interessant ist, das man hier noch direkten Kontakt zu den Gründern der Distribution haben kann, was bei größeren Distributionen meist gar nicht mehr möglich ist. Besonders interessant ist auch, das man bei Conary beliebig zwischen instabilen und stabilen Versionen hin- und herwechseln kann. es kann zwar mal irgendwo haken, aber einen "WikiPedia:Point_of_no_return" wie bei RPM oder dpkg gibt es nicht. Und dadurch ist es auch fast nie nötig das System neu zu installieren.



 * 19.09.07 Version 1.4  mit [[GNOME]] 2.20 veröffentlicht!

== Tips & Tricks ==

 * Ein Update macht man mit {{{sudo conary udpateall}}}
 * Einzelnes Paket installieren: {{{sudo conary update packagename}}}
 * Einzelnes Paket entfernen: {{{sudo conary erase packagename}}}
 * Entwicklerpakete installieren: {{{sudo conary update group-devel}}}
 * Die Versionierung des Paketsystems erfolgt ähnlich wie bei einer Versionsverwaltung wie subversion.



=== Rollbacks ===
Ein besonderes Feature dec Conary-Paketmanagers ist die Möglichkeit das Paketsystem auf einen bestimmten Punkt zurücksetzen. Um sich alle möglichen Rollbackpunkte anzeigen zu lassen gibt man ein:
{{{
sudo conary rblist
}}}
Und um einen bestimmtes Rollbackpunkt wiederherzustellen:
{{{
sudo conary rollback r.656
}}}

=== Pakete selber bauen ===

Es ist relativ leicht Pakete selber zu bauen. Man muss zunächst ein Buildenvironment aufsetzen mit einigen Daten und Verzeichnissen (siehe [[http://wiki.foresightlinux.com/confluence/display/DEV/HOWTO+set+up+a+build+environment|HOWTO set up a build environment]]. Danach geht man bei neuen Paketen ungefähr so vor:

{{{
cvc newpkg paketname --template=foresight
cd paketname/
}}}

In dem Verzeichnis gibt es jetzt eine Standarddatei CONARY und eine Rezept-Datei: {{{paketname.recipe}}} die nur einige Werte ausgefüllt hat. Diese muss man bearbeiten. Z.B. so wie das Rezept für Paket ffmpeg:

{{{
#
# Copyright (c) 2007 Foresight Linux
# This file is distributed under the terms of the MIT License.
# A copy is available at http://www.rpath.com/permanent/mit-license.html
#

class Ffmpeg(CPackageRecipe):
    name = 'ffmpeg'
    version = '0.5b'
 
    buildRequires = ['SDL:devel','a52dec:devel','faac:devel','faad2:devel','freetype:devel', 
                     'imlib2:devel', 'libtheora:devel','libogg:devel', 'libvorbis:devel',
                     'xvidcore:devel','zlib:devel']
    def setup(r):
        r.addSvnSnapshot('svn://svn.mplayerhq.hu/ffmpeg/trunk')
        r.ManualConfigure(' --prefix=%(prefix)s --enable-gpl'
            ' --enable-shared --enable-pp --enable-pthreads'
            ' --enable-libvorbis --enable-libogg --enable-liba52' 
            ' --enable-liba52bin --enable-libfaac --enable-libfaad' 
            ' --enable-libxvid --enable-swscaler --enable-libtheora ')
        r.Replace('PREFIX=/usr','PREFIX=%(destdir)s%(prefix)s','config.mak')
        r.Make()
        r.CheckDestDir('%(destdir)s')
        r.MakeInstall(rootVar='%(destdir)s')
}}}

Dieses Paket "kocht" man jetzt:
{{{
cvc cook paketname.recipe
}}}

Danach erhält man ein Changeset wie "paketname-version.ccs". Dieses kann man nun betrachten mit:
{{{
conary scs paketname-version.ccs --ls
}}}

oder lokal installieren mit
{{{
sudo conary update paketname-version.ccs
}}}

Oder committen mit:
{{{
cvc commit
}}}
Und im repository kochen mit
{{{
cvc cook paketname
}}}