# [HOWTO-PORTAGE] - Maskowanie galezi portage.

## arsen

Maskowanie galęzi portage.

Howto jest przeznaczone dla ludzi których drażni coś czego nigdy nie będą używać  :Smile: 

Mnie osobiście drażniły gałęzie portage których nigdy nie używałem, wszystkie games, kde, gnome itd.

Ja odchudziłem prawie o 50% swoje portage co wpłyneło też na szybsze syncowanie

Zatem do dzieła.

edytujemy 

```

/etc/make.conf

```

sys-apps/portage-2.1

jeśli posiadamy =<sys-apps/portage-2.0 dopisujemy tam taką oto opcje

```

RSYNC_EXCLUDEFROM="/etc/portage/banned_branches"

```

jeśli posiadamy =>sys-apps/portage-2.1 dopisujemy

```

PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/banned_branches"

```

oczywiście scieżka oraz nazwa pliku dowolna, ja osobiście wole wszystkie konfigi dotyczące portage trzymać w jednym miejscu.

następnie zajmujemy się edycją 

```

/etc/portage/banned_branches

```

maskowanie galęzi jest bardzo proste, oto przykład co może zawierac /etc/portage/banned_branches 

```

games-action

kde-base

kde-misc

xfce-base

xfce-extra

```

po dopisaniu gałęzi które chcemy zamaskować przechodzimy do usuwania zamaskowanych gałęzi wymienionych w

```

/etc/portage/banned_branches

```

Możemy też usunąc całe drzewo portage i wykonać 

```

emerge sync

```

Podczas syncowania zamaskowane drzewa będą pomijane  :Smile: Last edited by arsen on Wed Apr 05, 2006 6:04 am; edited 2 times in total

----------

## crs

 *arsen wrote:*   

> 
> 
> Możemy też usunąc całe drzewo portage i wykonać 
> 
> 

 

Po co usuwać całe drzewo? Szkoda czasu później na jego ponowne ściąganie.

----------

## arsen

napisałem te "możemy" jako opcję jeśli nie zauważyłeś  :Wink: , po samym zamaskowaniu gałęzi ci ich sync nie usunie, oczywiście można ręcznie każdą zamaskowaną gałąż ręcznie wywalać.

----------

## Rav70

Można by ew. nadmienić, że aktualnie maskowanie nie jest jeszcze uwzględniane przy emerge-webrsync.

Pozdr. Rav

----------

## Poe

dzieki arsen, tego było mi trzeba  :Smile:  tylko pytanko, mozna konkretniej zadeklarowac zakres gałęzi? bo tak, chce zamaskowac sobie sys-kernel, gdyz kernelki i tak zawsze mam spoza portage'a, ale w sys-kernel znajduje sie jeszcze linux26-headers, które jednak chcialbym uaktualniac. mozna zamaskowac 'pojedynczo pakiety z sys-kernel, np ck-sources, gentoo-dev-sources, albo zamaskowac sys-kernel z wyłączeniem linux26-headers, chyba rozumiecie o co mi chodzi, bo tak zagmatwałęm trochę  :Wink: 

----------

## arsen

przyznam że nie probowałem maskować podgalęzi, nie wiem czy to możliwe, będe w domu to się rozeznam.

----------

## Poe

wiec dla zainteresowanych (sądze, ze dla Ciebie tez, arsen  :Wink:  ). przetestowałem z pojedynczymi "gałązkami" portagea i dodałem na próbę do /etc/portage/banned_branches sys-kernel/ck-sources i gentoo-sources, po tym usunąłem te 2 foldery i zrobilem synca. po syncu folderów tych nadal nie ma = maskowanie działą równiez na galęzie gałęzi  :Wink: 

greetz

----------

## bacouch

 *Poe wrote:*   

> dzieki arsen, tego było mi trzeba  tylko pytanko, mozna konkretniej zadeklarowac zakres gałęzi? bo tak, chce zamaskowac sobie sys-kernel, gdyz kernelki i tak zawsze mam spoza portage'a, ale w sys-kernel znajduje sie jeszcze linux26-headers, które jednak chcialbym uaktualniac. mozna zamaskowac 'pojedynczo pakiety z sys-kernel, np ck-sources, gentoo-dev-sources, albo zamaskowac sys-kernel z wyłączeniem linux26-headers, chyba rozumiecie o co mi chodzi, bo tak zagmatwałęm trochę 

 

Ja wiem o co ci chodzi i bhyba da sie tylko mi powiedz jak sie robi patche, to go przyzadze (nie jest to w sumie duza zmioana wiec jak ktos chce to moge po prostu na forum napisac zmiany).

wystarczy jeszcze tylko dodac 

```
RSYNC_INCLUDEFROM="/etc/portage/notbanned_branches"
```

 i tam wpisujemy te galezie ktore jednak maja byc sciagniete. Dzieki temu powinno byc mozna usunac wszystko z sys-kernel oprocz linux-headers. Nie testowalem tego jeszcze wiec nie jestem pewien czy zadziala.

----------

## Poe

 *bacouch wrote:*   

> 
> 
> Ja wiem o co ci chodzi i bhyba da sie tylko mi powiedz jak sie robi patche, to go przyzadze.

 

ee? patcha robisz diffem, bierzesz jakis plik bazowy, kopiujesz go, zmieniasz w nim co trzeba i potem diffem generujesz patcha. pokaze Ci jak to dziala na najlatwiejszym dla mnie przykladzie, kiedy czasami robie patche kernelkowe.. mam katalog kernel1 gdzie mam juz rozpakowane zrodla i ponakladane patche i kernel2 gdzie mam czyste zrodla bazowe w tej samej wesrji. potem tylko

```

diff -Naur --exclude="*.orig" --exclude="*.rej" kernel1 kernel2 >> nazwa.patch

```

o ile pamietam to tak, wlasnie diffem generujesz patcha, bo on porównuje pliki, i jezeli sa w nich roznice wypisuje w takiej postaci

```

+ bla bla bla bla bla

- xxxxx zzzz xxxxxx

```

czyli ma dodac w odpowiednim miejscu bla bla bla bla bla i usunac stamda linie xxxxx zzzz xxxxx

 :Smile: 

poza tym, bacouch, przeciez ja juz sobie poradzilem z gałeziami gałęzi  :Wink: 

----------

## bacouch

```

--- /usr/lib/portage/bin/emerge.orig    2005-04-11 17:25:18.488476136 +0200

+++ /usr/lib/portage/bin/emerge 2005-04-11 17:27:46.194021480 +0200

@@ -2388,6 +2388,12 @@

                        else:

                                print "!!! RSYNC_EXCLUDEFROM specified, but file does not exist."

+               if portage.settings.has_key("RSYNC_INCLUDEFROM"):

+                       if os.path.exists(portage.settings["RSYNC_INCLUDEFROM"]):

+                               rsync_flags.append("--include-from="+portage.settings["RSYNC_INCLUDEFROM"])

+                       else:

+                               print "!!! RSYNC_INCLUDEFROM specified, but file does not exist."

+

                if portage.settings.has_key("RSYNC_RATELIMIT"):

                        rsync_flags.append("--bwlimit="+portage.settings["RSYNC_RATELIMIT"])

```

Pozatym znalazlem inny sposob: jezeli przed nazwa jest "+" to ta galaz bedzie, czyli np plik /etc/portage/banned_branches moze w twoim wypadku wygladac

```
sys-kernel/*

+sys-kernel/linux-headers
```

Po wiecej informcji polecam man rsync, dokladnie to dzial EXCLUDE PATTERNS

----------

## s!l3ntboy

A u mnie dla odmiany próbowałem zamaskować podgałęzie kdeedu i kdetoys i kiedy to wykonałem usunąłem owe pakiety, usunąłem foldery w portage i gdy próbuję aktualizować system (emerge -uD world) wyskakuje mi coś takiego:

```

Calculating world dependencies /

emerge: there are no ebuilds to satisfy "~kde-base/kdetoys-3.4.2".

!!! Problem with ebuild kde-base/kde-3.4.2

!!! Possibly a DEPEND/*DEPEND problem.

!!! Depgraph creation failed.

```

Wychodzi na to, że chyba się nie da zamaskować podgałęzi KDE. No chyba, że macie jakiś pomysł to byłbym bardzo wdzięczny   :Wink: 

----------

## milu

Coś w systemie chce byś to miał zainstalowane. Spróbuj sprawdzić co to może być za pomocą emerge -pvut world.

----------

## Raku

 *s!l3ntboy wrote:*   

> A u mnie dla odmiany próbowałem zamaskować podgałęzie kdeedu i kdetoys i kiedy to wykonałem usunąłem owe pakiety, usunąłem foldery w portage i gdy próbuję aktualizować system (emerge -uD world) wyskakuje mi coś takiego:
> 
> ```
> 
> Calculating world dependencies /
> ...

 

usunąłeś i zamaskowałeś kdeedu i kdetoys, i chcesz zainstalować kde-base/kde ?

wyjaśnię to na przykładzie, co właśnie zrobiłeś: stwierdziłeś, że nie potrzebujesz kół ani kierownicy w samochodzie, więc je usunąłeś, po czym wsiadłeś do samochodu i dziwisz się, że nie chce on jechać. Jazda takim autem jest możliwa, ale musisz przerobić jego konstrukcję tak, by poruszał się napędem poduszkowym a sterowanie odbywało się za pomocą głosu.

----------

## s!l3ntboy

No właśnie chodzi o to, że zamaskowałem i usunąłem owe składniki, KDE mam już zainstalowane i nie mam zamiaru instalować raz jeszcze   :Wink:  . Mogę update'ować go, ale na pewno nie mam zamiaru instalować raz jeszcze. 

Po prostu podczas aktualizacji systemu domaga się on kdetoys mimo, że to zamaskowałem i usunąłem.

Trochę pokrętnie napisałem, ale pewnie zrozumiecie o co chodzi  :Wink:  .

Chciałbym tylko wiedzieć czy muszę właśnie jak napisał raku przerabiać konstrukcję czy może coś "pocudować" jeszcze innego, prostszego?

----------

## Raku

zawsze możesz usunąć pakiet kde-base/kde i dodać do worlda pozostałe w systemie pakiety będące zależnością kde-base/kde

----------

## arsen

 *bacouch wrote:*   

> 
> 
> Pozatym znalazlem inny sposob: jezeli przed nazwa jest "+" to ta galaz bedzie, czyli np plik /etc/portage/banned_branches moze w twoim wypadku wygladac
> 
> ```
> ...

 

ten sposób nie działa, podczas syncowania dostaje w ten sposób pusty katalog danej gałęzi, w środku brak ebuildów.

----------

## sebas86

Arsen do tego how-to możesz dorzucić coś, że aby sprawdzić, których gałęzi nie powinniśmy nawet ruszać bo system z nich korzysta, sprawdzić w /var/db/pkg. Jeden z bezpieczniejszych sposobów na eliminowanie całych gałęzi.  :Wink: 

----------

## patpi

 *sebas86 wrote:*   

> Arsen do tego how-to możesz dorzucić coś, że aby sprawdzić, których gałęzi nie powinniśmy nawet ruszać bo system z nich korzysta, sprawdzić w /var/db/pkg.

 

w moim przypadku by sie nie sprawdzilo (instalowane i odinstalowane niedlugo pozniej xfce, inne pakiety podobnie) W /var/db/pkg mam wpisy ktore blednie podpowiedzialyby mi czego nie maskowac

----------

## sebas86

Trzeba usuwać czasami puste katalogi.  :Wink:  Pamiętaj to od Ciebie zależy porządek na dysku. Zresztą to tylko propozycja, może istnieje inny sposób na uzyskanie tych samych informacji. W końcu jak ktoś ma zamiar eksperymentować z oprogramowaniem niech w ogóle nie rusza portage.  :Smile: 

Szkoda, że nie ma jakiegoś sposobu na identyfikacje pakietów zależnych od zamaskowanej częsci drzewa. Dzięki temu odchudziłbym wszystko co np. wymaga Qt. Tzn. sposób już jest ale na razie pracochłonny.  :Rolling Eyes: 

----------

## Piecia

Hej 

Znalazłem wolną chwilę i skorzystałem z okazji posiadania 2 komputerów. Na jednym uruchomiłem serwer rsync i zacząłem eksperymentować

Dla przykładu /etc/portage/rsync_excludes

```

+ xfce-extra/*

+ xfce-extra/*/*

+ app-dicts/aspell-pl

+ app-dicts/aspell-pl/*

*/*
```

Zgodnie z man rsync jeśli zapisujemy do pliku dane(informacje) które mają być dołączone include musimy je poprzedzić '+ ' (plus i spacja). Jeśli to będzie plik mieszany to dane wyłączone exclude muszą być poprzedzone '- ' (minus i spacja) (to chyba niepotrzebne, bo w końcu umieszczamy w tym pliku to co nas nie interesuje)

Powyższy przykład wszystko wyłącza */* i aby coś dodać musi być umieszczone na początku. I teraz jeśli chcemy dołączyć całą gałąź najpierw za pomocą jednego * dołączamy podgałęzie. emerge rsync ściągnie tylko katalogi. Dlatego chcąc pobrać jeszcze ebuildy należy w następnej lini dodać jeszcze jeden *. (dziwne ale od razu dodanie gałąź/*/* nie ściagnie tego co zamierzamy).

No i analogicznie dla konkretnej pogałęzi. 

```

+ app-dicts/aspell-pl

+ app-dicts/aspell-pl/*

```

Ściąga katalog aspell-pl i ebuildy dla niego.

No dobra ten przykład był troszkę dziwny bo kto nie dopuści wszytkiego by potem się w bawić w pojedyncze gałęzie/podgałęzie. Dlatego też:

```

+ kde-base/kde-env

+ kde-base/kde-env/*

kde-base/*

kde-misc/*

```

Uaktualniamy całe drzewko, kde mówimy nie z wyjątekiem kde-env które jest chyba wymagane przez kadu (będzie tak jak wcześniej powiedzili, czyli pozostanie w drzewku pusty katalog kde-misc oraz troszkę to dziwne ale aby wykluczyć całą gałąź należy podać gałąź/*). 

Zastanawiam się czy brakujące pakiety można by było umieścić w /var/db/pkg via emerge -i lub /etc/portage/package.provided, ale pewnie wówczas narobił się straszny bałagan.

No i na koniec pozostało jeszcze */podgałąź, ale czy takie coś ma sens?

```

+ kde-base/kde-env

kde-base/*

kde-misc/*

```

I taki zapisa uważam za poprawny, to co wcześniej napisałem to troszkę źle. Brakuje mi bbcodu przekreślenia.

edit:usunięto i poprawiono

dla przykładu mój rsync_excludes

```

+ kde-base/kde-env

+ kde-base/kde-env/*

kde-misc/*

kde-base/*

+ xfce-extra/terminal

+ xfce-extra/terminal/*

+ xfce-extra/exo

+ xfce-extra/exo/*

+ xfce-base/libxfce4util

+ xfce-base/libxfce4util/*

+ xfce-base/libxfcegui4

+ xfce-base/libxfcegui4/*

+ xfce-base/libxfce4mcs

+ xfce-base/libxfce4mcs/*

xfce-base/*

xfce-extra/*

+ app-dicts/aspell-pl

+ app-dicts/aspell-pl/*

+ app-dicts/aspell-en

+ app-dicts/aspell-en/*

app-dicts/aspell-*

+ app-dicts/ispell-pl

+ app-dicts/ispell-pl/*

app-dicts/ispell-*

app-dicts/stardict*

app-dicts/vdict*

app-dicts/freedict*

net-im/kadu

sys-apps/baselayout

sys-apps/baselayout-vserver

sys-apps/baselayout-darwin

sys-apps/baselayout-lite

+ app-i18n/man-pages-pl

+ app-i18n/man-pages-pl/*

app-i18n/man-pages-*

app-laptop/*

app-mobilephone/*

dev-ada/*

app-emacs/*

app-xemacs/*

media-plugins/xmms*

media-sound/xmms*

net-dialup/*

net-wireless/*
```

Last edited by Piecia on Sun Mar 26, 2006 8:45 pm; edited 1 time in total

----------

## ilny

Wraz z portage w werjsi 

```
1_pre7-r1
```

 zauważyłem, że podczas syncowania 

```
Using PORTAGE_RSYNC_OPTS instead of hardcoded defaults

WARNING: usage of RSYNC_EXCLUDEFROM is deprecated, use PORTAGE_RSYNC_EXTRA_OPTS instead

```

Więc myślę, że przydałaby się mała aktualizacja tego HOW-TO   :Wink:   :Very Happy: 

----------

## Nomen

Nie polecam maskować gałęzi kde lub gnome. Czasem można tam znaleźć kilka fajnych programów. Oczywiście to kwestia gustu. ale ja na np. lubie krusadera pod xami, poza nimi mc. Games - ok ,to już można zamaskować ,ale generalnie ..... hmm jeśli stawiasz serwer lub maszynę do konkretnych zadań to ma jakiś sens ,w innym wypadku sory Winetoo ,ale nie popieram.

----------

## Poe

 *Nomen wrote:*   

> Nie polecam maskować gałęzi kde lub gnome. Czasem można tam znaleźć kilka fajnych programów. Oczywiście to kwestia gustu. ale ja na np. lubie krusadera pod xami, poza nimi mc. Games - ok ,to już można zamaskować ,ale generalnie ..... hmm jeśli stawiasz serwer lub maszynę do konkretnych zadań to ma jakiś sens ,w innym wypadku sory Winetoo ,ale nie popieram.

 

Oplaca sie oplaca nie tylko na sewrweach. nie trzeba maskowac calej galezi. mozna pojedyncze programy. KAWAŁEK mojego banned_branches wyglada tak

```

[...]

sys-kernel/usermode-sources

sys-kernel/vanilla-sources

sys-kernel/vserver-sources

sys-kernel/win4lin-sources

sys-kernel/wolk-sources

sys-kernel/xbox-sources

sys-kernel/git-sources

sys-kernel/kurobox-sources

sys-kernel/openblocks-sources

sys-kernel/openvz-sources

sys-kernel/sh-sources

sys-kernel/suspend2-sources

sys-kernel/xen-sources

x11-wm/aewm

x11-wm/aewm++

x11-wm/aewm++-goodies

x11-wm/afterstep

x11-wm/flwm

x11-wm/evilwm

x11-wm/golem

[...]

```

Mam praktycznie wszystkie sourcesy wywalone (zostawione tylko linux-headers), wmow tez tylko kilka zostawilem, bo i tak wiem ze uzywac tego nie bede. IMHO banowanie niektorych galezi jest naprawde swietnym pomyslem, choc przydala by sie jakas zmienna, ktora by banowala wszystko z foo-bar za wyjątkiem pakietów X, Y, Z, zeby nie trzeba bylo dodawac do banned_branches 1298 pakietów z foo-bar poprzez foo-bar/X foo-bar/Y itd tylko dlatego, ze akurat foo-bar/U musimy sobie zostawić... chyba rozumiecie o co chodzi  :Wink: 

----------

## doman

Hej  :Smile: 

Czy ktoś mi wytłumaczy co robię źle ?

Mam portage w wersji  2.1_pre7-r2

Wpis wygląda tak:

```

Gentoo ~ # grep RSYNC /etc/make.conf

PORTAGE_RSYNC_EXTRA_OPTS="/etc/portage/banned_branches" #zamaskowane galezie

Gentoo ~ # cat /etc/portage/banned_branches

app-laptop

app-vim

app-emacs/*

app-xemacs/*

dev-embedded/*

dev-php

dev-php4

dev-php5

dev-tex

net-dialup

net-wireless

sec-policy

sci-astronomy

sci-biology

sci-calculators

sci-chemistry

sci-geosciences

sci-mathematics

www-apache
```

Skasowałem wybrane gałęzie, ale kiedy wykonuję emerge --sync dostaję coś takiego:

 *Quote:*   

> Gentoo ~ # emerge --sync
> 
> Using PORTAGE_RSYNC_OPTS instead of hardcoded defaults
> 
> >>> Starting rsync with rsync://140.105.134.102/gentoo-portage...
> ...

 

 :Rolling Eyes: 

----------

## Raku

użyj innego serwera

----------

## doman

 *Raku wrote:*   

> użyj innego serwera

 

zmieniłem na:

```
SYNC="rsync://gentoo.prz.rzeszow.pl/gentoo-portage"
```

i wciąż to samo  :Sad: 

----------

## ilny

A czy ten wpis nie powinien wygladac tak : 

```
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"
```

Żadnych warn ani nic emerge --sync przy nim nie pokazuje ale w rsync_excludes mam wpisane wszystkie games-* a po syncowaniu i tak znajduja się w /usr/portage/ hmmm ?   :Wink: 

----------

## KeyBi

 *ilny wrote:*   

> Żadnych warn ani nic emerge --sync przy nim nie pokazuje ale w rsync_excludes mam wpisane wszystkie games-* a po syncowaniu i tak znajduja się w /usr/portage/ hmmm ?  

 

Spróbuj z 

```
games-*/
```

Ten slash jest ważny z tego co zauważyłem  :Smile: 

----------

## doman

ilny - dzięki, teraz już wszystko się syncuje a w /usr/portage nie mam tego co nie chcę  :Smile: 

----------

## ilny

KeyBi no teraz gra i buczy dzieki  :Smile: 

doman prosze :]

----------

## arsen

zrobiłem mały update tego howto, teraz powinno być prawidłowo  :Smile: 

----------

## akroplas

 *arsen wrote:*   

> 
> 
> jeśli posiadamy =>sys-apps/portage-2.1 dopisujemy
> 
> ```
> ...

 

Brakuje kończącego cudzysłowu[tak sie to pisze?]  :Smile: 

Pozdrawiam

----------

## arsen

racja, poprawione, thx.

----------

## BeteNoire

Powiedzmy, że chcę wyłączyć całe x11-wm z wyjątkiem x11-wm/fluxbox, x11-wm/e, x11-wm/fvwm. Jak to zrobić? Próbowałem analogicznie do exclude podać include ale nie działa.

----------

## Poe

 *BeteNoire wrote:*   

> Powiedzmy, że chcę wyłączyć całe x11-wm z wyjątkiem x11-wm/fluxbox, x11-wm/e, x11-wm/fvwm. Jak to zrobić? Próbowałem analogicznie do exclude podać include ale nie działa.

 

niestety, tez się nad tym dużo glowilem, ale pozostaje chyba jednak ręczne wyłączanie przysłowiowych 99 pakietów, żeby pakiet #100 został i mam takie pobanowane gałęzie (kawałek dla przykładu)

```

[...]

sys-kernel/kurobox-sources

sys-kernel/openblocks-sources

sys-kernel/openvz-sources

sys-kernel/sh-sources

sys-kernel/suspend2-sources

sys-kernel/xen-sources

x11-wm/aewm

x11-wm/aewm++

x11-wm/aewm++-goodies

[...]

```

nie potrzebuje zadnych sourcesów, ale całego sys-kernel nie moge zamaskowac ze wzgledu na linux-headers, więc musiałem ręcznie dodac do bannedbranches wszystkie sourcesy za wyjątkiem linux-headers. to tak na przykład.

----------

## Piecia

Nie chce byc upierdliwy ale wrocie kilka postow wstecz i poczytajacie co napisalem i zobaczycie ze mozna przepuscic tylko jeden pakiet a reszte zamaskowac. Ja w ten sposob mam zazanczone tylko 3 pakiety xfce-base/libxfce*.

----------

## tboloo

Może ktoś by się tym zainteresował https://forums.gentoo.org/viewtopic-t-55031.html i zupdejtował skrypt do aktualnego portage ? Ja próbowałem, ale troche mi jeszcze umiejętności brakuje ...

----------

## BeteNoire

 *Piecia wrote:*   

> Nie chce byc upierdliwy ale wrocie kilka postow wstecz i poczytajacie co napisalem i zobaczycie ze mozna przepuscic tylko jeden pakiet a reszte zamaskowac. Ja w ten sposob mam zazanczone tylko 3 pakiety xfce-base/libxfce*.

 

Nie jesteś upierdliwy. Specjalnie odświeżyłem wątek, żeby inni wypowiedzieli się na ten temat. Ale masz rację, Twój sposób działa - dzięki.

Przetestowałem to na przykładzie app-doc/xorg-docs jako jedynej, obecnej w moim systemie zależności z gałęzi app-doc:

```
+ app-doc/xorg-docs

+ app-doc/xorg-docs/*

app-doc/*
```

I już drzewko o 3 mb lżejsze.

I tu sugestia do @arsena, żeby znów zupdatował howto  :Wink: 

----------

