Tipps für Gentoo-Linux
Inhaltsverzeichnis
Gentoo-Universal-Installation CD 2004.2 booten, dann:
ifconfig eth0 10.3.3.42
vi /etc/ssh/sshd_config (Und "PasswordAuthentication yes" und
"X11Forwarding yes" eintragen.)
/etc/init.d/sshd start
passwd
Der Rest geht dann auch Remote :-).
Mit fdisk eine Swap- und eine Root-Partition anlegen.
Evtl. dieses Layout:/dev/hda1 1 259 1958008+ 82 Linux swap
/dev/hda2 260 5168 37112040 83 Linux
mkswap -L SWAP /dev/hda1
swapon -L SWAP
mkfs.ext3 /dev/hda2
e2label /dev/hda2 ROOT
mount -L ROOT /mnt/gentoo
mkdir /mnt/gentoo/proc
# Stimmt das Datum?
date
# Wenn nicht, dann:
date 112415392005 (Format: MMDDhhmmYYYY)
cd /mnt/gentoo
# Falls das Stage3 nicht auf CD ist, dann erst noch herunterladen,
z.B.:
wget http://distfiles.gentoo.org/releases/x86/2004.2/stages/stage3-i686-2004.2.tar.bz2
# oder das 2008.0:
wget http://distfiles.gentoo.org/releases/x86/2008.0/stages/stage3-i686-2008.0.tar.bz2
# bzw. gleich von CD nehmen:
tar -xjpf /mnt/cdrom/stages/stage3-i686-2004.2.tar.bz2
mount -t proc none /mnt/gentoo/proc
tar -xjf /mnt/cdrom/snapshots/portage-20040710.tar.bz2 -C /mnt/gentoo/usr
mkdir /mnt/gentoo/usr/portage/distfiles
cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
emerge -avt vanilla-sources
cd /usr/src/linux
make menuconfigHier muss mindestens das eingestellt werden:
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Processor type and features --->
Processor family
File systems --->
<*> Reiserfs support
[*] Virtual memory file system support (former shm fs)
[*] /proc file system support
[*] /dev file system support (EXPERIMENTAL)
[*] Automatically mount at boot
[ ] /dev/pts file system for Unix98 PTYs
Dann weiter:
make dep && make bzImage modules modules_install
cp arch/i386/boot/bzImage /boot/2.4.26
cp .config /boot/.config.2.4.26
modules-update
nano /etc/fstab
Beispiel:/dev/hda2 / reiserfs defaults 0 0
/dev/hda1 none swap sw 0 0
/dev/fd0 /mnt/floppy vfat noauto,user,sync 0 0
/dev/cdroms/cdrom0 /mnt/cdrom auto noauto,user 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
none /proc/bus/usb usbfs defaults 0 0
echo mein_neuer_rechner > /etc/hostname
nano -w /etc/conf.d/net (Und iface_eth0 anpassen.)
rc-update add net.eth0 default
Den Host-Namen und Domain-Name des Rechners trägt man in
/etc/hosts ein:
1.2.3.4 myhost.sl.de myhost
Dann:
nano -w /etc/rc.conf (Und KEYMAP="de-latin1-nodeadkeys"
eintragen.)
emerge -avt grubgrub
grub> root (hd0,1)
grub> setup (hd0)
grub> quit
nano -w /boot/grub/grub.conf
default 0
timeout 8
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
title=Linux
root (hd0,1)
kernel /boot/2.4.26 root=/dev/hda2 vga=789
emerge -avt sysklogd
rc-update add sysklogd default
emerge -avt reiserfsprogs
emerge -avt vixie-cron
rc-update add vixie-cron default
rc-update add sshd default
passwd
useradd john -m
passwd john
exit
cd /
umount /mnt/gentoo/proc
umount /mnt/gentoo
reboot
Nach der Installation und dem Reboot:
In /etc/make.conf das eintragen:
SYNC="rsync://server.sl.de/portage"
Lokale Profil-Erweiterungen:
mkdir /etc/profile.d
ln -s /etc/profile.local /etc/profile.d/local.sh
SSH für den Rechner "sl" und root freischalten:
ssh sl
sl# scp ~/.ssh/id_dsa.pub NEUER_RECHNER:~/.ssh/authorized_keys
Dann meine eigenen Skripte übertragen:
sync-bin-NEUER_RECHNER
echo loescher > /ichbin
Distcc installieren:
USE="-gtk" emerge -avt distcc
Und dann in /etc/make.conf das eintragen: FEATURES="distcc"
und mit distcc-config --set-hosts ... Rechner eintragen.
In /etc/make.conf die USE-Flags anpassen, z.B.:
USE="aac -aalib -acl -crypt dga directfb divx4linux -dv fbcon -flac -fortran -gnome -ipv6 -kde -ldap mad mbox -mikmod mmx -motif -mysql network -ogg -oggvorbis ppds -python quicktime -ruby rtc v4l v4l2 -vorbis win32codecs -xmms xv xvmc xvid 3dnow 3dnowext activefilter alsa apache2 dvb mmxext sse"
SYNC="rsync://server.sl.de/portage"
Da ich in meinen neuen USE-Flags "-acl" habe:
emerge -avt coreutils
emerge unmerge attr acl
Portage auf den neuesten Stand bringen:
emerge --sync
eselect news read new | less
ggf.: emerge -avt -u portage
Wenns nicht klappt, kann das helfen:
cd /etc
rm make.profile
ln -sf /usr/portage/profiles/obsolete/x86 make.profile
emerge -avt -n '>=sys-apps/portage-2.0.51'
cd /etc/
rm make.profile
ln -s ../usr/portage/profiles/default-linux/x86/2005.1 make.profile
In /root/bin/ ein Skript backup-NEUER_RECHNER zum Backup anlegen:fdisk -l > /fdisk.txt
dd if=/dev/hda of=/hda.dd bs=512 count=1
dd if=/dev/hda2 of=/hda2.dd bs=512 count=1
rsync -avH --delete --delete-excluded --exclude /cdrom --exclude /delwatch --exclude /proc --exclude /sys --exclude /xtemp --exclude /mnt --exclude /usr/portage/distfiles / server:/mnt/disk03/backup_von_NEUER_RECHNER/
Als Root eine crontab mit crontab -e anlegen:SHELL=/bin/bash
PATH=/usr/sl:/usr/local/bin/:/bin:/usr/bin
# /tmp zu jeder vollen Stunde aufräumen
# Dauer: 1 min.
0 * * * * /usr/sl/clean-tmp
# /delwatch zu jeder halben Stunde aufräumen
# Dauer: 1 min.
30 * * * * /usr/sl/clean-delwatch
Weiterhin:
emerge -avt gentoolkit
emerge -avt vim
emerge unmerge nano
emerge unmerge linux-headers
emerge -avt linux-headers
emerge -avt vanilla-sources
emerge -avt nfs-utils
emerge -avt screen
emerge -avt netdate
emerge -avt Time-modules
emerge -avt genlop
emerge -avt app-admin/sudo
emerge -avt smartmontools
rc-update add smartd default
vi /etc/smartd.conf (und die Platten eintragen.)
/etc/init.d/smartd start
rc-update add portmap default
/etc/init.d/portmap start
emerge -avt eix
update-eix
echo "sys-libs/glibc userlocales" >> /etc/portage/package.use
/bin/echo -e "en_US/ISO-8859-1\nen_US.UTF-8/UTF-8\nde_DE/ISO-8859-1\nde_DE@euro/ISO-8859-15" > /etc/locales.build
emerge -avt lsof
emerge -avt pciutils
emerge -avt alsa-utils
rc-update add alsasound default
/etc/init.d/alsasound start
emerge -avt mmv
emerge -avt strace
emerge -avt xv
emerge -avt gnu-netcat
emerge -avt netperf
emerge -avt minicom
emerge -avt ppp
emerge -avt dhcpcd
emerge -avt ntp
Umstellung auf
udev:
emerge -avt udev hotplug coldplug
rc-update add coldplug boot
vi /etc/conf.d/rc (Und das ändern: RC_DEVICE_TARBALL="no")
Um z.B. das Nokia-Handy immer unter /dev/handy erscheinen zu lassen
braucht man das:
udevinfo -a -p /sys/block/sda
vi /etc/udev/rules.d/10-udev.rules
BUS="usb", KERNEL="sd?1", SYSFS{product}=="Nokia 6230i", NAME="handy"
Wenn man z.B. einen USB-Stick beim Einstecken automatisch mounten
will, dann legt man einfach ein Skript
/etc/dev.d/default/usbstick.dev mit diesem Inhalt an:
mount $DEVNAME /mnt/usbstick
und macht es ausführbar.
Zur Fehlersuche:
Wenn keine Gerätedateien in /dev angelegt werden, dann erst einmal
schauen, ob der Dämon /sbin/udevd läuft.
Wenn nicht, dann liegts evtl. an einem alten /dev/.devfsd das so
löschen kann:
mkdir /test
mount --bind / /test
rm /test/dev/.devfsd
Im Kernel braucht man außerdem die Option CONFIG_KOBJECT_UEVENT:
General setup --->
Kernel Userspace Events
Für Notebooks:
emerge -avt pcmcia-cs
rc-update add pcmcia default
emerge -avt apmd
oder
emerge -avt acpi acpid ibm-acpi
emerge -avt hibernate-script
emerge -avt klaptopdaemon
/etc/init.d/acpid start
rc-update add acpid default
Für einen grafischen KDE-Desktop:
In /etc/make.conf z.B. das setzen:
INPUT_DEVICES="keyboard mouse"
VIDEO_CARDS="fbdev v4l vesa vga via"
und dann:
emerge -avt xorg-x11
env-update
source /etc/profile
Xorg -configure
X -config /root/xorg.conf.new
cp /root/xorg.conf.new /etc/X11/xorg.conf
vi /etc/X11/xorg.conf
Anpassen an deutsche Tastatur:
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "de"
Option "XkbVariant" "nodeadkeys"
EndSection
bzw. wenn X11 den HAL verwendet, dann geht das in
/etc/hal/fdi/policy/german-keyboard.fdi:
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keys">
<merge key="input.xkb.layout" type="string">de</merge>
<merge key="input.xkb.variant" type="string">nodeadkeys</merge>
</match>
</device>
</deviceinfo>
Und dann natürlich noch ein: /etc/init.d/hald restart
In der Section "Screen" kann man noch die gewünschte
Standard-Farbtiefe einstellen:
DefaultDepth 24
Für automatische Abschaltung des Displays trägt man folgendes in
/etc/X11/xorg.conf ein:Section "ServerFlags"
Option "BlankTime" "5"
Option "StandbyTime" "10"
Option "SuspendTime" "20"
Option "OffTime" "30"
EndSectionund in der Screen-Section braucht man noch die Option
DPMS.
Für KDE braucht man in /etc/make.conf noch diese
USE-Flags:
kde qt4 hal
Dann:
emerge -avt kdebase-startkde
echo "kde-base/kde-i18n linguas_de" >> /etc/portage/package.use
emerge -avt kde-i18n
emerge -avt konsole
Dann noch weitere Programme, die für einen Desktop interessant sind:
emerge -avt mplayer
In /etc/conf.d/local.start die Zeile
echo 1024 > /proc/sys/dev/rtc/max-user-freq
für mplayer hinzufügen.
emerge -avt gimp
emerge -avt gqview
emerge -avt mozilla-firefox-bin
#...
echo "app-office/openoffice-bin kde linguas_de" >> /etc/portage/package.use
emerge -avt openoffice-bin
emerge -avt k3b dvd+rw-tools
Für WLAN:
Siehe: WLAN einrichten.
Boot-Zeit verkürzen: Kurz-Zusammenfassung von diesen drei
Anleitungen:
echo "sys-apps/initng ~x86" >> /etc/portage/package.keywords
emerge -avt sys-apps/initng
Beim Grub die Kerneloption init=/sbin/initng ergänzen.
Aber: InitNG läuft bei mir nicht auf Anhieb.
(Aus Zeitmangel wieder deaktiviert.)
Modul-Abhängigkeiten mit folgendem Patch nur neu berechnen, wenn
nötig:--- /etc/init.d/modules.orig 2006-04-27 17:13:07.995167896 +0200
+++ /etc/init.d/modules 2006-04-27 17:14:57.448528456 +0200
@@ -79,9 +79,14 @@
if [ -z "${CDBOOT}" ] && touch /etc/modules.conf 2> /dev/null
then
- ebegin "Calculating module dependencies"
- /sbin/modules-update
- eend $? "Failed to calculate module dependencies"
+ if [ /etc/modules.d -nt /etc/modules.conf ]
+ then
+ ebegin "Calculating module dependencies"
+ /sbin/modules-update
+ eend $? "Failed to calculate module dependencies"
+ else
+ einfo "Module dependencies are up-to-date"
+ fi
fi
local autoload=""
-
System aktualisieren (über ein 56K-Modem dauert das ca. eine
Stunde! Es geht aber auch schneller: Siehe weiter unten bei
emerge-delta-webrsync.):
emerge --sync
eselect news read new | less
Vorschau mit Frage, ob man sich sicher ist:
emerge -auvtD world
Wenn man noch ungefähr wissen will, wie lange der Spass dauern
wird, dann kann das mittels genlop abschätzen lassen:
emerge -puvtD world | genlop -p
Die Ausgaben, die während des emerge am Bildschirm durchscrollen sind nicht sonderlich interessant.
Alles Wichtige steht nochmal am Ende bzw. in /var/log/portage/elog/summary.log
-
Wenn ein neuer GCC (z.B. Major Release Update von 3.4.6 auf
4.1.1) installiert wurde, dann ist noch folgendes nötig
(Kurzform von Gentoo GCC Upgrade Guide).
Die alte GCC-Version kann man übrigens in /var/log/emerge.log nachlesen, falls man das nicht mehr weiss.
gcc-config i686-pc-linux-gnu-4.1.1
env-update && source /etc/profile
fix_libtool_files.sh 3.4.6
emerge --oneshot -av libtool
Wenn man den alten GCC entfernen will, dann sollte man vorher
alles neu bauen:
emerge -eav system
emerge -eav world
oder schneller:
revdep-rebuild --library libstdc++.so.5 -- -p -v
revdep-rebuild --library libstdc++.so.5
-
Wenn man USE-Flags geändert hat oder ein portage-Update gekommen
ist, dann sollte man mit
emerge -avt --newuse world
schauen, was alles betroffen ist und ggf. neu emergen.
Unter Umständen ist auch das ratsam:
emerge -avt --update --newuse --deep system world
-
Von Zeit zu Zeit sollte man auch prüfen, ob irgendwelche Pakete
im System sind, die gar nicht mehr benötigt werden:
emerge --pretend --depclean
Diesen Output sollte man sich gründlich durch den Kopf
gehen lassen und einzelne Pakete, die man sicher nicht mehr
braucht entfernen (emerge unmerge ...). Auf keinen Fall
einen depclean-Lauf blind loslaufen lassen!
Ich gehe so vor, wenn z.B. das Paket
media-gfx/xloadimage angeblich überflüssig ist:
equery depends media-gfx/xloadimage
quickpkg media-gfx/xloadimage
emerge --unmerge media-gfx/xloadimage
Sollte der equery Abhängigkeiten auflisten, so sollte man
sich diese genau anschauen!
Am besten macht man es so:
emerge --pretend --depclean | tee /tmp/depclean.txt
less /tmp/depclean.txt
grep / /tmp/depclean.txt | grep -v \* > /tmp/remove.txt
# u.U. /usr/portage/packages/* löschen
quickpkg $(cat /tmp/remove.txt)
emerge --depclean
-
Abhängigkeiten bzw. Konsistenz prüfen:
revdep-rebuild -p -v
-
Dann müssen evtl. nach einem emerge noch Konfigurations-Dateien
aktualisiert werden. Das geht mit
etc-update
oder
dispatch-conf
-
Was sollte man nach dem Update alles Testen?
- Alle Services: rc-status
- Apache
- Drucken / CUPS (http://localhost:631/
- Firefox
- VNC
- mgetty (Faxempfang)
- Subversion
- Samba-Freigaben
- OpenVPN
- Cronjobs
- VDR als User "tv"
- ntpq -p
- POP3
- Mail versenden
-
Wenn alles bestens funktioniert, dann sollte man sich diesen
Portage-Snapshot noch sichern.
Wer weiss, wofür man das mal brauchen kann.
Z.B. um einen anderen Rechner auch exakt auf diesen Stand zu
bringen...
Siehe dazu unten: Portage-Snapshot erstellen
-
Um ein "fremdes" Gentoo aktuell zu halten, von dem man nur ein
Backup hat, verwendet man ein chroot analog zur
Erstinstallation. Beispiel:
cd /mnt/disk03
export UMGEBUNG=fremd
/bin/cp -a $UMGEBUNG ${UMGEBUNG}_live
cd ${UMGEBUNG}_live
md -p proc tmp usr/portage/distfiles
mount -t proc none proc
chroot . /bin/bash
env-update
source /etc/profile
PROMPT_COMMAND='PS1="$UMGEBUNG:`pwd -P` # "'
In /etc/make.conf für Portage auf eigenen Server verweisen:
SYNC="rsync://server.sl.de/portage"
GENTOO_MIRRORS="server.sl.de"
(Natürlich muss auf server.sl.de ein Webserver laufen, der
/distfiles ausliefert.)
Dann ganz normal updaten...
-
Wenn man ein ganz altes Gentoo (20.3.2007) auf einen aktuellen
Stand bringen will (12.11.2010), dann sind ein paar mehr
Schritte und Zwischen-Updates nötig:
vi /etc/make.conf
# das rein:
# ACCEPT_LICENSE="*"
# PORTAGE_NICENESS=20
# MAKEOPTS="-j8"
cd /xtemp
tar jxf portage-20071122.tar.bz2
chown -R 0:0 portage
cd portage
rsync -av --progress --stats --delete --delete-after --exclude='/distfiles' --exclude='/packages' --exclude='/local' . /usr/portage
cd ..
/bin/rm -rf portage portage-20071122.tar.bz2
emerge --metadata
cd /etc
rm make.profile
ln -s /usr/portage/profiles/default-linux/x86/2007.0/desktop make.profile
emerge -auvt python
emerge -auvt portage
vi /etc/locale.gen
rm /etc/locales.build
emerge -auvt system
rc-update del coldplug
rm -f /etc/init.d/coldplug
hash -r
cd /xtemp
tar jxf portage-20090204.tar.bz2
chown -R 0:0 portage
cd portage
rsync -av --progress --stats --delete --delete-after --exclude='/distfiles' --exclude='/packages' --exclude='/local' . /usr/portage
cd ..
/bin/rm -rf portage portage-20090204.tar.bz2
emerge --metadata
cd /etc
rm make.profile
ln -s /usr/portage/profiles/default/linux/x86/2008.0/desktop make.profile
emerge --unmerge sys-apps/util-linux sys-apps/mktemp
emerge -auvt portage
/usr/sbin/python-updater
emerge -auvt system
cd /xtemp
tar jxf portage-20101112.tar.bz2
chown -R 0:0 portage
cd portage
rsync -av --progress --stats --delete --delete-after --exclude='/distfiles' --exclude='/packages' --exclude='/local' . /usr/portage
cd ..
/bin/rm -rf portage
emerge --metadata
cd /etc
rm make.profile
ln -s /usr/portage/profiles/default/linux/x86/10.0/desktop make.profile
emerge --unmerge app-admin/eselect-news
emerge --unmerge app-arch/xz-utils app-arch/lzma-utils
emerge -auvt portage
emerge -auvt system
# Wenn das mit dem Circular-Fehler zwischen glibc und gcc abbricht, dann:
emerge -avt =sys-libs/glibc-2.8_p20080602-r1
# sollte es bei glibc abbrechen, dann:
gcc-config i686-pc-linux-gnu-4.4.4
# dann nochmal:
emerge -auvt system
emerge -avt lafilefixer
lafilefixer --justfixit
perl-cleaner --all
/usr/sbin/python-updater
find -L /etc/ssl/certs/ -type l -exec rm {} +
chmod +x /etc/portage/postsync.d/q-reinitialize
rm /etc/cron.daily/makewhatis.cron
revdep-rebuild -p -v
rm '/lib/libhistory.so.4'
rm '/lib/libreadline.so.4'
rm '/usr/lib/libcrypto.so.0.9.6'
rm '/usr/lib/libcrypto.so.0.9.7'
rm '/usr/lib/libssl.so.0.9.6'
rm '/usr/lib/libssl.so.0.9.7'
rm '/usr/lib/libltdl.so.3'
rm '/usr/lib/libltdl.so.3'
rm '/lib/libhistory.so.4'
rm '/lib/libhistory.so.5'
rm '/lib/libreadline.so.4'
rm '/lib/libreadline.so.5'
revdep-rebuild -p -v
emerge --unmerge python-fchksum
emerge --unmerge qt
emerge --unmerge kde-base/arts
emerge --unmerge cairo
emerge --unmerge libpciaccess xorg-server
emerge --unmerge lirc
emerge --unmerge app-portage/genflags sys-fs/reiserfsprogs
mv /etc/modules.d/alsa /etc/modprobe.d/alsa.conf
# im Kernel CONFIG_AUDITSYSCALL setzen
emerge -auvtD world
emerge -avt --newuse world
emerge --pretend --depclean | tee /tmp/depclean.txt
less /tmp/depclean.txt
grep / /tmp/depclean.txt | grep -v \* > /tmp/remove.txt
# u.U. /usr/portage/packages/* löschen
quickpkg $(cat /tmp/remove.txt)
emerge --depclean
emerge --pretend --depclean
revdep-rebuild -p -v
/usr/sbin/libpng-1.4.x-update.sh
rm '/usr/lib/libpng12.so.0'
rm '/usr/lib/libcrypto.so.0.9.8'
rm '/usr/lib/libssl.so.0.9.8'
lsof / | egrep 'DEL.*libpam.so'
chmod -x /var/log/tallylog
find -L /etc/ssl/certs/ -type l -exec rm {} +
revdep-rebuild -p -v
emerge -avt1 libtool
emerge -avt imagemagick
ACCEPT_KEYWORDS=~x86 emerge -avt lirc
# Fertig!
-
Mögliche Fehler:
-
Sollte man beim Portage-Update auf einen Fehler der Art
raise cache_errors.CacheCorruption(cpv, e)
laufen, dann hilft:
rm -rf /var/cache/edb/dep/
emerge --metadata
(Siehe auch Topic 466613 im Forum)
-
Fehler:
g++: /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.3/../../../crti.o:
No such file or directory
Lösung:
emerge libtool && fix_libtool_files.sh 3.3.3
-
Fehler:
[blocks B ] <dev-lang/python-2.3.6-r2 (is blocking app-admin/python-updater-0.2)
Lösung wäre normalerweise, alle alten pythons zu
deinstallieren. Welche das sind, kann man z.B. so sehen:
emerge -pC python
Wenn aber nur diese eine als Blocker drauf ist, dann hilft
nur das:
quickpkg =dev-lang/python-2.3.5
emerge --nodeps -avt =dev-lang/python-2.4.4-r5
emerge -aC =dev-lang/python-2.3.5
emerge -avt python-updater
emerge -avt portage
-
Beim Portage-Update kann es zu diesem Fehler kommen:
# emerge -avt portage
Traceback (most recent call last):
File "/usr/bin/emerge", line 4049, in ?
emerge_main()
File "/usr/bin/emerge", line 3768, in emerge_main
settings, trees, mtimedb = load_emerge_config()
File "/usr/bin/emerge", line 3679, in load_emerge_config
trees = portage.create_trees(trees=trees, **kwargs)
File "/usr/lib/portage/pym/portage.py", line 6780, in create_trees
config_incrementals=portage_const.INCREMENTALS)
File "/usr/lib/portage/pym/portage.py", line 902, in __init__
addProfile(os.path.realpath(self.profile_path))
File "/usr/lib/portage/pym/portage.py", line 889, in addProfile
raise portage_exception.ParseError(
NameError: global name 'parents_file' is not defined
Lösung:
cd /etc
rm /etc/make.profile
ARCH="x86" ACCEPT_KEYWORDS="x86" emerge portage --nodeps
ln -sf ../usr/portage/profiles/default/linux/x86/2008.0/desktop make.profile
emerge -avt portage
-
Fehler:
... cannot find -lpng12
dann:
/usr/sbin/libpng-1.4.x-update.sh
-
Vor allen gravierenden Änderungen empfiehlt es sich die
betroffenen Pakete mit quickpkg einzupacken. Diese
befinden sich dann in /usr/portage/packages/ und können
bei Bedarf mit emerge -k ... installiert werden.
Alle installierten Pakete kann man so einpacken:
quickpkg @world
-
Auf einem Athlon ein Paket für einen Pentium bauen (Es müssen
die USE-Flags, die Compiler und der CHOST auf beiden Rechnern
gleich sein!):
md -p /tmp/pentium3
CFLAGS="-O2 -march=pentium3 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}" PKGDIR=/tmp/pentium3 emerge --buildpkgonly
hdparm
Und dann installieren:
PKGDIR=/tmp/pentium3 emerge -k hdparm
-
Wenn sich allerdings der CHOST unterscheidet, dann ist etwas
mehr nötig:
Für einen Compile-Server in voller Schönheit, der Programme für
die i586-Architektur (z.B. AMD K6) erzeugen kann, wäre nach dem
CROSS-COMPILE-HOWTO
das hier als Vorbereitung nötig:
emerge -avt crossdev
mkdir -p /usr/local/portage
in /etc/make.conf:
PORTDIR_OVERLAY="/usr/local/portage"
crossdev --target i586-pc-linux-gnu
Entweder man verwendet die von crossdev vorgeschlagenen
Versionsnummer oder aber mindestens diese:
linux26-headers-2.6.8.1-r1
gcc-3.4.3-r1
binutils-2.15.94.0.1
glibc-2.3.4.20041102
Aber um nur einen Athlon XP (i686) Programme für eine AMD K6
(i586) bauen zu lassen, reicht folgendes völlig aus:
crossdev --stage0 --kernel 2.6.8.1-r2 --libc 2.3.4.20041102-r1 --target i586-pc-linux-gnu
Dann kann der Athlon für den K6 Pakete bauen:
CHOST="i586-pc-linux-gnu" CFLAGS="-O2 -march=k6 -pipe -fomit-frame-pointer" CXXFLAGS="${CFLAGS}" PKGDIR=/tmp/k6 emerge --buildpkgonly hdparm
-
Sicherheits-Updates prüfen:
glsa-check -t all
glsa-check -d 200410-22
-
Aufsetzen eines eigenen Mirrors ist sinnvoll, wenn man
mehr als einen Gentoo-Rechner hat. Dazu muß man nur einen
rsyncd mittels /etc/rsync/rsyncd.conf
konfigurieren:
pid file = /var/run/rsyncd.pid
max connections = 5
use chroot = yes
uid = nobody
gid = nobody
# Optional: restrict access to your Gentoo boxes
hosts allow = 192.168.0.1 192.168.0.2 192.168.1.0/24
hosts deny = *
[portage]
path=/usr/portage
comment=Gentoo Portage
exclude=distfiles/ packages/
Dann rsyncd starten:
/etc/init.d/rsyncd start
rc-update add rsyncd default
Dann erster Test vom Client:
rsync 192.168.0.1::
rsync your_server_name::portage
Und das muß man in /etc/make.conf auf dem Client
eintragen:
SYNC="rsync://your_server_name/portage"
-
Details zu installierten Paketen findet man in
/var/db/pkg/sys-libs/
-
Um CPAN-Perl-Module zu installieren braucht man:
emerge -avt app-portage/g-cpan
Beispiel:
g-cpan.pl Lingua::EN::Squeeze
-
In /etc/make.conf sollte man CHOST nie
ändern!
Ok, nun für die, die es nicht lassen können:
Wenn man CHOST ändert, dann sollte man mindestens folgende
Pakete neu emergen:
emerge -avt gcc
emerge -avt python
und am besten auch gleich noch:
emerge --oneshot perl binutils libtool man ed net-tools cracklib iputils devfsd gcc-config
Die ganz Paranoiden können auch ein emerge --emptytree system
oder emerge --emptytree world laufen lassen.
-
Für optimate Performance sollte man die CFLAGS ändern.
Hier gibt es Beispiele. Und
hier sind Erklärungen dazu
und
bereits
ausgetestete CFLAGS.
Mit den Tools aus dem Paket genflags kann man sich
seine optimalen CFLAGS anzeigen lassen:
emerge -avt genflags
info2flags
für optimale Flags oder für weniger Optimierung, aber mehr
Stabilität:
info2flags -C
-
Details zu Kompilierungszeiten und wann welches Paket
installiert wurde findet man in
/var/log/emerge.log
Eine wunderschöne Anzeige dieser Daten biete genlop
(Evtl. erst noch installieren: emerge -avt genlop)
Beispiel:
genlop -s -t -u openssh
-
Welche Pakete brauchen mysql?
equery depends mysql
-
Weitere Infos zu Paketen kann man mit equery
abfragen:
equery depends glibc zeigt welche Pakete von glibc
abhängen
equery depgraph perl zeigt den gesamten Depency-Tree
für perl
equery hasuse kde zeigt alle Pakete die mit kde als
USE-Flag kompiliert wurden
equery size xorg-x11 zeigt die Gesamtgrösse des Pakets
xorg-x11
equery uses xorg-x11 listet die USE-Flags mit denen das
Paket installiert wurde
equery which xorg-x11 liefert den Pfad zum Ebuild zurück
Oder mit etcat:
etcat -v xorg-x11 zeigt alle Versionen im Portage
(masked, installed, undef)
-
Für Portage-Daten-Abfrage sind auch die Programme aus
portage-utils ganz nützlich, wie z.B. qlist.
-
Die etwas langsame Suche mittels emerge -s ... läßt
sich mit dem Tool esearch wesentlich beschleunigen.
Oder noch besser mit eix.
-
Nach einem Update von GCC sollte man die libtool-Files
korrigieren lassen, also z.B. bei einen Update von 3.3.4 auf
3.3.5:
fix_libtool_files.sh 3.3.4
-
Konfiguration für ein deutsches Gentoo nach
dieser Anleitung in Kurzform:
Zeitzone:
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
Einträge in /etc/rc.conf:
CLOCK="UTC"
KEYMAP="de-latin1-nodeadkeys"
Glibc in Zukunft nur mit wirklich benötigten Locales bauen:
echo "sys-libs/glibc userlocales" >>
/etc/portage/package.use
und anpassen von /etc/locales.build:
en_US/ISO-8859-1
en_US.UTF-8/UTF-8
de_DE/ISO-8859-1
de_DE@euro/ISO-8859-15
Man sollte auch /etc/locale.gen anpassen!
Das beschleunigt nicht nur den emerge der glibc, sondern spart
auch eine Menge Platz: Statt 200 MB werden nur noch 30 MB
benötigt.
Dann stellt man das System noch mit folgendem Eintrag in
/etc/env.d/02locale auf Deutsch um:
LC_CTYPE=de_DE@euro
Alternativ kann das auch ein einzelner Benutzer in
~/.bashrc eintragen:
export LANG="de_DE@euro"
X11 (in /etc/X11/xorg.conf):
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "de"
Option "XkbVariant" "nodeadkeys"
EndSection
OpenOffice:
echo "app-office/openoffice linguas_de" >> /etc/portage/package.use
emerge -avt openoffice
KDE:
echo "kde-base/kde-i18n linguas_de" >> /etc/portage/package.use
emerge -avt kde-i18n
-
Wenn man nicht immer ganze Pakete, sondern lieber nur Patches
bzw. Diffs übertragen will (für langsame Modem-Verbindungen),
dann sollte man sich mal das
deltup
anschauen.
Hier ist auch eine Diskussion zu deltup.
Das Notwendigste füt Gentoo aus
diesem
kurzen HOWOTO habe ich hier zusammengefasst:
echo "app-portage/deltup ~x86" >> /etc/portage/package.keywords
echo "dev-util/bdelta ~x86" >> /etc/portage/package.keywords
echo "app-portage/getdelta ~x86" >> /etc/portage/package.keywords
echo "app-portage/xdelta ~x86" >> /etc/portage/package.keywords
emerge -avt getdelta xdelta
In /etc/make.conf muß man diese Zeile eintragen:
FETCHCOMMAND="/usr/bin/getdelta.sh \${URI}"
Und ab sofort werden - wenn verfügbar - nur noch Delta-Files
übertragen. So kann man z.B. bei einem Upgrade von Firefox 1.0.4
auf 1.0.6 ca. 98% Übertragungs-Kapazität und -Zeit sparen!
Noch mehr Zeit kann man sparen, wenn zusätzlich noch den "emerge
--sync" durch die Delta-Version ersetzt. Dazu einfach:
emerge -avt emerge-delta-webrsync
Und dann statt "emerge --sync" nur noch:
emerge-delta-webrsync
Das dauert dann statt 4-5 Stunden nur noch 15 Minuten.
-
Wiederholte Kompilierungs-Läufe kann man durch einen
Compile-Cache deutlich beschleunigen:
emerge -avt ccache
ccache -M 5G
-
Wenn man nur ein *.ebuild-File hat, dann muß man noch
das Manifest erstellen lassen:
ebuild xorg-x11-6.7.0-r3.ebuild digest
-
Bei Problemen mit falschen Abhängigkeiten kann das hilfreich
sein:
emerge --metadata
emerge --regen
-
Um DOS-Filesysteme anlegen zu können braucht man noch das:
emerge -avt dosfstools
Ein VFAT-Filesystem kann man dann so auf einer 1.3 GB MO
anlegen:
mkfs.vfat -v -I -S 2048 /dev/sda
-
Wenn man einen Windows-Proxy für Internet-Zugriff mit Authentifizierung
verwenden muss, dann gehört Folgendes in die
/etc/make.conf:
FETCHCOMMAND="wget --proxy-user='deine_windows_domaene\\dein_benutzername' --proxy-passwd=dein_passwort -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
Man beachte die Anführungszeichen und den \\, da sonst der \
verschluckt wird.
-
Wenn man einen Portage-Snapshot (die findet man in
http://distfiles.gentoo.org/snapshots/, .z.B. http://distfiles.gentoo.org/snapshots/portage-20061110.tar.bz2) selbst einspielen will, dann so:
cd /xtemp
export MYFILE=portage-20060517.tar.bz2
wget --proxy=off http://distfiles.gentoo.org/snapshots/$MYFILE
tar jxf $MYFILE
chown -R 0:0 portage
cd portage
rsync -av --progress --stats --delete --delete-after --exclude='/distfiles' --exclude='/packages' --exclude='/local' . /usr/portage
cd ..
/bin/rm -rf portage $MYFILE
emerge --metadata
-
Wenn man in einen emerge-Vorgang selbst eingreifen will, z.B. um
etwas am Makefile zu ändern, dann so:
ebuild /usr/portage/net-wireless/zd1211/zd1211-20060109.ebuild fetch
ebuild /usr/portage/net-wireless/zd1211/zd1211-20060109.ebuild unpack
# Makefile verändern...
ebuild /usr/portage/net-wireless/zd1211/zd1211-20060109.ebuild compile
ebuild /usr/portage/net-wireless/zd1211/zd1211-20060109.ebuild install
ebuild /usr/portage/net-wireless/zd1211/zd1211-20060109.ebuild qmerge
ebuild /usr/portage/net-wireless/zd1211/zd1211-20060109.ebuild clean
-
So kann man sich selbst einen Portage-Snapshot erstellen:
PORTAGE_DIR="$(/usr/lib/portage/bin/portageq portdir)"
ACT_DATE="$(/bin/date --file $PORTAGE_DIR/metadata/timestamp +"%Y%m%d")"
SNAPSHOT_DIR="/xtemp/portage-snapshots"
EXCLUDE_LIST="/tmp/exclude_list.txt"
export PATH=/usr/bin:/bin:/sbin:/usr/sbin
mkdir -p $SNAPSHOT_DIR
cd ${PORTAGE_DIR}
cd ..
find portage/distfiles portage/packages > ${EXCLUDE_LIST}
tar -X ${EXCLUDE_LIST} -cpjf ${SNAPSHOT_DIR}/portage-${ACT_DATE}.tar.bz2 portage
-
Java installieren:
Es muss das Flag nsplugin gesetzt sein!
Ich habe die beste Erfahrung mit dev-java/sun-jre-bin
gemacht.
emerge -avt virtual/jre
emerge -avt dev-java/sun-jre-bin
java-config --list-available-vms
java-config --set-system-vm icedtea6-bin
eselect java-nsplugin list
eselect java-nsplugin set icedtea6-bin
Kontrolle im Firefox: about:plugins
-
Virenscanner:
emerge -avt clamav
freshclam
clamscan -ri /verzeichnis