Skip to content

n-fuse/gentoo-stuff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 

Repository files navigation

Gentoo Linux:

A source based (meta) Linux distribution.

  • The source code is compiled locally according to the user's preferences
  • Precompiled binaries are available for some very large packages and for packages whose source code has not been released

The Gentoo Advantages

  • Nearly unlimited flexibility
  • Performance
  • Rolling Release
  • Bleeding Edge Software
  • Good Wiki
  • Suits for Client and Server and Embedded Devices

Freedom of Choice

  • OpenOffice or LibreOffice
  • Gnome or KDE or...
  • Binary or Open Source GPU drivers
  • OpenGL backend (open source or binary)

The advantages reflected by quotes from Gentoo users:

I don't know when I installed my system from scratch last time

Forget about OS versions

In many cases it is even possible to have multiple implementations/ versions

Example:

client6 ~ # eselect Usage: eselect <global options> <module name> <module options> Global options: --brief Make output shorter --colour=<yes|no|auto> Enable or disable colour output (default 'auto') Built-in modules: help Display a help message usage Display a usage message version Display version information Extra modules: binutils Manage installed versions of sys-devel/binutils blas Manage installed BLAS implementations cblas Manage installed CBLAS implementations ctags Manage /usr/bin/ctags implementations editor Manage the EDITOR environment variable env Manage environment variables set in /etc/env.d/ fontconfig Manage fontconfig /etc/fonts/conf.d/ symlinks java-nsplugin Manage the Java plugin for Netscape-like Browsers java-vm Manage the Java system and user VM kernel Manage the /usr/src/linux symlink locale Manage the LANG environment variable mesa Manage the OpenGL driver architecture used by media-libs/mesa modules Query eselect modules news Read Gentoo ("GLEP 42") news items notify-send Manage /usr/bin/notify-send implementation opencl Manage the OpenCL implementation used by your system opengl Manage the OpenGL implementation used by your system pager Manage the PAGER environment variable php Manage php installations pinentry Manage /usr/bin/pinentry implementation postgresql Manage active PostgreSQL client applications and libraries profile Manage the make.profile symlink python Manage Python symlinks qtgraphicssystem Manage the system-wide active Qt Graphics System rails Manage Ruby on Rails versions rc Manage /etc/init.d scripts in runlevels ruby Manage ruby symlinks vi Manage /usr/bin/vi implementations visual Manage the VISUAL environment variable wxwidgets Manage the system default wxWidgets profile. client6 ~ # eselect java-vm list Available Java Virtual Machines: [1] icedtea-bin-6 [2] icedtea-bin-7 system-vm client6 ~ # eselect editor list Available targets for the EDITOR variable: [1] /bin/nano [2] /usr/bin/ex [3] /usr/bin/vi * [ ] (free form) 

Portage

  • Gentoo's software Repository
  • One of the largest compared to other distros
  • Bleeding edge packages
  • Overlays -- Add other Repos ran by the community

The meta data is online available via http://packages.gentoo.org/

Ebuild

  • Defines variables and functions used to compile and install software from source

USE Flags

  • Powerful way to make decisions how software is built
  • Config files below /etc/portage/
  • Main config file defines among others:
    • cflags, ex.: CFLAGS="-O2 -pipe -march=core2 -fomit-frame-pointer"
    • Apache Modules
    • global use flags, ex.: lvm2 bash-completion script spice ncurses qemu vhost-net virt-network vepa macvtap spell ...
    • The Gentoo mirror(s) to use, ex.: ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/
  • Package specific settings go into: package.use, package.unmask, package.accept_keywords

How to install Software:

1.) Find the right package

client6 ~ # emerge --search git Searching... [ Results for search key : git ] [ Applications found : 51 ] * app-book/git-magic Latest version available: 9999 Latest version installed: [ Not Installed ] Size of files: 0 kB Homepage: http://www-cs-students.stanford.edu/~blynn//gitmagic/ Description: A guild to Git License: * dev-vcs/gitolite Latest version available: 2.3.1 Latest version installed: [ Not Installed ] Size of files: 249 kB Homepage: http://github.com/sitaramc/gitolite Description: Highly flexible server for git directory version tracker License: GPL-2 [...] 

2.1) Check what emerge would do using --pretend

emerge dev-vcs/gitolite --pretend These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] perl-core/File-Path-2.90.0 [ebuild N ] virtual/perl-File-Path-2.90.0 [ebuild N ] dev-vcs/gitolite-2.3.1 USE="-contrib -vim-syntax" 

2.2) 'emerge' it

emerge dev-vcs/gitolite

Other package management use-cases in the following.

How to remove Packages:

emerge --unmerge dev-vcs/gitolite

How to update Packages:

emerge -u dev-vcs/gitolite

How to update the entire system:

emerge -uDN world --pretend --keep-going=y

  • u, --update → update
  • D, --deep → deep dependency resolving
  • N, --newuse → consider new use flags
  • --keep-going → Continue as much as possible after an error

Example:

client6 ~ # emerge -uDN world --pretend These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild U ] sys-libs/glibc-2.17 [2.15-r3] USE="-nscd% -suid% -systemtap%" [ebuild U ] sys-devel/gnuconfig-20130516 [20130111] [ebuild U ] sys-apps/which-2.20-r1 [2.20] [ebuild R ] virtual/libiconv-0 [ebuild U ] sys-libs/libseccomp-2.1.1 [2.1.0] [ebuild U ] app-shells/push-1.6 [1.5] [ebuild R ~] games-util/steam-games-meta-0-r20131107 USE="-steamgames_painkiller%" [ebuild R ] virtual/libffi-3.0.11 [ebuild U ] dev-libs/libassuan-2.1.1 [2.1.0] [ebuild U ] app-emulation/emul-linux-x86-baselibs-20131008-r6 [20130224] ABI_X86="(-32)" [ebuild U ] app-emulation/emul-linux-x86-compat-20131008 [20130224] [ebuild U ] app-emulation/emul-linux-x86-db-20131008 [20130224] [ebuild UD ] media-libs/libaacs-0.5.0 [0.6.0] [ebuild U ] app-admin/logrotate-3.8.7 [3.8.6] [ebuild U ] sys-apps/debianutils-4.4 [4.3.4] [ebuild U ] sys-apps/kbd-1.15.5-r1 [1.15.3] USE="pam%*" [ebuild U ] app-admin/eselect-postgresql-1.2.1 [1.2.0] [ebuild N ] app-admin/eselect-cdparanoia-0.1 [ebuild U ] virtual/man-0-r1 [0] [ebuild U ] sys-apps/man-pages-3.55 [3.53] [ebuild R ] media-plugins/gst-plugins-meta-0.10-r8 [0.10-r8] USE="-vaapi%" [ebuild U ] x11-misc/xdg-utils-1.1.0_rc1_p20130921 [1.1.0_rc1_p20120319] [ebuild R ] net-fs/cifs-utils-6.1-r1 USE="ads* (-upcall%*)" [ebuild U ] net-firewall/iptables-1.4.20 [1.4.16.3] [ebuild U ] sys-process/procps-3.3.8-r2 [3.3.6] USE="{-test%}" [ebuild U ] dev-db/mysql-init-scripts-2.0_pre1-r6 [2.0_pre1-r3] [ebuild U ] sys-fs/fuse-2.9.3 [2.9.2] USE="-examples%" [ebuild N ] app-crypt/p11-kit-0.13 USE="-debug" [ebuild U ] sys-fs/ntfs3g-2013.1.13 [2012.1.15-r2] USE="-ntfsdecrypt%" [ebuild U ] sys-apps/xinetd-2.3.15-r1 [2.3.15] [ebuild U ] dev-db/sqlite-3.8.2 [3.7.17] [ebuild U ] dev-libs/boehm-gc-7.2e [7.2d-r1] [ebuild U ] dev-libs/json-c-0.11 [0.9-r1] USE="-doc%" [ebuild N ] dev-haskell/primitive-0.5.1.0 USE="-doc -hscolour -profile" [ebuild N ] dev-haskell/deepseq-1.3.0.1 USE="-doc -hscolour -profile" [ebuild U ] dev-haskell/alex-3.1.2 [3.0.5] [ebuild N ] dev-haskell/vector-0.10.0.1 USE="-doc -hscolour -profile" [ebuild N ] dev-haskell/text-0.11.3.1 USE="-developer -doc -hscolour -profile {-test}" [ebuild N ] dev-haskell/hashable-1.1.2.5 USE="-doc -hscolour -profile {-test}" [ebuild N ] dev-haskell/hashtables-1.1.2.1 USE="unsafe-tricks -bounds-checking -debug -doc -hscolour -portable -profile -sse4_1" [ebuild U ] dev-haskell/gtk2hs-buildtools-0.12.4-r2 [0.12.3.1] [ebuild U ] dev-haskell/cairo-0.12.4-r1 [0.12.3.1] [ebuild U ] app-emulation/emul-linux-x86-xlibs-20131008 [20130224] ABI_X86="(-32)" [ebuild U ] media-gfx/nvidia-cg-toolkit-3.1.0013-r2 [2.1.0017-r1] USE="(multilib%*)" [ebuild U ] app-emulation/emul-linux-x86-medialibs-20131008-r1 [20130224] ABI_X86="(-32)" [ebuild U ] app-emulation/emul-linux-x86-soundlibs-20131008-r2 [20130224] USE="-pulseaudio%" ABI_X86="(-32)" [ebuild U ] app-emulation/emul-linux-x86-sdl-20131008 [20130224] [ebuild U ] app-emulation/emul-linux-x86-opengl-20131008 [20130224] ABI_X86="(-32)" [ebuild U ] app-emulation/emul-linux-x86-gtklibs-20131008 [20130224] [ebuild U ] app-emulation/emul-linux-x86-qtlibs-20131008 [20130224] [ebuild U ] app-emulation/emul-linux-x86-gstplugins-20131008 [20130224] [ebuild U ] x11-libs/libXfont-1.4.7 [1.4.6] [ebuild U ] dev-libs/nspr-4.10.2 [4.10] [ebuild U ] dev-libs/nss-3.15.4 [3.15.2] [ebuild U ] dev-lang/perl-5.16.3 [5.12.4-r1] [ebuild U ] dev-perl/Net-Daemon-0.480.0-r1 [0.480.0] [ebuild U ] dev-perl/TermReadKey-2.300.200 [2.300.0] [ebuild U ] dev-perl/DelimMatch-1.06-r1 [1.06] [ebuild U ] dev-perl/PlRPC-0.202.0-r2 [0.202.0] [ebuild U ] dev-perl/WWW-RobotRules-6.10.0-r1 [6.10.0] [ebuild U ] dev-perl/HTTP-Cookies-6.0.1-r1 [6.0.0] [ebuild U ] dev-perl/HTTP-Negotiate-6.0.1-r1 [6.0.0] [ebuild U ] sys-apps/help2man-1.43.3 [1.40.11] [ebuild U ] sys-libs/zlib-1.2.8-r1 [1.2.7] ABI_X86="(64%*) (-32) (-x32)" [ebuild U ] dev-libs/openssl-1.0.1f [1.0.1e-r1] [...] [ebuild NS ] media-libs/libpng-1.5.17-r15 [1.2.50, 1.5.17-r1] USE="apng (-neon)" [blocks b ] <media-sound/cdparanoia-3.10.2-r5 ("<media-sound/cdparanoia-3.10.2-r5" is blocking app-admin/eselect-cdparanoia-0.1) [ebuild U ] media-libs/libpng-1.2.50-r1 [1.2.50] ABI_X86="(64%*) (-32) (-x32)" [ebuild U ] media-libs/faac-1.28-r4 [1.28-r3] ABI_X86="(64%*) (-32) (-x32)" [ebuild R ~] sys-devel/gettext-0.18.3.1-r1 USE="ncurses%*" [ebuild U ] virtual/jpeg-0-r2 [0] ABI_X86="(64%*) (-32) (-x32)" [ebuild NS ] virtual/jpeg-62 [0] ABI_X86="(64) (-32) (-x32)" [ebuild NS ] dev-lang/python-3.3.3 [2.7.5-r3, 3.2.5-r3] USE="gdbm ipv6 ncurses readline sqlite ssl threads xml -build -doc -examples -hardened -tk -wininst" [ebuild U ] app-admin/gamin-0.1.10-r1 [0.1.10] ABI_X86="(64%*) (-32) (-x32)" [ebuild U ] sys-devel/binutils-2.23.2 [2.23.1] [blocks b ] <dev-libs/gobject-introspection-1.36 ("<dev-libs/gobject-introspection-1.36" is blocking dev-libs/glib-2.36.4-r1) [blocks b ] <dev-libs/gobject-introspection-1.36.0 ("<dev-libs/gobject-introspection-1.36.0" is blocking dev-libs/gobject-introspection-common-1.36.0) [uninstall ] dev-lang/vala-0.14.2-r2 [uninstall ] dev-lang/vala-0.18.1 [blocks b ] <dev-lang/vala-0.20.0 ("<dev-lang/vala-0.20.0" is blocking dev-libs/gobject-introspection-1.36.0-r1) [ebuild U ] x11-libs/pango-1.34.1 [1.30.1] [ebuild U ] x11-libs/gdk-pixbuf-2.28.2 [2.26.4] [ebuild U ] dev-libs/atk-2.8.0 [2.6.0] USE="{-test%}" [ebuild N ] app-accessibility/at-spi2-core-2.8.0 USE="introspection" [ebuild U ] net-libs/telepathy-glib-0.20.4 [0.20.1-r1] [ebuild NS ] dev-python/pygobject-3.8.3 [2.28.6-r53] USE="cairo threads -examples {-test}" PYTHON_TARGETS="python2_7 python3_2 -python2_6 -python3_3" [ebuild N ] app-accessibility/at-spi2-atk-2.8.1 USE="{-test}" [blocks B ] =media-libs/libpng-1.5*:0 ("=media-libs/libpng-1.5*:0" is blocking media-libs/libpng-1.5.17-r15) !!! Multiple package instances within a single package slot have been pulled !!! into the dependency graph, resulting in a slot conflict: media-libs/libpng:0 (media-libs/libpng-1.5.17-r1::gentoo, installed) pulled in by media-libs/libpng:0/0= required by (x11-libs/cairo-1.12.14-r4::gentoo, installed) media-libs/libpng:0/0= required by (kde-base/gwenview-4.11.2-r1::gentoo, installed) media-libs/libpng:0/0= required by (dev-python/wxpython-2.8.12.1-r1::gentoo, installed) media-libs/libpng:0/0= required by (kde-base/ksplash-4.11.2::gentoo, installed) >=media-libs/libpng-1.4:0/0= required by (net-libs/webkit-gtk-1.8.3-r201::gentoo, installed) media-libs/libpng:0/0= required by (media-libs/libwebp-0.3.1::gentoo, installed) media-libs/libpng:0/0= required by (net-print/cups-filters-1.0.36-r1::gentoo, installed) media-libs/libpng:0/0= required by (kde-base/kdelibs-4.11.2-r1::gentoo, installed) media-libs/libpng:0/0= required by (media-libs/vigra-1.8.0::gentoo, installed) media-libs/libpng:0/0= required by (media-libs/openjpeg-1.5.1::gentoo, installed) media-libs/libpng:0/0= required by (dev-qt/qtgui-4.8.5-r1::gentoo, installed) media-libs/libpng:0/0= required by (app-text/poppler-0.24.3::gentoo, installed) (media-libs/libpng-1.6.8::gentoo, ebuild scheduled for merge) pulled in by (no parents that aren't satisfied by other packages in this slot) dev-db/sqlite:3 (dev-db/sqlite-3.8.2::gentoo, ebuild scheduled for merge) pulled in by (no parents that aren't satisfied by other packages in this slot) (dev-db/sqlite-3.7.17::gentoo, installed) pulled in by >=dev-db/sqlite-3.3.8:3[extensions] required by (dev-python/pysqlite-2.6.3::gentoo, installed) app-text/poppler:0 (app-text/poppler-0.24.5::gentoo, ebuild scheduled for merge) pulled in by (no parents that aren't satisfied by other packages in this slot) (app-text/poppler-0.24.3::gentoo, installed) pulled in by >=app-text/poppler-0.16:0/43=[xpdf-headers(+),cxx] required by (app-office/libreoffice-4.1.3.2-r2::gentoo, installed) app-text/poppler:0/43=[cxx,jpeg,lcms,tiff,xpdf-headers(+)] required by (net-print/cups-filters-1.0.36-r1::gentoo, installed) (and 1 more with the same problems) media-libs/harfbuzz:0 (media-libs/harfbuzz-0.9.12::gentoo, installed) pulled in by >=media-libs/harfbuzz-0.9.10:0/0=[icu(+)] required by (app-office/libreoffice-4.1.3.2-r2::gentoo, installed) (media-libs/harfbuzz-0.9.23::gentoo, ebuild scheduled for merge) pulled in by (no parents that aren't satisfied by other packages in this slot) virtual/libffi:0 (virtual/libffi-3.0.11::gentoo, installed) pulled in by (no parents that aren't satisfied by other packages in this slot) (virtual/libffi-3.0.11::gentoo, ebuild scheduled for merge) pulled in by virtual/libffi[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?] required by (dev-libs/glib-2.36.4-r1::gentoo, ebuild scheduled for merge) virtual/libiconv:0 (virtual/libiconv-0::gentoo, installed) pulled in by (no parents that aren't satisfied by other packages in this slot) (virtual/libiconv-0::gentoo, ebuild scheduled for merge) pulled in by virtual/libiconv[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?] required by (dev-libs/glib-2.36.4-r1::gentoo, ebuild scheduled for merge) It may be possible to solve this problem by using package.mask to prevent one of those packages from being selected. However, it is also possible that conflicting dependencies exist such that they are impossible to satisfy simultaneously. If such a conflict exists in the dependencies of two different packages, then those packages can not be installed simultaneously. You may want to try a larger value of the --backtrack option, such as --backtrack=30, in order to see if that will solve this conflict automatically. For more information, see MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook. * Error: The above package list contains packages which cannot be * installed at the same time on the same system. (media-libs/libpng-1.5.17-r15::gentoo, ebuild scheduled for merge) pulled in by =media-libs/libpng-1.5* required by (mail-client/thunderbird-bin-24.1.1::gentoo, installed) For more information about Blocked Packages, please refer to the following section of the Gentoo Linux x86 Handbook (architecture is irrelevant): http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1#blocked The following USE changes are necessary to proceed: (see "package.use" in the portage(5) man page for more details) # required by app-office/libreoffice-4.1.3.2-r2 # required by @selected # required by @world (argument) =media-libs/harfbuzz-0.9.23 icu 

Typical Issues:

  • Slot conflicts:

    • A package A depends on =xy-1.1.1 but another package B requires >=xy-1.1.2
    • Two packages that cannot be installed on the system at the same time
  • Build Breaks: The build process of a package fails due to

    • GCC crashes
    • Dependency issues discovered during the build process
  • Updates of programming languages like perl, haskell etc.

    • Might require many packages to be re-compiled
    • Tools like perl-cleaner and haskell-updater help in such situations
  • Dependent packages are not rebuilt

    • revdep-rebuild

Gentoo specific tooling overview:

  • emerge → package manager
  • eselect → switch between multiple implementations/ versions of something
  • gcc-config → manage GCC implementation and profiles
  • java-config → manage VM implementations etc.
  • eix → set of utilities for searching and diffing your local portage-tree and overlays using a binary cache
  • equery → can display package dependencies, metadata, and relate installed files to packages
  • dispatch-conf → tool to manually merge config files of updated packages
  • eclean-pkg → delete redundant packages from local portage tree
  • eclean-dist → delete redundant dist files (third party files) from local portage tree
  • webapp-config → configure webapps installed from portage
  • revdep-rebuild → reverse dependency scanner and fix tool
  • layman → overlay manager

Some nice examples of the features provided by these tools in the following.

Recompile the entire system:

emerge -e world

List all packages in short that are installed and have perl in their dependency variables plus the package itself:

eix --deps -# -I perl

List what package the file /usr/bin/equery belongs to:

equery b /usr/bin/equery

Lazy sync:

eix-sync

Does:

  • emerge --sync
  • eix-update
  • eix-diff

See which packages are installed from overlays:

eix -J

Is all software on the system managed by Portage?:

No, it does not make sense for everything and not everything is available on portage. The following

  • Java based software
  • Node JS stuff (has its own package management)
  • Web apps in general (some exceptions)

Help resources:

Literature:

An up-to-date book written by a Gentoo developer about the Linux OS based on the Gentoo distribution.

http://swift.siphos.be/linux_sea/

Qou Vaids?

  • Gentoo läuft bereits auf mehr Architekturen als jede andere Distribution
  • Weitere sind in Vorbereitung
  • Trend zu immer mehr Software, die nur noch im Git existiert
  • Bei Gentoo bequem über den Paketmanager zu verwalten
  • Live ebuilds Pakete, die den Code direkt aus einem git/hg/svn/... Repository beziehen

Was ist von Gentoo nicht zu erwarten?

  • Ein offizieller Installer :)
  • Sofort überall die neusten Versionen (etwas schwierig bei 200 Entwicklern und 16k Paketen)
  • Jemanden, der das Sagen hat

Source: Christopher Nguyen

About

Gentoo Linux Related Docs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors