Zarządzanie i praca z Portage

Zainspirowany notką u yoshiego postanowiłem pokazać mój make.conf oraz opisać narzędzia których używam do pracy z portage.

make.conf


# Bezpieczne flagi kompilatora, ricowanie w tym miejscu nie ma sensu
# CHOST zależy od architektury
CFLAGS="-Os -march=athlon-xp -fomit-frame-pointer -pipe -s"
CXXFLAGS="${CFLAGS}"
CHOST="i686-pc-linux-gnu"

# Flagi USE, jak widać można używać tutaj zmiennych
USE="dri jpg kdeenablefinal nptl nptlonly -arts -gnome -gtk -xmms -esd unicode tiff -gstreamer bash-completion fam kdehiddenvisibility jpeg png gif kdexdeltas -ldap $OGG_USE $OTHERS"
OGG_USE="ogg oggvorbis vorbis"
OTHERS="offensive"

# Zmienne odpowiedzialne za polonizacje
LINGUAS="en pl"
LANG="pl_PL"

# Priorytet kompilacji (19 pozwala swobodnie korzystać z komputera podczas kompilacji) oraz
# parametry dla make:
# -j2 (powinno się ustawić ilość rdzeni +1),
# -s (skracanie wyjścia - zwiększa czytelność)
PORTAGE_NICENESS="19"
MAKEOPTS="-j2 -s"

# Support dla pakietów z gałęzi 'testing',
# czas po jakim emerge zacznie usuwać pakiety (przy emerge -C foo),
# ficzery dla portage (parallel-fetch uruchamia ściąganie w tle, bardzo przydatne!)
ACCEPT_KEYWORDS="x86 ~x86"
CLEAN_DELAY="5"
FEATURES="parallel-fetch"
SEARCH_DIRS_MASK="/opt"

# Ścieżki overlay oraz serwera rsync
PORTDIR_OVERLAY="/usr/local/overlays/overlay /usr/local/overlays/nelchael /usr/local/overlays/xgl-coffee"
SYNC="rsync://rsync.de.gentoo.org/gentoo-portage"

# Spis modułów dla xorg
VIDEO_CARDS="nv nvidia"
INPUT_DEVICES="mouse keyboard evdev"

# Zmienne odpowiedzialne za logowanie
PORTAGE_ELOG_SYSTEM="save"
PORTAGE_ELOG_CLASSES="warn error info log"

# Wpis potrzebny do działania laymana
source /usr/portage/local/layman/make.conf

eix

eix jest to aplikacja, która zastępuje standardowe emerge -s foo. Jest o wiele szybsza i posiada pare udogodnień, których brakuje emerge. Przykład wyjścia:

[~] # eix -l ^net-im/psi$

[I] net-im/psi
Available versions:
0.10
0.10[1]
0.10-r1
0.10-r1[2]
[M] 0.11_pre20061020
Installed: 0.10-r1[20:13:51 01/10/06][ssl crypt -xscreensaver extras -xmms -insecure-patches -linguas_ar -linguas_bg -linguas_ca -linguas_cs -linguas_da -linguas_de -linguas_el -linguas_eo -linguas_es -linguas_et -linguas_fi -linguas_fr -linguas_it -linguas_hu -linguas_mk -linguas_nl linguas_pl -linguas_pt -linguas_pt_BR -linguas_ru -linguas_se -linguas_sk -linguas_sl -linguas_sr -linguas_sw_TZ -linguas_vi -linguas_zh]
Homepage: http:/psi-im.org/
Description: QT 4.x Jabber Client, with Licq-like interface

[1] /usr/local/overlays/overlay
[2] /usr/local/overlays/nelchael

Jak widać w wyszukiwaniu można używać regexpów; eix koloruje wyjście oraz wcina tekst co bardzo zwiększa czytelność.

gentoolkit

W skład gentoolkit wchodzą eclean, equery, eread, euse, glsa-check i revdep-rebuild. Najbardziej przydatne są: equery oraz revdep-ebuild. revdep-rebuild służy do sprawdzania i przebudowania pakietów w przypadku problemów z bibliotekami (niespójność ABI, wymagana inna wersja itp.). Equery natomiast to bardzo ciekawy program, którego funkcjonalność przybliży jego standardowe wyjście:

belongs(b) files… - list all packages owning files…
changes(c) - not implemented yet
check(k) pkgspec - check MD5sums and timestamps of pkgspec’s files
depends(d) pkgspec - list all direct dependencies matching pkgspec
depgraph(g) pkgspec - display a dependency tree for pkgspec
files(f) pkgspec - list files owned by pkgspec
glsa(a) - not implemented yet
hasuse(h) useflag - list all packages with useflag
list(l) pkgspec - list all packages matching pkgspec
size(s) pkgspec - print size of files contained in package pkgspec
stats(t) - not implemented yet
uses(u) pkgspec - display USE flags for pkgspec
which(w) pkgspec - print full path to ebuild for package pkgspec

Ja najcześciej używam belongs, depends, files oraz list. Nie wyobrażam sobie używania portage bez gentoolkit, chyba że..

portage-utils

gentoolkit ma bardzo rozbudowane możliwości ale podobnie jak emerge napisany jest w pythonie co przekłada się w tym przypadku na słabą szybkość. portage-utils z kolei napisany jest w C++ i działa błyskawicznie. W skład pakietu wchodzą:

qatom 'pkg' : split atom strings
qcache 'action' 'args' : search the metadata cache
qcheck 'pkgname' : verify mtimes/digests
qdepends 'pkgname' : show dependency info
qfile 'filename' : list all pkgs owning files
qglsa 'action' 'list' : check GLSAs against system
qgrep 'misc args' : grep in ebuilds
qlist 'pkgname' : list files owned by pkgname
qlop 'pkgname' : emerge log analyzer
qmerge 'pkgnames' : fetch and merge binary package
qpkg 'misc args' : manipulate Gentoo binpkgs
qpy 'misc args' : python interface
qsearch 'regex' : search pkgname/desc
qsize 'pkgname' : calculate size usage
qtbz2 'misc args' : manipulate tbz2 packages
quse 'useflag' : find pkgs using useflags
qxpak 'misc args' : manipulate xpak archives

Funkcjonalność bardzo zbliżona do equery ale w szybszym wydaniu.

layman

layman to aplikacja, która pozwala zarządzać nakładkami na portage (ang. overlay). Do wyboru mamy kilkanaście w tym np. sunrise, w którym to znajduję się opisywany przeze mnie niżej program elogv.

elogv

Do przeglądania logów emerge istnieją trzy bardzo przyjemne narzędzia (znajdują się w sunrise overlay): elogv, elogviewer oraz kelogviewer. Drugi i trzeci mają interface graficzny (odpowiednio w GTK2 i QT), pierwszy używa ncurses; polecam go ze względu na minimalizm i wygodę (na tej samej zasadzie wole emerge od kuroo itp.).

genlop

Dzięki genlopowi dowiemy się o czasie instalacji programów. Co więcej, jeżeli instalowaliśmy już kiedyś dany app (wersja nie ma znaczenia) to powie nam on ile mniej więcej zajmie instalacja. Niestety nie uwzględnia obciążenia maszyny ale zawsze lepsze coś niż nic ;) Przykładowe wyjście:

[~] # genlop -t net-im/psi-0.10-r1
* net-im/psi

Sun Oct 1 20:14:11 2006 >>> net-im/psi-0.10-r1
merge time: 8 minutes and 53 seconds.

genlop może nam również podać czas aktualnej kompilacji oraz ETA (genlop -c). Przy upgradzie większej ilości pakietów bardzo przydatne okazać się może emerge -pvuDN world |genlop -pt. Nie przedstawiłem tu wszystkich możliwości tego programu (jak i innych), po więcej zajrzyjcie do mana.

app-portage

Opisałem programy, których sam używam, lecz istnieje jeszcze pare innych, które pomogą Wam w zarządzaniu portage. Należą do nich: abeni, cfg-update, conf-update, deltup, emerge-delta-webrsync, emool, epm, esearch, euses, flagedit, g-cpan, genflags, gentoolkit-dev, getdelta, herdstat, kentoo, kuroo, metagen, mirrorselect, perl-info, portage-manpages, portagemaster, portage-mod_jabber, portage-prefpane, porthole, profuse, splat, udept, ufed. Ja albo ich nie potrzebuje albo po prostu nie lubie ;-)

10 Responses to “Zarządzanie i praca z Portage”


  1. Gravatar Icon 1 citizen Oct 22nd, 2006 at 7:09 pm

    Ja we flagach USE używam na początki -* a później tylko dodaję te niezbędne dla ogółu.

  2. Gravatar Icon 2 SebaS86 Oct 22nd, 2006 at 7:13 pm

    Chyba każdy po pewnym czasie musi sobie wypracować pewne udogodnienia w systemie. :-)

    # Flagi USE, jak widać można używać tutaj zmiennych
    znajomość BASH-a popłaca, stosuję od dawna tylko w dużo bardziej rozbudowanej postaci. Naprawdę można sobie bardzo ładnie poukładać niezbędne flagi ze względu na ich właściwości.

    # gentoolkit
    bardzo rzadko używane ale jednak, nie można przecenić wartości tego pakietu.

    # layman
    coś czego brakowało mi z Debiana, łatwe zarządzanie dodatkowymi repozytoriami.

    # elogv
    Co potrafi elogv, bo wyświetlić samego loga mogę dowolnym edytorem? Potrafi jakoś interpretować zawartość, dzielić wg. zadanego kryterium?

  3. Gravatar Icon 3 rasheed Oct 22nd, 2006 at 8:48 pm

    Nie martwisz się o ścieżki, możesz sortować, usuwać dane logi, koloruje składnie.

    Może niezbyt dużo ale ułatwia przeglądanie.

  4. Gravatar Icon 4 Green Oct 22nd, 2006 at 10:23 pm

    Jeśli korzysta się z gałęzi testowej i dużo rekompiluje, to do FEATURES warto dorzucić opcję ‘ccache’. Pozwala to ponowną kompilację danego pakietu przeprowadzić 5 - 10 razy szybciej.

    BTW, na mój sposób użytkowania Gentoo najbardziej wpłynął ten artykuł: http://www.linux.com/article.pl?sid=06/08/07/1952207

  5. Gravatar Icon 5 rasheed Oct 23rd, 2006 at 12:15 am

    @Green:

    Używałem ccache ale coś się psuło przy niektórych pakietach i wywaliłem. Aaa, racja - jeszcze miejsca wtedy potrzebowałem.

    W sumie ccache fajna rzecz, mogę polecić.

  6. Gravatar Icon 6 yoshi314 Oct 23rd, 2006 at 5:48 pm

    u mnie confcache byl bardziej szkodliwy od ccache. musialem sie drania pozbyc, a szkoda bo ciekawe narzedzie.

  7. Gravatar Icon 7 wariat Nov 14th, 2006 at 8:30 pm

    A ma ktoś pomysł dlaczego elogv może nie działać? Znaczy działa, pokazuje jakie mam logi, ale już zawartość tych logów to nie koniecznie
    normalnie używam elogviewer (tego pod GTK) ale teraz mam zapotrzebowanie, żeby pooglądać logi zdalnie na innym komputerze, zmergowałem elogv i … nic :>

  8. Gravatar Icon 8 wariat Nov 14th, 2006 at 10:00 pm

    Dobra nie było pytania … chyba, znaczy już działa, samo mu przeszło … dziwne ale może coś było nie QL i sie naprawiło w trakcie emerge -av –newuse world… ważne, że działa ;-)

  9. Gravatar Icon 9 wariat Nov 15th, 2006 at 4:32 am

    BTW …

    # Flagi USE, jak widać można używać tutaj zmiennych
    USE=”dri jpg kdeenablefinal nptl nptlonly -arts -gnome -gtk -xmms -esd unicode tiff -gstreamer bash-completion fam kdehiddenvisibility jpeg png gif kdexdeltas -ldap $OGG_USE $OTHERS”
    OGG_USE=”ogg oggvorbis vorbis”

    jak to działa? Bo na logikę wartość zmiennej ${OGG_USE} jest ustawiana już po ustawieniu zmiennej ${USE} więc IMO działać nie powinno :>

  10. Gravatar Icon 10 rasheed Nov 15th, 2006 at 12:50 pm

    Mhm, USE chyba nie jest ustawiane w systemie. Po prostu emerge gdy potrzebuje to bierze informacje z /etc/make.conf parsując cały plik jak leci.

    Innej możliwości - skoro to działa - nie widzę ;-)

Leave a Reply