Portage 2.1 review
DownloadPortage is probably Gentoo's most notable innovation in software management
|
|
Portage is probably Gentoo's most notable innovation in software management. With its high flexibility and enormous amount of features it is frequently seen as the best software management tool available for Linux.
Portage is written in Python and Bash and therefore fully visible to the users as both are scripting languages.
Most users will work with Portage through the emerge tool. This chapter is not meant to duplicate the information available from the emerge man page. For a complete rundown of emerge's options, please consult the man page.
Portage has several additional features that makes your Gentoo experience even better. Many of these features rely on certain software tools that improve performance, reliability, security, ...
To enable or disable certain Portage features you need to edit /etc/make.conf's FEATURES variable which contains the various feature keywords, separated by white space. In several cases you will also need to install the additional tool on which the feature relies.
Not all features that Portage supports are listed here. For a full overview, please consult the make.conf man page.
What's New in This Release:
FEATURES="confcache" integration; global caching to speed up configure calls, requires dev-util/confcache
elog framework and accompanying modules for logging ebuild warnings, errors and general notices. Collects eerror/ewarn/elog/einfo messages.
New elog function (should replace einfo in many cases) version syntax enhancements allowing multiple suffixes and a new 'cvs' prefix for denoting "live sources" ebuilds.
config files as directories enabling more flexible settings management.
Addition of an register_die_hook method that allows ebuild/eclasses to register functions to be called for better debugging on errors.
Addition of pre and post user hookable functions for each ebuild phase, accessible via portage bashrc. Example would be pre_src_unpack .
cache refactoring- runtime improvement from 35% -> 65%.
Intelligently handle and display USE_EXPAND-based IUSE variables.
FEATURES="parallel-fetch". Download in parallel to compilation.
Include a "changed or new" USE flag output when --verbose isn't specified.
Support for splitting out debug information into separate files in /usr/lib{,32,64}.
exec subsystem refactoring (now with less bugs!)
Added sha256 and rmd160 hashes for digests/manifests
Make --emptytree only apply to ${ROOT} rather than always including /.
Allow packages to be upgraded that are only depended on via a "|| ( =cat/pkg-1* =cat/pkg-2* )" construct.
Ebuild output is no longer cut off early when using PORT_LOGDIR.
Distfiles indirection- $DISTFILES access goes through a tmp dir to fail access to files not listed in SRC_URI.
Emerge now uses --resume to restart itself after portage upgrade.
Atomic file updates via the new atomic_ofstream class.
Global updates and fixpackages performance optimizations.
Tests show that file locking is now more reliable.
A bash call stack is printed when an ebuild dies in ebuild.sh.
New rsync option handling by using a generic PORTAGE_RSYNC_EXTRA_OPTS variable
Manifest2 support that will allow digest-* files to be eliminated from the tree.
Portage 2.1 search tags