Amb aquest post vull iniciar una sèrie de posts sobre PKGSRC, ja que crec que es un sistema de paquets molt bó, molt despreciat i poc conegut per la majoria de gent.
Avui no faré cap introducció, ja que me l'estic preparant per fer-la més endavant i ben ordenada

. Per més informació:
>>
www.pkgsrc.org
pkg_alternatives és una eina administrativa per pkgsrc creada per
jmmv. La tasca d'aquesta eina es la de manejar uns wrappers per a llençar altres programes.
Potser aixi de botepronto sembla una mica abstracte... pero anem a posar alguns exemples.
Imaginem que tenim 3 maquines virtuals de Java instal.lades desde pkgsrc. Pero volem fer servir només una. El metode tradicional i marranu consisteix en modificar la variable PATH (dic marrano, pq es una variable d'entorn i pot ser modificada per procesos fills i fer petar scripts, etc.
Doncs bé, pkgsrc marca amb un fitxer
+ALTERNATIVES els paquets que proposen alternatives a d'altres, com poden ser el nvi i el vim, doncs amb pkg_alternatives podriem escollir quin volem utilitzar quan cridem a "vi" o a "ex".
pkg_alternatives permet treballar com a root o com a user, ja que ell mateix creara en el home a l'estil
autopackage el bindir. Aixi cada usuari pot configurar-se l'entorn al seu gust.
Tot aixo ho fa mitjançant uns wrappers en shell script que criden al path enllaçat pel
+ALTERNATIVES. En el fons té una certa semblança amb pkg_view ja que ofereix accés a certes aplicacions i treure'n la d'altres com si fossin "vistes", pero pkg_view consisteix en diferentes versions del mateix paquet i pkg_alternatives en alternatives de la mateixa funcionalitat (kaffe-gcj-sun-ibm, vim-nvi).
Fem-hi una vista per sobre:
console:
$ pkg_alternatives list # list all packages using pkg_alternative.
pkg_alternatives: looking for alternatives in `/var/db/pkg'
python23-pth-2.3.4nb3
vim-6.3.045nb1
$ pkg_alternatives status vim
`bin/ex' points to `/usr/pkg/bin/vim -e'
candidate: /usr/pkg/bin/vim -e
`bin/vi' points to `/usr/pkg/bin/vim'
candidate: /usr/pkg/bin/vim
`bin/view' points to `/usr/pkg/bin/vim -R'
candidate: /usr/pkg/bin/vim -R
$
$ pkg_alternatives auto vim # use this alternative view.
pkg_alternatives: no existing configuration for `bin/ex'; nothing to be done
pkg_alternatives: no existing configuration for `bin/vi'; nothing to be done
pkg_alternatives: no existing configuration for `bin/view'; nothing to be done
$
Com podeu veure el que fa es que els scripts 'vi', 'ex' i 'view' cridin a vim amb certs arguments. Es a dir..una alternativa

.
Un cop vista la part practica no m'he pogut estar de magrejar i veure com funciona per sota i treure una versio nova del
pkg_fake. Una utilitat que estic fent per pkgsrc que esta disponible al tree de
pkgsrc-wip.
La primera versió de pkg_fake suporta la creació i manteniment de paquets falsos, es a dir, nosaltres instalem a manija el firefox a /usr/pkg/firefox (per exemple), pero clar, volem que pkgsrc cregui que allo es la instal.lacio del firefox de pkgsrc, i aixi ens estalviem dependencies d'altres programes que depenguin d'ell. ja que estem dient a pkgsrc que allo ja existeix a la base de dades de paquets.
pkg_fake funciona de forma paral.lela a pkgsrc, no es carrega res ni embruta cap dada original, pero cal anar amb compte ja que es una eina administativa un pel
tricky.
Tanmateix podem instalar tarballs a ma i usant pkg_fake insertar el paquet a la base de dades com si fos una instal.lacio correcte de pkgsrc. Obviament pot portar problemes, pero si apreneu a fer-la anar, de ben segur que la disfrutareu

.
Avui he pujat al CVS de pkgsrc-wip unes millores sobre el pkg_fake que permeten el maneig de
fake alternatives. El concepte es el mateix que el de pkg_fake i pkg_alternatives junts.
Aixi per exemple podem solucionar problemes com el de python, que segurament molts haureu posat algun alias de l'estil
$alias python=python2p3
Pero no es plan...perque podem utilitzar pkg_fake per crear aquesta alternativa:
console:
# pkg_fake
pkg_fake [-alrihARL] [pkgname]
fake packages:
-l : list all fake packages
-i : install a new fake package
-r : remove a fake package
-h : show this message
-a : adds new files to
fake alternatives:
-A : adds fake alternatives to a package
-R : remove fake alternative support to a package
-L : list all fake alternatives
# pkg_fake -L
python23-pth-2.3.4nb3 Interpreted, interactive, object-oriented programming language
#podem veure com python23-pth esta manejat per pkgsrc
# pkg_info -I python23-pth
python23-pth-2.3.4nb3 Interpreted, interactive, object-oriented programming lang
#
# pkg_fake -R python23-pth-2.3.4nb3
Fake alternatives removed from python23-pth-2.3.4nb3
# pkg_fake -A python23-pth-2.3.4nb3
Type in editor the wrapper lines in format:
"bin/python /usr/pkg/bin/python2p3"
press enter
(.. ${EDITOR} stuff ..)
# cat /var/db/pkg/python23-pth-2.3.4nb3/+ALTERNATIVES
bin/python /usr/pkg/bin/python2p3
#
Dins de l'editor posem un texte en el format com el de dalt:
wrapper<espai>
binari<espai>
arguments
Doncs com veieu amb dues petites eines com aquestes es poden fer força coses interessants i utils per mantenir un servidor, instal.lant tarballs a mà, creant alternatives per manejar diferentes maquines virtuals de java, etc.
^D
[add comment] [view comments] (1)