1

Téma: Instalace balíčku pomocí Gentoo Emerge

Popis jak instaluji z Portage programy, které nejsou v Entropy a mají další závislosti. Jelikož chci instalovat co nejvíce balíky předkompilované a zároveň se vyhnout peklu závislostí v Portage, napadl mě způsob jak instalovat zbytek balíků z Entropy a zároveň se jich po odinstalaci původního programu z Portage zbavit, aniž bych je znal.

Způsob 1:
První provedeme update repozitáře Portage, což není nutné, ale doporučuji, zvláště v Sabayonu, kde se aktualizuje Portage minimálně.

su
emerge --sync

pak provedeme kompilaci/instalaci samotného balíčku bez závislostí. Pokud nepoužijeme parametr -O balíček a všechny závislé by se kompilovaly přes Portage.

emerge -avO <balíček>

Pokud kompilace zkolabuje čtěte níže. Potom pomocí Equo doinstalujeme závislé balíky

equo deptest -a

a balíček syncneme s do Entropy

equo rescue spmsync

Hotovo. Tento postup by byl super, kdyby občas balíček nechtěl mít již při kompilaci závislý balíček nainstalovaný. Potom použiji jiný obtížnější postup. Pro názornost uvedu praktický příklad.

Způsob 2:
Chci instalovat například balíček dev-ruby/deprecated, který není v Entropy a který ale pro kompilaci potřebuje
závislé balíky. Nejdříve zjistím strom závislostí

emerge -vtp dev-ruby/deprecated

pak nainstaluji přes Entropy všechny balíky které se nacházejí co nejvýše ve stromě (kromě samotného balíku deprecated), tedy v tomto případě

equo -a install dev-ruby/rubygems

Ten nainstaluje všechny závislé balíky viditelné ve stromě pod ním. Pak jen stačí zkompilovat samotný požadovaný balík deprecated (neměl by mít žádné závislosti proto nemusíme použít nodeps)

emerge -av dev-ruby/deprecated

Následně smažeme ze souboru řádky se závislými balíčky, které jsme instalovali přes Entropy. V tomto případě dev-ruby/rubygems

/var/lib/portage/world

syncneme balík do Entropy

equo rescue spmsync

Nakonec můžeme vše prověřit

equo deptest -a

Nemělo by to vypsat žádný problém

Výsledek
Proč to všechno. Jak jsem psal výše, nemusíme si pamatovat (psát), že jsme instalovali nějaké programy v Entropy kvůli závislostem a pokud pak odinstalujeme jako v tomto případě dev-ruby/deprecated, všechny závislé balíky můžeme nalézt pomocí skriptu na resolvování zpětných závislostí popsaný zde:
http://forum.sabayon.cz/viewtopic.php?pid=189#p189

Odinstalace pak vypadá takto. Přesto že neznám závislé programy, odinstalují se.

emerge -aC dev-ruby/deprecated

pak sync

equo rescue spmsync

Nyní spustíme skript na vyhodnocení zpětných závislostí, zde uvedu i výstup skriptu. Níže je vidět že skript odinstaluje všechny tři, již zbytečné balíky.

remove-dependencies.sh

Packages that can be removed safely:
dev-ruby/rubygems-1.3.7-r4

Removing packages:
>>  @@ These are the chosen packages:
>>    # (1/1) [sabayonlinux.org] dev-ruby/rubygems-1.3.7-r4 [1.9MB]
>>  @@ Packages involved: 1
     Would you like to calculate dependencies ? [Yes/No] 
>>  @@ These are the packages that would be removed:
>>  ## [sabayonlinux.org] dev-lang/ruby-1.8.7_p302 [9.2MB]
>>  ## [sabayonlinux.org] dev-ruby/rubygems-1.3.7-r4 [1.9MB]
>>  ## [sabayonlinux.org] app-admin/eselect-ruby-20100603 [72.8kB]
>>  @@ Packages needing to be removed: 3
>>  @@ Freed disk space: 11.2MB
>>  @@ Total bandwidth wasted: 2.4MB
     Would you like to proceed ? [Yes/No] 
>>  -- (1/3) >>> dev-lang/ruby-1.8.7_p302
>>    ## Removing data: dev-lang/ruby-1.8.7_p302
>>    ## Removing from Entropy: dev-lang/ruby-1.8.7_p302
>>> Regenerating /etc/ld.so.cache...
>>    ## SPM: post-remove phase
No ruby profiles left on the system. Stale symlinks removed.
>>  -- (2/3) >>> dev-ruby/rubygems-1.3.7-r4
>>    ## Removing data: dev-ruby/rubygems-1.3.7-r4
>>    ## Removing from Entropy: dev-ruby/rubygems-1.3.7-r4
>>> Regenerating /etc/ld.so.cache...
>>    ## SPM: post-remove phase
 * If you have uninstalled dev-ruby/rubygems, Ruby applications are unlikely
 * to run in current shells because of missing auto_gem.
 * Please run "unset RUBYOPT" in your shells before using ruby
 * or start new shells
 * 
 * If you have not uninstalled dev-ruby/rubygems, please do not unset 
 * RUBYOPT
>>  -- (3/3) >>> app-admin/eselect-ruby-20100603
>>    ## Removing data: app-admin/eselect-ruby-20100603
>>    ## Removing from Entropy: app-admin/eselect-ruby-20100603
>>  @@ All done.
>>  @@ Configuration files scan complete.

Dejte vědět jaké máte zkušenosti s vašimi instalacemi.

Luděk

Thumbs up Thumbs down

2

Re: Instalace balíčku pomocí Gentoo Emerge

Následně smažeme ze souboru

/var/lib/portage/world

To není nutné, pokud se použije v emerge "oneshot"

Thumbs up Thumbs down

3

Re: Instalace balíčku pomocí Gentoo Emerge

Je to nutné, protože se jedná o balíky instalované přes Equo a tam parametr oneshot nelze použít.

Luděk

Thumbs up Thumbs down