Tipps für Gentoo-Linux
Inhaltsverzeichnis
Warum Gentoo-Linux?
Vorteile:
Allerdings sollte man die Nachteile auch nicht verschweigen:
-
Gerade auf älteren Rechnern kann das Kompilieren der Software
schon sehr lange dauern.
Das kann man aber etwas entschärfen, wenn man sich selbst einen
BINHOST aufsetzt, siehe unten...
-
Es es kommt öfter mal zu nur sehr schwer auflösbaren
Abhängigkeiten unter den ebuilds, welche ein update nicht gerade
zu einem Spaß machen.
Wer gar nicht selbst kompilieren will, der kann auch
Sabayon Linux nutzen, welches aber meines
Erachtens den Nachteil hat, auf Gentoo Testing aufzusetzen und damit
nicht ganz so stabil ist wie Gentoo. Außerdem hat es anscheinend
deutlich weniger Nutzer und damit eine kleiner Community mit weniger
Support und Pflege.
Eine andere sehr interessante Alternative wäre
Arch Linux oder einer
seiner Ableger, wie
Apricity OS.
Zusammenfassung aus:
Gentoo-Minimal-Installation CD z.B.
install-x86-minimal-20141202.iso
oder was neueres booten.
Alternativ kann man das ISO-Image auch auf einen USB-Stick schreiben
und von diesem booten:
dd if=install-x86-minimal-20160105.iso of=/dev/sdz bs=4M
Dann im Live Gentoo:
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
/etc/init.d/sshd start
passwd
Und wenn man eine passende
/etc/wpa_supplicant/wpa_supplicant.conf
anlegt, dann funktioniert die Installation sogar über WLAN.
Der Rest geht dann auch Remote per ssh. :-)
Mit fdisk die Partitionen für Boot, Swap und LVM
anlegen.
Man kann auch zwei gleich große Platten nehmen und diese zu einem
RAID1 verbinden:
Auf beiden Platten die Partitionen anlegen, allerdings mit dem Typ "fd"
für RAID Autodetect. Also z.B. so:Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G fd Linux raid autodetect
/dev/sdb2 2099200 85985279 83886080 40G fd Linux raid autodetect
/dev/sdb3 85985280 234441647 148456368 70.8G fd Linux raid autodetect
Dann die einzelnen Partitionen zu je einem RAID verbinden:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3
Dann im folgenden statt der sdXX Geräte die mdX Geräte verwenden...
Um später zwischen zwei Linuxen umschalten zu können verwende ich
zwei Boot-Partitionen.
Größen: Boot mit 300MB, Swap so groß wie der Hauptspeicher, um
Suspend-to-Disk nutzen zu können.
Evtl. dieses Layout: Device Boot Start End Blocks Id System
/dev/sda1 2048 411647 204800 83 Linux
/dev/sda2 411648 821247 204800 83 Linux
/dev/sda3 821248 9209855 4194304 82 Linux swap / Solaris
/dev/sda4 9209856 312581807 151685976 8e Linux LVM
mkswap -L SWAP /dev/sda3
swapon -L SWAP
pvcreate /dev/sda4
vgcreate rootvg /dev/sda4
lvcreate -L 50G -n root1lv rootvg
mkfs.ext4 /dev/rootvg/root1lv
e2label /dev/rootvg/root1lv ROOT1
tune2fs -c 0 /dev/rootvg/root1lv
tune2fs -i 400d /dev/rootvg/root1lv
mkdir /mnt/gentoo
mount -L ROOT1 /mnt/gentoo
mkdir /mnt/gentoo/boot
mkfs.ext3 /dev/sda1
mount /dev/sda1 /mnt/gentoo/boot
# Stimmt das Datum?
date
# Wenn nicht, dann:
ntpdate server
# oder:
date 112415392005 (Format: MMDDhhmmYYYY)
cd /mnt/gentoo
# Stage3 herunterladen:
wget http://distfiles.gentoo.org/releases/x86/autobuilds/$(curl -s http://distfiles.gentoo.org/releases/x86/autobuilds/latest-stage3-i686.txt | tail -1 | awk '{print $1}')
# bzw. Stage3 für amd64:
wget http://distfiles.gentoo.org/releases/amd64/autobuilds/$(curl -s http://distfiles.gentoo.org/releases/amd64/autobuilds/latest-stage3-amd64.txt | tail -1 | awk '{print $1}')
tar xvJpf stage3-*.tar.xz
rm stage3-*.tar.xz
Um sich nicht gleich bei der Erstinstallation einen Kernel bauen
zu müssen, kann man auch den Kernel des Live-Systems kopieren:
cd /mnt/cdrom/isolinux
cp gentoo /mnt/gentoo/boot/kernel-genkernel-x86-$(uname -r)
cp gentoo.igz /mnt/gentoo/boot/initramfs-genkernel-x86-$(uname -r)
cp System-gentoo.map /mnt/gentoo/boot/System.map-genkernel-x86-$(uname -r)
cd /lib
rsync -av modules /mnt/gentoo/lib/
# bzw. für amd64:
cp gentoo /mnt/gentoo/boot/kernel-genkernel-x86_64-x86-$(uname -r)
cp gentoo.igz /mnt/gentoo/boot/initramfs-genkernel-x86_64-x86-$(uname -r)
cp System-gentoo.map /mnt/gentoo/boot/System.map-genkernel-x86_64-x86-$(uname -r)
cd /lib
rsync -av modules /mnt/gentoo/lib/
Dann weiter:
mount -t proc proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
cp -L /etc/resolv.conf /mnt/gentoo/etc/
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
mkdir /usr/portage
nano /etc/portage/make.conf
# und das eintragen, um den eigenen BINHOST zu nutzen:
#####################################
#USE="bindist"
MAKEOPTS="-j8"
FEATURES="getbinpkg"
PORTAGE_BINHOST="rsync://server.sl.de/packages"
PORTAGE_NICENESS=20
QUICKPKG_DEFAULT_OPTS='--include-config=n --include-unmodified-config=y'
ACCEPT_LICENSE="*"
LINGUAS="en en_US de"
L10N="en en-US de"
LIRC_DEVICES="hauppauge"
VIDEO_CARDS="dummy fbdev v4l vesa vga via cle266 i810 intel mach64 r128 radeon"
INPUT_DEVICES="evdev keyboard mouse synaptics"
source /var/lib/layman/make.conf
APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon
authn_dbd authn_dbm authn_default authn_file authz_dbm
authz_default authz_groupfile authz_host authz_owner authz_user
autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env
expires ext_filter file_cache filter headers ident imagemap
include info log_config logio mem_cache mime mime_magic
negotiation proxy proxy_ajp proxy_balancer proxy_connect
proxy_http rewrite setenvif so speling status unique_id userdir
usertrack vhost_alias slotmem_shm"
USE="-aalib -arts -fbcon -flac -fortran -gnome -gpm -kerberos -ldap
-mikmod -motif -mysql -ogg -oggvorbis -ruby -theora -vorbis X a51
aac acl acpi activefilter alsa apache2 bindist cups dbus dga directfb
divx4linux dts dvb dvd dvdread embedded encode hal jpeg kde
kpathsea linguas_de lirc mad mbox mmap network nptl nptlonly
nsplugin opengl ppds pulseaudio qt3support qt4 quicktime rtc threads usb v4l v4l2 v5l vaapi win32codecs xv xvid xvmc"
#####################################
### wozu?: emerge-webrsync
nano /etc/portage/repos.conf
### und das eintragen:
#####################################
[gentoo]
sync-type = rsync
sync-uri = rsync://server.sl.de/portage
#####################################
emerge --sync
scp server:/xtemp/binhost/etc/portage/package.use /etc/portage/package.use/BINHOST
scp server:/xtemp/binhost/etc/portage/package.accept_keywords /etc/portage/
emerge -auvt portage
eselect news list
eselect news read
eselect profile list
eselect profile set XXX
# Nach einer Profil-Änderung ist dringend das zu empfehlen:
emerge -avt --newuse --deep @world
cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
echo "Europe/Berlin" > /etc/timezone
emerge --config sys-libs/timezone-data
nano -w /etc/locale.gen
en_US ISO-8859-1
en_US.UTF-8 UTF-8
de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
echo locale.gen >> /etc/CHANGED-FILES
locale-gen
locale -a
eselect locale list
eselect locale set 9
env-update && source /etc/profile
export PS1="(chroot) $PS1"
Zum Kernel siehe auch:
Kernel/Overview, kurz:
emerge -avt gentoo-sources genkernel
emerge -avt sys-kernel/linux-firmware
genkernel --lvm --mdadm --disklabel --no-mountboot --no-zfs --no-btrfs --virtio --makeopts=-j4 all
Wenn man genkernel unterbrechen muss, dann kann man es mit den
Optionen --no-clean --no-mrproper später fortsetzen.
nano /etc/fstab
Beispiel:LABEL=BOOT /boot ext3 noatime 0 2
LABEL=ROOT / ext4 noatime 0 1
LABEL=SWAP none swap sw 0 0
echo fstab >> /etc/CHANGED-FILES
nano /etc/conf.d/hostname
echo hostname >> /etc/conf.d/CHANGED-FILES
nano -w /etc/conf.d/net
# Hinweis: DHCP ist default, wenn /etc/conf.d/net leer ist oder fehlt!
# Und anpassen, z.B.:
dns_domain="sl.de"
dns_servers="192.168.178.1"
config_enp0s6="192.168.178.207 broadcast 192.168.178.255 netmask 255.255.255.0"
routes_enp0s6="default via 192.168.178.1"
# für Wake-On-LAN:
ethtool_change_enp0s6="wol g"
ifdown_enp0s6="NO"
# Dann:
echo net >> /etc/conf.d/CHANGED-FILES
cd /etc/init.d/
ln -s net.lo net.enp0s6
rc-update add net.enp0s6 default
Den Host-Namen und Domain-Name des Rechners trägt man in
/etc/hosts ein:
1.2.3.4 myhost.sl.de myhost
# und noch vermerken:
echo hosts >> /etc/CHANGED-FILES
Zur Frage "Warum heisst mein eth0 nicht mehr eth0?" gibt der Artikel
udev - Predictable Network Interface Names Auskunft.
Dann:
# Wenn man MD/RAID einsetzt:
emerge -avt sys-fs/mdadm
emerge -avt dhcpcd
passwd
nano -w /etc/conf.d/keymaps (Und keymap="de-latin1-nodeadkeys"
eintragen.)
echo keymaps >> /etc/conf.d/CHANGED-FILES
nano -w /etc/conf.d/hwclock
echo hwclock >> /etc/conf.d/CHANGED-FILES
emerge -avt grub
grub-install /dev/sda
(Wenn man /boot als RAID1 gebaut hat, dann noch: grub-install /dev/sdb)
nano /etc/default/grub
# Das eintragen:
GRUB_GFXMODE="1024x768"
GRUB_GXFPAYLOAD_LINUX="1024x768x16,1024x768"
GRUB_CMDLINE_LINUX="dolvm domdadm"
echo grub >> /etc/default/CHANGED-FILES
grub-mkconfig -o /boot/grub/grub.cfg
less /boot/grub/grub.cfg
emerge -avt sysklogd logrotate
rc-update add sysklogd default
emerge -avt sys-process/cronie
rc-update add cronie default
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo sshd_config >> /etc/ssh/CHANGED-FILES
rc-update add sshd default
emerge -avt sys-fs/lvm2
rc-update add lvm boot
emerge -avt net-misc/ntp
rc-update add ntp-client default
rc-update add ntpd default
emerge -avt sys-apps/ethtool
Wake-On-LAN aktivieren, indem man in
/etc/local.d/wakeonlan.start das einträgt:
#!/bin/bash
ethtool -s enp0s6 wol g
echo -n PCI0 > /proc/acpi/wakeup
bzw. anstatt des letzten Befehls kann man auch im BIOS-Setup die
Option aktivieren, dass ein PCI Gerät das System wecken kann.
Sollte Wake-On-LAN plötzlich nicht mehr funktionieren, kann es daran
liegen, dass die CR2032 BIOS Puffer-Batterie leer ist. Dann vergisst
das BIOS auch die Wake-Einstellungen.
Dann noch:
chmod 755 /etc/local.d/wakeonlan.start
Grundlagen zum Wake-on-LAN findet man in
c't 1/2011 S. 150
Aufwecken kann man den Rechner dann so:
wakeonlan 00:0e:2e:a7:9b:47
Dann weiter:
useradd loescher -m -c 'Stephan Loescher' -u 500
passwd loescher
exit
cd /
umount /mnt/gentoo/boot
umount /mnt/gentoo/proc
umount /mnt/gentoo
reboot
Bis zu dieser Stelle belegt das Gentoo nur knapp 3 GB Plattenplatz!
(Inklusive der Kernel-Sourcen und Build-Objects sind es allerdings
knapp 8GB.)
Mailing nach dieser Anleitung
konfigurieren.
Dann noch zusätzliche Software nach Bedarf:
emerge -avt app-portage/cpuid2cpuflags
cpuid2cpuflags
# Und in /etc/portage/make.conf eintragen, z.B.:
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
emerge -avt app-editors/vim
emerge -avC nano
echo "colorscheme elflord" >> ~/.vimrc
echo .vimrc >> CHANGED-FILES
emerge -avt app-shells/bash-completion
emerge -avt net-mail/fetchmail
emerge -avt net-analyzer/gnu-netcat
emerge -avt net-analyzer/netperf
emerge -avt dev-perl/Time-ParseDate
emerge -avt sys-apps/smartmontools
emerge -avt dev-util/strace
emerge -avt app-misc/mmv
emerge -avt sys-power/cpufrequtils
# oder:
emerge -avt sys-power/cpupower
emerge -avt sys-power/acpid
emerge -avt sys-apps/ethtool
emerge -avt app-misc/screen
emerge -avt alsa-utils
emerge -avt sys-apps/dmidecode
emerge -avt sys-apps/usbutils
emerge -avt dev-vcs/subversion
rc-update add alsasound boot
/etc/init.d/alsasound start
rc-update add smartd default
vi /etc/smartd.conf (und die Platten eintragen.)
# /dev/sda -a -m root -M test
# wenn OK, dann kann man das -M test wieder entfernen
echo smartd.conf >> /etc/CHANGED-FILES
/etc/init.d/smartd start
/etc/init.d/cpupower start
rc-update add cpupower default
/etc/init.d/acpid start
rc-update add acpid default
emerge -avt app-portage/gentoolkit
emerge -avt net-misc/netdate
emerge -avt app-portage/genlop
emerge -avt app-admin/sudo
emerge -avt sys-process/lsof
emerge -avt sys-apps/pciutils
emerge -avt net-dialup/minicom
emerge -avt app-portage/eix
eix-update
emerge -avt net-fs/nfs-utils
rc-update add rpc.statd default
emerge -avt app-admin/logsentry
vi /etc/cron.hourly/logsentry.cron
emerge -avt app-forensics/chkrootkit
vi /etc/cron.weekly/chkrootkit
echo world >> /var/lib/portage/CHANGED-FILES
Microcode-Updates, siehe:
Gentoo-Wiki:
Intel Microcode
echo 'sys-firmware/intel-microcode initramfs' >> /etc/portage/package.use/server
emerge -avt sys-apps/iucode_tool sys-firmware/intel-microcode
Zum Thema Strom sparen bzgl. CPU siehe:
CPU Frequency Scaling
Power Management Processor
Für einen Desktop allgemein:
# passende X11-Video-Treiber aussuchen:
eix x11-drivers/xf86-video- | less
Dann diese in /etc/portage/make.conf in VIDEO_CARDS
eintragen also z.B. "intel" und dann:
emerge -avt x11-base/xorg-server
Dann sucht man sich einen Window-Manager oder Desktop-Environment
nach Vorlieben oder Ressourcen-Verbrauch aus (siehe
A Memory Comparison of Light Linux Desktops)
KDE
oder installiert einfach KDE (siehe auch Beschreibung der einzelnen Meta-Pakete):
emerge -avt kdebase-meta kde-l10n
emerge -avC konqueror
rc-update add consolekit default
/etc/init.d/consolekit start
vi /etc/conf.d/xdm
# eintragen: DISPLAYMANAGER="kdm"
echo xdm >> /etc/conf.d/CHANGED-FILES
rc-update add xdm default
/etc/init.d/xdm start
Wenn man wissen möchte, was ein komplettes KDE enthalten würde, dann
kann man sich das so anschauen: emerge -pvt kde-meta
Wenn man KDE wieder komplett deinstallieren möchte, dann
nach dieser Anleitung.
LXDE
emerge -avt lxde-base/lxde-meta lxde-base/lxdm
vi /etc/conf.d/xdm
# eintragen: DISPLAYMANAGER="lxdm"
echo xdm >> /etc/conf.d/CHANGED-FILES
rc-update add xdm default
/etc/init.d/xdm start
Zu LXDE würde auch einer der etwas "schlankeren" Browser passen:
emerge -avt www-client/midori
emerge -avt www-client/chromium
emerge -avt www-client/epiphany
XFCE
Ich bevorzuge allerdings XFCE, da es alles kann, was ich auf dem
Desktop benötige und extrem ressourcenschonend und damit sehr
schnell ist.
Zusammenfassung des
Quick Installation Guide
bzw. des
Detailed Installation Guide:
vi /etc/portage/make.conf
### eintragen: XFCE_PLUGINS="clock power"
### USE um "acl" und "pulseaudio" ergänzen, sonst geht kein Ton!
### Wenn USE Flags geändert wurden, dann:
### emerge -avt --changed-use --deep @world
emerge -avt xfce-base/xfce4-meta xfce-extra/xfce4-notifyd
emerge --ask --deselect=y xfce-extra/xfce4-notifyd
rc-update add consolekit default
/etc/init.d/consolekit start
emerge -avt xfce-extra/xfce4-volumed-pulse
emerge -avt x11-terms/xfce4-terminal
emerge -avt xfce-extra/xfce4-battery-plugin
emerge -avt xfce-extra/thunar-volman
emerge -avt xfce-extra/thunar-archive-plugin
emerge -avt x11-misc/slim
emerge -avt xfce-extra/xfce4-pulseaudio-plugin media-sound/pavucontrol
emerge -avt app-arch/file-roller
vi /etc/conf.d/xdm
### eintragen: DISPLAYMANAGER="slim"
echo xdm >> /etc/conf.d/CHANGED-FILES
### Den Desktop Benutzer in die nötigen Gruppen eintragen, um
z.B. USB Automount zu haben:
for x in cdrom cdrw usb ; do gpasswd -a MY_USER_NAME $x ; done
echo XSESSION=\"Xfce4\" >> /etc/env.d/90xsession
env-update && source /etc/profile
rc-update add xdm default
/etc/init.d/xdm start
Sollte das automatische (oder manuelle) Mounten von z.B. USB Sticks
nicht funktionieren und z.B. Thunar die Meldung "Not authorized to
perform operation." bringen, dann kann man diese beiden Kommandos
zur weiteren Fehlersuche heranziehen:
udisksctl mount --block-device /dev/sdb1
gvfs-mount -d /dev/sdb1
Wenn letzters auch diese Fehlermeldung bringt, dann liegt es in der
Regel an fehlenden Gruppenzugehörigkeiten (siehe oben).
Ggf. für Fehlersuche bzgl. Pulseaudio:
Gentoo-Wiki: PulseAudio
Für Screenshots, laut
Arch - Xfce
- Screenshots:
emerge -avt xfce-extra/xfce4-screenshooter
Dann noch ein paar typische Desktop-Programme nach Belieben:
emerge -avt www-client/firefox-bin
emerge -avt mail-client/thunderbird-bin
emerge -avt app-office/libreoffice-bin
emerge -avt app-office/libreoffice-l10n
emerge -avt kde-base/kde-l10n
emerge -avt net-misc/ssvnc
emerge -avt xhost
emerge -avt xinput
emerge -avt app-editors/xemacs
emerge -avt app-xemacs/auctex
emerge -avt app-xemacs/perl-modes
emerge -avt app-xemacs/ps-print
emerge -avt app-xemacs/psgml
emerge -avt app-xemacs/psgml-dtds
emerge -avt app-xemacs/mule-ucs
emerge -avt dev-perl/CDDB_get
emerge -avt www-plugins/adobe-flash
emerge -avt virtual/jre
emerge -avt media-sound/mpg123
emerge -avt media-video/mplayer
emerge -avt media-gfx/gimp
emerge -avt media-plugins/gimp-lqr
emerge -avt media-gfx/gqview
emerge -avt app-cdr/dvd+rw-tools
emerge -avt app-admin/passook
emerge -avt app-arch/p7zip
emerge -avt app-arch/rar
emerge -avt app-arch/unrar
emerge -avt app-misc/fdupes
emerge -avt app-text/a2ps
emerge -avt app-text/evince
emerge -avt dev-util/meld
emerge -avt app-text/texlive
emerge -avt dev-vcs/cvs
emerge -avt dev-vcs/git
emerge -avt dev-vcs/mercurial
emerge -avt games-arcade/frozen-bubble
emerge -avt kde-base/kmix
emerge -avt media-fonts/droid
emerge -avt media-fonts/freefonts
emerge -avt media-fonts/libertine
emerge -avt media-fonts/corefonts
emerge -avt media-fonts/dejavu
emerge -avt media-fonts/font-bh-ttf
emerge -avt media-fonts/font-bh-type1
emerge -avt media-fonts/freefonts
emerge -avt media-fonts/ttf-bitstream-vera
emerge -avt media-fonts/unifont
emerge -avt media-fonts/artwiz-aleczapka-en
eselect fontconfig list | grep 'droid\|liberation'
eselect fontconfig enable ...
emerge -avt media-gfx/digikam
emerge -avt media-gfx/exiftags
emerge -avt media-gfx/imagemagick
emerge -avt media-gfx/xv
emerge -avt media-sound/audacious
emerge -avt media-sound/audacity
emerge -avt media-sound/cdparanoia
emerge -avt media-sound/mp3info
echo "media-sound/pwavecat ~x86" >> /etc/portage/package.accept_keywords
emerge -avt media-sound/pwavecat
emerge -avt media-sound/sox
emerge -avt media-sound/streamripper
emerge -avt media-sound/timidity++
emerge -avt media-sound/vorbis-tools
emerge -avt media-sound/wavbreaker
emerge -avt media-tv/linuxtv-dvb-apps
emerge -avt media-tv/w_scan
emerge -avt media-video/dvbsnoop
emerge -avt media-video/dvdrip
emerge -avt media-video/ffmpeg
emerge -avt media-video/mjpegtools
emerge -avt media-video/rtmpdump
emerge -avt media-video/vlc
emerge -avt media-video/xine-ui
emerge -avt net-analyzer/traceroute
emerge -avt net-dns/bind-tools
emerge -avt net-fs/nfs-utils
rc-update add rpc.statd default
emerge -avt net-fs/samba
emerge -avt net-ftp/ncftp
emerge -avt net-mail/email
emerge -avt net-mail/fetchmail
emerge -avt net-misc/iperf
emerge -avt net-misc/netkit-telnetd
emerge -avt net-misc/wakeonlan
emerge -avt net-print/cups
emerge -avt net-wireless/aircrack-ng
emerge -avt net-wireless/kismet
emerge -avt sci-astronomy/stellarium
emerge -avt sys-apps/ethtool
emerge -avt sys-fs/encfs
emerge -avt sys-process/htop
emerge -avt sys-process/iotop
emerge -avt x11-misc/xfe
eselect fontconfig list
echo "net-misc/icaclient ~x86" >> /etc/portage/package.accept_keywords
emerge -avt net-misc/icaclient
emerge -avt app-emulation/qemu
emerge -avt x11-drivers/xf86-video-qxl
emerge -avt sys-devel/gdb
emerge -avt net-wireless/wavemon
emerge -avt x11-apps/xwininfo
emerge -avt app-text/uudeview
emerge -avt app-text/gv
emerge -avt net-misc/openvpn
emerge -avt media-gfx/xsane
emerge -avt app-antivirus/clamav
emerge -avt games-board/gnuchess
emerge -avt games-board/pysolfc
emerge -avt sys-fs/mdadm
emerge -avt sys-fs/dosfstools
emerge -avt games-board/knights
emerge -avt x11-apps/xdpyinfo
emerge -avt sys-apps/hdparm
emerge -avt x11-apps/xvinfo
emerge -avt x11-misc/x11vnc
emerge -avt x11-wm/twm
emerge -avt media-libs/netpbm
emerge -avt sys-boot/unetbootin
emerge -avt net-analyzer/wireshark
emerge -avt sys-fs/jmtpfs
emerge -avt sys-apps/memtest86+
emerge -avt app-misc/beep
emerge -avt app-crypt/johntheripper
emerge -avt sys-process/nmon
emerge -avt sys-fs/fuse-exfat
emerge -avt sys-fs/exfat-utils
emerge -avt www-misc/urlwatch
Maus-Wheel-Einstellungen sind in
/usr/sl/x11_set_trackpoint_wheel
Lautstärketasten? Lösung:
emerge -avt kde-base/kmix
Nacharbeiten (einmalig):
mkdir -p /usr/sl
cd /usr/sl
svn co svn://server/sl/trunk/bin .
# Lokale Profil-Erweiterungen:
ln -s /usr/sl/profile.local /etc/profile.d/zz-profile.local.sh
# Oder bei neueren Gentoos (ab ca. 2018):
ln -s /usr/sl/profile.local /etc/bash/bashrc.d/zz-profile.local.sh
echo zz-profile.local.sh >> /etc/profile.d/CHANGED-FILES
# Backup-Skript anlegen:
cp backup-VORLAGE backup-neuer_rechner
vi backup-neuer_rechner
svn add backup-neuer_rechner
svn ci -m ''
rc-update add cronie default
/etc/init.d/cronie start
Als Root eine ~/.crontab 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
0 1 1 * * /bin/echo Mailfunktionstest
und dann per crontab ~/.crontab aktivieren.
echo .crontab >> ~/CHANGED-FILES
Für Notebooks:
emerge -avt powertop
emerge -avt sys-power/acpi
emerge -avt sys-power/hibernate-script
rc-update add hibernate-cleanup boot
Für Suspend-To-Disk (Hibernate) in /etc/default/grub in
GRUB_CMDLINE_LINUX die Swap-Partition, also
z.B. resume=/dev/sda3 eintragen und dann noch acpid auf die
Taste reagieren lassen:
echo -e "event=SUSP\naction=/usr/sbin/hibernate" > /etc/acpi/events/hibernate
chmod 755 /etc/acpi/events/hibernate
/etc/init.d/acpid reload
Alternativ für ganz alte Notebooks:
emerge -avt apmd
emerge -avt pcmcia-cs
rc-update add pcmcia default
Für Unterstüztung von IBM/Lenovo Laptops, siehe:
Archlinux-Wiki Lenovo
Fürs Touchpad braucht man evtl. INPUT_DEVICES=synaptics
Für WLAN:
Siehe: WLAN einrichten.
Auf jeden Fall:
emerge -avt net-wireless/wpa_supplicant
emerge -avt net-wireless/wireless-tools
emerge -avt rfkill
Deutsche Tastatur und deaktiviertes CAPSLOCK unter X11:
ln -s /usr/sl/X11/00-keyboard.conf /etc/X11/xorg.conf.d/
Man könnte auch noch die Auflösung oder Farbtiefe in ähnlicher Art
und Weise einstellen:Section "Monitor"
Identifier "VGA-1"
Option "PreferredMode" "1024x768"
EndSection
Section "Screen"
Identifier "Screen0"
DefaultDepth 16
EndSection
Drucken:
siehe:
Drucker-Konfiguration mit CUPS.
Persönliche Einstellungen:
In ~/.bashrc:
. /etc/profile
Persönliche Dateien:
su -
mkdir /woall
cd /woall
svn co svn://server/sl/trunk/woall .
cd /etc/sudoers.d
mkdir sl
cd sl
svn co svn://server/sl/trunk/sudo .
cd ..
ln -s sl/sudoers sl-sudoers
exit
mkdir /home/loescher/.html-data
cd /home/loescher/.html-data
svn co svn://server/sl/trunk/html-data .
mkdir /home/loescher/prog
cd /home/loescher/prog
svn co svn://server/sl/trunk/prog .
mkdir /home/loescher/texte
cd /home/loescher/texte
svn co svn://server/sl/trunk/texte .
mkdir /home/loescher/media
cd /home/loescher/media
svn co svn://server/sl/trunk/media .
mkdir /home/loescher/TeX
cd /home/loescher/TeX
svn co svn://server/sl/trunk/TeX .
mkdir /home/loescher/fhem
cd /home/loescher/fhem
svn co svn://server/sl/trunk/fhem .
Möglichkeiten das System noch zu optimieren findet man in
Flying with Gentoo.
- Detaillierte Anleitung:
Upgrading
Gentoo
-
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
layman -S
eix-update
# Auf dem BINHOST:
gentoo_create_portage_snapshot
eselect news read new | less
Evtl. kann man das Update mit binären Paketen beschleunigen,
siehe dazu BINHOST weiter unten oder
Using Portage BINHOST.
Wenn angezeigt wird, dass ein neues Portage installiert werden
soll, dann sollte man das auch tun:
emerge -auvt portage
Erst einmal das System aktualisieren:
emerge -auvt @system
Dann World mit Vorschau und 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 -l
# Nummer des neuesten auswählen:
gcc-config 2
env-update && source /etc/profile
emerge -avt1 libtool
revdep-rebuild -p -v --library libstdc++.so.5
gcc --version
quickpkg sys-devel/gcc
emerge --unmerge =sys-devel/gcc-ALTE-VERSION
-
Wenn man USE-Flags geändert hat oder ein portage-Update gekommen
ist, dann sollte man mit
emerge -avt --newuse --deep @system
emerge -avt --newuse --deep @world
schauen, was alles betroffen ist und ggf. neu emergen.
-
Noch besser ist es auch ggf. die build time dependencies zu
aktualisieren:
emerge -auvtD --with-bdeps=y @world
-
Noch ein paar manuelle Schritte:
binutils-config -l
binutils-config 1
python-updater
perl-cleaner --all
vdrplugin-rebuild list
vdrplugin-rebuild rebuild
-
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 2>&1 | tee /tmp/depclean.txt
less /tmp/depclean.txt
grep / /tmp/depclean.txt | grep -v \* | grep -v '^All selected
packages' > /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
-
emerge -avt @preserved-rebuild
-
Dann müssen evtl. nach einem emerge noch Konfigurations-Dateien
aktualisiert werden. Das geht mit
etc-update
oder
dispatch-conf
-
Wenn man will, kann man auch den Kernel auf den neuesten Stand
bringen:
emerge -auvt gentoo-sources
eselect kernel list
eselect kernel set X
zcat /proc/config.gz > /usr/src/linux/.config
cd /usr/src/linux
make olddefconfig
genkernel --oldconfig --lvm --disklabel --mountboot --makeopts=-j4 all
grub-mkconfig -o /boot/grub/grub.cfg
-
Ggf. Überreste noch entfernen:
rm -rf /var/tmp/portage/*
-
Sicherheits-Updates prüfen:
glsa-check -v -t all
glsa-check -d 200410-22
-
Was sollte man nach dem Update alles Testen? (Beispiel: Server)
- Alle Services: rc-status
- less /var/log/rc.log
- cat /proc/mdstat
- VDR, VDR Admin
- Apache
- Subversion
- Samba-Freigaben
- OpenVPN
- Cronjobs
- VDR als User "tv"
- ntpq -p
- Mail versenden
- ssh Login
- ssh-to-server
- Musiksammlung streamen
- FHEM
Was sollte man nach dem Update alles Testen? (Beispiel: Desktop)
- Alle Services: rc-status
- Drucken / CUPS (http://localhost:631/
- Firefox
- Mail / Thunderbird
- OpenVPN
- Cronjobs
- Mail versenden
- Gimp
- GQView
- Knights
- funktioniert das auf dem vdr: rdate -s desktop
- MO (scsirescan, mountmo, umountmo+eject)
- Scanner
- USB-Sticks
- VDR-Mount vom dlink
- wakeonlan VDR
- VDR Admin
- Youtube
- Keepvid
- Sound-Wiedergabe
- mplayer
- KMix
- StreetView
- RAID-Platte einbinden
- Centrix
-
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!
-
Sollten sich beim Update eines sehr alten Gentoos manche
Source-Dateien nicht mehr finden lassen, so ist
http://bbgentoo.ilb.ru/distfiles/
eine gute Quelle!
-
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
-
Wenn es beim Update bei Perl zu einem "update slot conflict"
kommt, dann kann es in der Regel so gelöst werden:
emerge --ask --tree --verbose --verbose-conflicts --oneshot dev-lang/perl $(qlist -IC 'virtual/perl-*') $(qlist -IC 'dev-perl/*') $(qlist -IC 'perl-core/*') $(qlist -IC 'perl-gcpan/*') app-portage/g-cpan
-
Fehler: slot conflict, z.B. bei sys-libs/zlib kann so
behoben werden:
emerge -puvt1 --verbose-conflicts sys-libs/zlib > /tmp/x 2>&1
grep 'required by' /tmp/x | perl -wne 'print if s/.+required by \((.+)-[0-9].+\n/$1 /' > /tmp/y
emerge -avt1 --verbose-conflicts sys-libs/zlib $(cat /tmp/y)
-
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
-
Ausführliche Dokumentation zu zwei wichtigen Funktionen von
Gentoo, die man in /etc/make.conf setzt:
-
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
-
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, die nicht im Portage
enthalten sind, braucht man:
emerge -avt app-portage/g-cpan
Beispiel:
g-cpan -i -a 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. In der
Anleitung zum GCC wird man natürlich auch fündig.
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 und gentoolkit ganz nützlich,
wie z.B. qlist oder euse, um z.B. Bedeutungen von
USE-Flags zu erklären:
euse -i gpm
Für einzelne Pakete kann man mit flaggie USE-Flags ein-
und ausschalten:
flaggie app-editors/vim -X
-
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 und dann:
locale-gen
laufen lassen.
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 auf Deutsch um:
eselect locale list
eselect locale set 6
env-update && source /etc/profile
Falls das USE Flag "nls" nicht aktiv ist: Aktivieren und:
emerge --ask --changed-use --deep --with-bdeps=y @world
Alternativ kann das auch ein einzelner Benutzer in
~/.bashrc eintragen:
export LANG="de_DE@euro"
X11: Deutsche Tastatur und deaktiviertes CAPSLOCK:
ln -s /usr/sl/X11/00-keyboard.conf /etc/X11/xorg.conf.d/
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
Bei Firefox und Thunderbird kann es ggf. nötig sein, unter
Addons das Sprachpaket Deutsch aktivieren zu müssen und ggf. so
starten:
LC_MESSAGES="de_DE" firefox
-
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
-
Portage-Overlays kann man über die
Suchmaschine zugaina.org
finden und sich komfortabel durch Layman einbinden:
emerge -avt layman
layman -Lv | less
echo "source /var/lib/layman/make.conf" >> /etc/make.conf
# Overlay hinzufügen
layman -a kde-sunset
eix-update
# und wieder entfernen
layman -d kde-sunset
eix-update
-
Wenn das Root-Filesystem sich in einem LVM Logical Volume
befindet, dann braucht man zwangsweise eine initrd, da nur so
die VG und das LV aktiviert werden kann.
Eine initrd zu genau diesem Zweck erstellt man so:
genkernel --install --no-initrdmodules --lvm2 initrd
-
Tipps zu UDEV:
Um z.B. ein 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
-
Das Kompilieren kann man mit mehreren Rechnern durch
distcc beschleunigen, was
ausführlich in
Gentoo-Wiki: Distcc
beschrieben ist. Hier in kurz:
Auf jedem beteiligen Rechner: emerge -avt distcc
Jeder Rechner, der distcc nutzen soll braucht in
/etc/portage/make.conf noch:
FEATURES="distcc"
und die bei distcc mitmachenden anderen Rechner in
/etc/distcc/hosts, z.B.:
127.0.0.1
192.168.178.212
192.168.178.215
Auf den mitmachenden Rechnern muss in
/etc/conf.d/distccd eingestellt werden, welche Rechner
den distccd nutzen dürfen, z.B. das ganze lokale Netz:
DISTCCD_OPTS="... --allow 192.168.178.250"
Dann noch starten:
touch /var/log/distccd.log
chown distcc /var/log/distccd.log
rc-update add distccd default
/etc/init.d/distccd start
-
Wenn man nur für einzelne Pakete abweichende USE-Flags (oder
andere Variablen aus make.conf) setzen will, dann kann man das
in
/etc/portage/env machen.
Dazu legt man ein /etc/portage/package.env mit
z.B. diesem Inhalt an:
media-video/ffmpeg ffmpeg.conf
Und im Verzeichnis die Datei ffmpeg.conf mit diesem
Inhalt:
USE="mmx mmxext ssse3"
Dieses Beispiel könnte man natürlich auch per Eintrag in
/etc/portage/package.use erledigen, aber über
/etc/portage/env lässt sich alles aus
make.conf pro Paket ändern.
Ausserdem ist diese Methode sehr praktisch, wenn man einen BINHOST
und identische package.use-Dateien auf allen Hosts verwendet und
nur auf einzelnen USE-Flags modifizieren möchte.
Anleitungen:
Ich setze im folgenden auf einem Gentoo-Server einen BINHOST in einer
chroot-Umgebung auf.
export BINHOST_ROOT=/xtemp/binhost
mkdir -p $BINHOST_ROOT
cd $BINHOST_ROOT
wget http://distfiles.gentoo.org/releases/x86/autobuilds/$(curl -s http://distfiles.gentoo.org/releases/x86/autobuilds/latest-stage3-i686.txt | tail -1 | awk '{print $1}')
tar xvjpf stage3-*.tar.bz2
/bin/rm stage3-*.tar.bz2
wget http://distfiles.gentoo.org/releases/snapshots/current/portage-latest.tar.bz2
cd usr
tar -xjf ../portage-latest.tar.bz2
cd ..
/bin/rm portage-latest.tar.bz2
mount -t proc none proc
chroot . /bin/bash
mkdir /dev/shm
mount -t tmpfs none /dev/shm
mkdir /dev/pts
mount -t devpts -o gid=5 none /dev/pts
env-update
source /etc/profile
PROMPT_COMMAND='PS1="BINHOST_ROOT:`pwd -P` # "'
vi /etc/resolv.conf
Folgende Einträge in /etc/portage/make.conf:
CFLAGS="-O2 -march=i686 -pipe"
PORTAGE_NICENESS=20
QUICKPKG_DEFAULT_OPTS='--include-config=n --include-unmodified-config=y'
ACCEPT_LICENSE="*"
LINGUAS="en en_US de"
L10N="en en-US de"
LIRC_DEVICES="hauppauge"
VIDEO_CARDS="dummy fbdev v4l vesa vga via cle266 i810 intel mach64 r128 radeon"
INPUT_DEVICES="evdev keyboard mouse synaptics"
FEATURES="buildpkg"
APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon
authn_dbd authn_dbm authn_default authn_file authz_dbm
authz_default authz_groupfile authz_host authz_owner authz_user
autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env
expires ext_filter file_cache filter headers ident imagemap
include info log_config logio mem_cache mime mime_magic
negotiation proxy proxy_ajp proxy_balancer proxy_connect
proxy_http rewrite setenvif so speling status unique_id userdir
usertrack vhost_alias slotmem_shm"
USE="-aalib -arts -flac -fortran -gnome -gpm -kerberos -ldap
-mikmod -motif -mysql -ogg -oggvorbis -ruby -theora -vorbis X a52 aac
acl acpi activefilter alsa apache2 bindist cups dbus dga directfb
divx4linux dts dvb dvd dvdread embedded encode fbcon hal jpeg kde
kpathsea linguas_de lirc mad mbox mmap network nptl nptlonly
nsplugin opengl ppds pulseaudio qt3support qt4 quicktime rtc threads usb v4l v4l2 v5l vaapi vidix win32codecs xv xvid xvmc"
Spezielle USE-Flags sollte man in /etc/portage/package.use
hinterlegen.
Dann:
emerge --sync
eselect news read new | less
emerge -auvt @system
emerge -auvtD @world
emerge -avt --newuse --deep @system
emerge -avt --newuse --deep @world
emerge --pretend --depclean
emerge --depclean
revdep-rebuild -p -v
etc-update
Und folgende Pakete installieren:
emerge -avt app-portage/gentoolkit
emerge -avt net-misc/netdate
emerge -avt app-portage/genlop
emerge -avt app-admin/sudo
emerge -avt sys-process/lsof
emerge -avt sys-apps/pciutils
emerge -avt net-dialup/minicom
emerge -avt app-portage/eix
eix-update
emerge -avt net-fs/nfs-utils
emerge -avt layman
emerge -avt dhcpcd
emerge -avt grub
emerge -avt sysklogd
emerge -avt logrotate
emerge -avt sys-process/cronie
emerge -avt app-editors/vim
emerge -avC nano
echo "colorscheme elflord" >> ~/.vimrc
emerge -avt net-mail/fetchmail
emerge -avt net-analyzer/gnu-netcat
emerge -avt net-analyzer/netperf
emerge -avt net-misc/ntp
emerge -avt dev-perl/Time-ParseDate
emerge -avt sys-apps/smartmontools
emerge -avt dev-util/strace
emerge -avt app-misc/mmv
emerge -avt sys-power/cpupower
emerge -avt sys-power/acpid
emerge -avt sys-apps/ethtool
emerge -avt app-misc/screen
emerge -avt net-wireless/wpa_supplicant
emerge -avt rfkill
emerge -avt kdebase-meta kde-l10n
emerge -avC konqueror
emerge -avt www-client/firefox-bin
emerge -avt mail-client/thunderbird-bin
emerge -avt app-office/libreoffice-bin
emerge -avt app-office/libreoffice-l10n
emerge -avt kde-base/kde-l10n
emerge -avt dev-vcs/subversion
emerge -avt gentoo-sources genkernel
genkernel --lvm --mdadm --disklabel --no-mountboot --no-zfs --no-btrfs --virtio --makeopts=-j1 all
emerge -avt net-misc/ssvnc
emerge -avt xhost
emerge -avt xinput
emerge -avt app-editors/xemacs
emerge -avt app-xemacs/auctex
emerge -avt app-xemacs/perl-modes
emerge -avt app-xemacs/ps-print
emerge -avt app-xemacs/psgml
emerge -avt app-xemacs/psgml-dtds
emerge -avt app-xemacs/mule-ucs
emerge -avt dev-perl/CDDB_get
emerge -avt www-plugins/adobe-flash
emerge -avt virtual/jre
emerge -avt media-sound/mpg123
emerge -avt media-video/mplayer
emerge -avt media-gfx/gimp
emerge -avt media-plugins/gimp-lqr
emerge -avt media-gfx/gqview
emerge -avt app-cdr/dvd+rw-tools
emerge -avt app-cdr/k3b
emerge -avt app-admin/passook
emerge -avt app-arch/p7zip
emerge -avt app-arch/rar
emerge -avt app-arch/unrar
emerge -avt app-misc/fdupes
emerge -avt app-text/a2ps
emerge -avt app-text/evince
emerge -avt dev-util/meld
emerge -avt app-text/texlive
emerge -avt dev-vcs/cvs
emerge -avt dev-vcs/git
emerge -avt dev-vcs/mercurial
emerge -avt games-arcade/frozen-bubble
emerge -avt kde-base/kmix
emerge -avt media-fonts/droid
emerge -avt media-fonts/freefonts
emerge -avt media-fonts/libertine
emerge -avt media-fonts/corefonts
emerge -avt media-fonts/dejavu
emerge -avt media-fonts/font-bh-ttf
emerge -avt media-fonts/font-bh-type1
emerge -avt media-fonts/freefonts
emerge -avt media-fonts/ttf-bitstream-vera
emerge -avt media-fonts/unifont
emerge -avt media-fonts/artwiz-aleczapka-en
emerge -avt media-gfx/digikam
emerge -avt media-gfx/exiftags
emerge -avt media-gfx/imagemagick
emerge -avt media-gfx/xv
emerge -avt media-sound/audacious
emerge -avt media-sound/audacity
emerge -avt media-sound/cdparanoia
emerge -avt media-sound/mp3info
echo "media-sound/pwavecat ~x86" >> /etc/portage/package.accept_keywords
emerge -avt media-sound/pwavecat
emerge -avt media-sound/sox
emerge -avt media-sound/streamripper
emerge -avt media-sound/timidity++
emerge -avt media-sound/vorbis-tools
emerge -avt media-sound/wavbreaker
emerge -avt media-tv/linuxtv-dvb-apps
emerge -avt media-tv/w_scan
emerge -avt media-video/dvbsnoop
emerge -avt media-video/dvdrip
emerge -avt media-video/ffmpeg
emerge -avt media-video/mjpegtools
emerge -avt media-video/rtmpdump
emerge -avt media-video/vlc
emerge -avt media-video/xine-ui
emerge -avt net-analyzer/traceroute
emerge -avt net-dns/bind-tools
emerge -avt net-fs/samba
emerge -avt net-ftp/ncftp
emerge -avt net-mail/email
emerge -avt net-mail/fetchmail
emerge -avt net-misc/iperf
emerge -avt net-misc/netkit-telnetd
emerge -avt net-misc/wakeonlan
emerge -avt net-print/cups
emerge -avt net-wireless/aircrack-ng
emerge -avt net-wireless/kismet
emerge -avt sci-astronomy/stellarium
emerge -avt sys-apps/ethtool
emerge -avt sys-fs/encfs
emerge -avt sys-process/htop
emerge -avt sys-process/iotop
emerge -avt x11-misc/xfe
emerge -avt powertop
echo "net-misc/icaclient ~x86" >> /etc/portage/package.accept_keywords
emerge -avt net-misc/icaclient
emerge -avt sys-kernel/linux-firmware
emerge -avt qemu
emerge -avt x11-drivers/xf86-video-qxl
emerge -avt postfix
emerge -avt gdb
emerge -avt distcc
emerge -avt wavemon
emerge -avt x11-apps/xwininfo
emerge -avt app-text/uudeview
emerge -avt app-text/gv
emerge -avt net-misc/openvpn
emerge -avt media-gfx/xsane
emerge -avt app-antivirus/clamav
emerge -avt games-board/gnuchess
emerge -avt games-board/pysolfc
emerge -avt sys-fs/mdadm
emerge -avt sys-fs/dosfstools
emerge -avt games-board/knights
emerge -avt x11-apps/xdpyinfo
emerge -avt sys-apps/hdparm
emerge -avt x11-apps/xvinfo
emerge -avt x11-misc/x11vnc
emerge -avt x11-wm/twm
emerge -avt app-portage/cpuid2cpuflags
emerge -avt media-libs/netpbm
emerge -avt sys-boot/unetbootin
emerge -avt net-analyzer/wireshark
emerge -avt app-admin/logsentry
emerge -avt app-forensics/chkrootkit
emerge -avt sys-fs/lvm2
emerge -avt sys-fs/jmtpfs
emerge -avt sys-apps/memtest86+
emerge -avt sys-apps/iucode_tool
emerge -avt sys-apps/dmidecode
emerge -avt sys-apps/usbutils
emerge -avt app-misc/beep
emerge -avt app-crypt/johntheripper
emerge -avt sys-process/nmon
emerge -avt sys-fs/fuse-exfat
emerge -avt sys-fs/exfat-utils
emerge -avt www-misc/urlwatch
Wenn der BINHOST erst einmal fertig ist, dann kann man so später in die
chroot-Umgebung wechseln:
screen -S binhost
export BINHOST_ROOT=/xtemp/binhost
cd $BINHOST_ROOT
mount -t proc none proc
chroot . /bin/bash
mount -t tmpfs none /dev/shm
mount -t devpts -o gid=5 none /dev/pts
env-update
source /etc/profile
PROMPT_COMMAND='PS1="BINHOST_ROOT:`pwd -P` # "'