Retourner au contenu. Retourner à la navigation

 

Portage: Install multi-distribution

by toudou @ 11/10/2005
Cette lumière vous permettra d'installer portage sur une distribution autre que Gentoo et ainsi profiter de cet excellent gestionnaire de paquets !

Installation sur une distribution quelconque

Prérequis

Dans tous les cas vous devez impérativement posséder Python d'un version égale ou supérieure à la 2.2.0. Si ce n'est pas le cas récupérer le sur le site officiel :

http://www.python.org

Ou sur http://tuxfinder.com au format que vous préférez.

Installation manuelle à partir d'un script

Créer un script bash avec ces lignes de codes :

#!/bin/bash
#
# call with one argument "again" or call it with no arguments at all
# call it with no arguments first time.
# call it again with "again" to bypass some operations.
#

if [ "$#" == "1" ]; then
again=$1
else
again=""
fi

if [ "`id -u`" != "0" ]; then
echo ""
echo "Su as root and try again."
echo ""
fi

pythonV=`python -V 2>&1`
if [ "$pythonV" \< "Python 2.2.0" ]; then
echo ""
echo "Install python 2.2 and then try again"
echo ""
exit 1
fi

if [ "$again" == "" ]; then
mkdir -p /usr/lib/portage/bin
mkdir -p /usr/lib/portage/pym
mkdir -p /usr/portage/profiles
mkdir /etc/env.d

wget ftp://gentoo.mirrors.pair.com/distfiles/portage-2.0.50-r6.tar.bz2 -O /tmp/portage-2.0.50-r6.tar.bz2
cd /tmp
if [ ! -f portage-2.0.50-r6.tar.bz2 ]; then
echo ""
echo "Mirror error. Try this script again after a while without any args".
echo ""
exit 1
fi
tar jxf portage-2.0.50-r6.tar.bz2

cd portage-2.0.50-r6/bin
cp * /usr/lib/portage/bin
export PATH=/usr/lib/portage/bin:$PATH
cd ../pym ; cp * /usr/lib/portage/pym/
cd ../man ;cp *.1 /usr/man/man1 ; cp *.5 /usr/man/man5
cd ../src/python-missingos
./setup.py install
cd ../sandbox-1.1
make && make install
cd ../../cnf; cp * /etc

if [ "`id portage`" == "" ]; then
groupadd -g 250 portage
useradd -d /var/tmp/portage -g portage -u 250 portage
fi

cd /usr/sbin
ln -s ../lib/portage/bin/regenworld .
ln -s ../lib/portage/bin/pkgmerge .
ln -s ../lib/portage/bin/fixpackages .
ln -s ../lib/portage/bin/etc-update .
ln -s ../lib/portage/bin/env-update .
ln -s ../lib/portage/bin/emerge-webrsync .
ln -s ../lib/portage/bin/ebuild.sh .
ln -s ../lib/portage/bin/ebuild .
ln -s ../lib/portage/bin/dispatch-conf .
ln -s ../lib/portage/bin/archive-conf .

cd /usr/bin
ln -s ../lib/portage/bin/xpak .
ln -s ../lib/portage/bin/repoman .
ln -s ../lib/portage/bin/quickpkg .
ln -s ../lib/portage/bin/portageq .
ln -s ../lib/portage/bin/g-cpan.pl .
ln -s ../lib/portage/bin/emerge .
fi

export PATH=/usr/lib/portage/bin:$PATH
echo "CC=gcc;CXX=g++" > /etc/env.d/compilers.sh
echo "LDPATH=\"/lib:/usr/lib:/usr/local/lib:/usr/X11R6/lib:/usr/kerberos/lib\"" > /etc/env.d/10ldpath
. /etc/env.d/compilers.sh
emerge sync
#
# emerge sync should get /usr/portage/profiles
#
if [ -d /usr/portage/profiles/default-x86-1.4 ];then
ln -s /usr/portage/profiles/default-x86-1.4 /etc/make.profile
else
echo ""
echo "Something wrong. Get /usr/portage/profiles dir from a working"
echo "Gentoo system and try again."
echo ""
exit 1
fi

# inject the "dangerous" packages first.
glibcP=`emerge -p -O glibc|grep ebuild|cut -d" " -f8`
emerge inject $glibcP
gccP=`emerge -p -O gcc|grep ebuild|cut -d" " -f8`
emerge inject $gccP
binP=`emerge -p -O binutils|grep ebuild|cut -d" " -f8`
emerge inject $binP

# fetch the baselayout.
emerge -f -O baselayout

# now inject it too.
baseP=`emerge -p -O baselayout|grep ebuild|cut -d" " -f8`
emerge inject $baseP

#was inject success
ret=`emerge -p baselayout|grep "ebuild R"`

if [ "$ret" == "" ] ;then
echo "Inject has failed. Please verify and continue with cut & paste of rest of the steps"
echo "ERROR."
exit 1
fi

# if it fails with some errors, its fine.
emerge -O portage

cd /tmp
cp /usr/portage/distfiles/rc-scripts*.tar.bz2 .
tar xjpf rc-scripts*.tar.bz2
cd rc-scripts*/sbin
cp depscan.sh /sbin; cp functions.sh /sbin
mkdir -p /lib/rcscripts/awk
cd ../src/awk
cp *.awk /lib/rcscripts/awk/
cd /etc/init.d
ln -s /sbin/depscan.sh .
ln -s /sbin/functions.sh .

emerge -O gawk

# FOLLOWING SHOULD NOT GIVE ANY ERRORS HERE. You screwed up if it did.
emerge -O portage

if ! fgrep -q "/etc/profile.env" /etc/profile ; then
echo ". /etc/profile.env" >> /etc/profile
fi

echo ""
echo "#############################################################"
echo "You are now free to enjoy portage. Make sure you tune"
echo "/etc/make.conf and other portage configuration files to take"
echo "advantage of portage. If you screwed up, its OK. Pick yourself"
echo "up and give it another go."
echo "#############################################################"
echo ""

Pour l'utiliser enregistrez le en srcipt.sh et modifier ses droits :

$ chmod +x script.sh

Un fois installer portage nous ne sommes hélas pas encore au bout du tunnel, en effet car à présent il va falloir lui mémoriser tous vos packages que vous posséder déjà, à moins que recompiler tout votre système ne vous dérange point !

Voici donc pour commencer un petit script qui à l'aide d'un fichier où l'on écrira tous les programmes installés, injectera ceux-ci dans portage :

#!/bin/bash
emerge sync
emerge -p -uD world > /tmp/world.update
for i in `cat /etc/portage/package.mask.ORG` ;
do
matching=`grep "$i" /tmp/world.update`
if [ -n "$matching" ]; then
toInject=`echo $matching|cut -d " " -f 4`;
echo "Injecting $toInject"
'emerge' inject $toInject
fi
done
echo "# #"
echo "################# UPDATES #######################"
echo "# #"
cat /tmp/world.update

Ce script fonctionne avec le fichier /etc/portage/package.mask.ORG (exemple) :

#Begin
sys-apps/baselayout
sys-fs/devfsd
sys-kernel/linux-headers
sys-libs/pwdb
sys-libs/pam
sys-libs/pam-login
gnome-base/gdm
sys-apps/kbd
sys-devel/bin86
sys-devel/binutils
net-misc/iputils
sys-apps/shadow
net-misc/dhcpcd
sys-apps/modutils
sys-libs/glibc
sys-devel/gcc
sys-libs/ncurses
sys-apps/cronbase
x11-base/opengl-update
net-mail/mailbase
net-www/epiphany
net-nds/portmap
net-fs/samba
dev-lang/python
sys-fs/e2fsprogs
#End list

Voila une fois ceci terminer vous avez votre emerge perso sur votre distrib préféré ! Cependant vous le remarquerez assez tôt, même si la plupart du temps cela fonctionnera assez bien, il arrivera que certains package soit récalcitrants, dans ce cas lisez la partie sur les erreurs ci-dessous. En général ces erreurs sont dues au fait que tous vos packages précédemment installés avant l'arrivé de portage n'ont pas été installés par celui-ci.

Les erreurs :

  • Le plus simple est de récupérer soi-même le paquets qui pose problème et de l'installer à la main. Ensuite un simple 'emerge inject'suffit.

    Exemple :

    $ emerge inject sys-apps/cronbase-1.2
  • Vérifiez bien que votre système connaît le chemin de toutes vos librairies importantes (/etc/lib.so.conf) et de vos binaires (variable PATH)

  • Il s'agit souvent aussi d'un problème de dépendance, n'hésitez pas à mettre à jour avec emerge un paquet qui était déjà présent avant l'installation de portage.

  • Éditez le script d'installation du package posant problème (dans /usr/portage/'categ'/'package'), vérifier comme vous pouvez la cohérence des paramètres avec ceux de votre système.

  • Le forum du labo-linux ! http://forum.labo-linux.org

Installation par le projet Emerde

Le projet Emerde est une adaptation de portage pour slackware qui en est à sa version 1.2.2 Beta mais le plus intéressant c'est que les développeurs de ce projet ont prévu son installation pour une distribution autre. Bref si vous préférez opter pour une cette méthode rendez-vous sur : http://emerde.freaknet.org

Par toudou Dernière modification 22/03/2007 15:40
Navigation
Actualités
25/05/2009 Install-Party Mandriva Linux 2009 Spring
30/04/2009 Sortie de Mandriva 2009 Spring
13/03/2009 Soirée Open Source - Performances Open Storage / ZFS
13/03/2009 Conférence Symfony avec Fabien Potencier
18/02/2009 Wine 1.1.15
Plus d'actualités...
Articles
22/05/2008 Première approche de Qmail
19/05/2008 Test de la distribution Elive 1.0 Gem
14/05/2008 GNUPG introduction à la cryptographie et utilisation de GnuPG
21/02/2008 GNU / Screen
03/09/2007 The Linux File System Encryption API
More articles
Tips
02/02/2009 Des favoris synchronisés
27/01/2009 OpenSUSE: Comment supprimer les icônes d'aide
23/01/2009 Beep en ligne de commande
21/01/2009 Connaître son ip public derrière un routeur
28/04/2008 Mozilla Firefox : Google Talk et Facebook Chat
More tips
Codes
09/04/2008 Chapitre 13 - Administration DNS et DHCP
09/04/2008 Chapitre 06 - Service web avec Apache
04/04/2008 Chapitre 09 - PureFTPd
04/04/2008 Chapitre 06 - Scripting Bash
01/04/2008 Chapitre 20 - Haute Disponibilité
More codes
Courses
13/09/2006 Module 3
23/02/2006 Module 2
23/02/2006 Module 1
More courses
Formation Linux

Supinfo Training Center has the first Linux Certification. The training is 13 days and allow you to pass the LPI 101 and 102.

more info
 
 
Vous êtes ici :
Articles Portage: Install multi-distribution Installation sur une distribution quelconque