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.