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)
changes(c) - not implemented yet
check(k) pkgspec - check MD5sums and timestamps of pkgspec’s files
depends(d)
depgraph(g)
files(f)
glsa(a) - not implemented yet
hasuse(h)
list(l)
size(s)
stats(t) - not implemented yet
uses(u)
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 ;-)
Ja we flagach USE używam na początki -* a później tylko dodaję te niezbędne dla ogółu.
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?
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.
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
@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ć.
u mnie confcache byl bardziej szkodliwy od ccache. musialem sie drania pozbyc, a szkoda bo ciekawe narzedzie.
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 :>
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 ;-)
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 :>
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ę ;-)