Projects
> youterm
> 0xFFFF
> radare
> glh
> xml2doc
> bluewall
> pvc-repo
> cvs-repo
> git-repo
> mesure
> wistumbler2
> acr

Posts (81)
> List of posts

> Mini update
> Accelerated dreams
> Paranoia?
> Changelog
> Graphs and 077n pwnk
> HNY2k7
> Maemo mooo
> HC pwned
> Long time no post
> USB Pawah Injector i boot reveng

Categories
> all*
> TWD(7)
> blog(5)
> bluetooth(4)
> conf(1)
> desktop(1)
> devel(8)
> family(8)
> hpcva(9)
> hurd(2)
> life(20)
> n770(3)
> netbsd(2)
> pkgsrc(2)
> reality(5)
> tips(2)
> tothink(2)

Links
+ del.icio.us
+ asterx
+ bee.es.gnu.org

nopcode
+gallery
+www.nopcode.org
+cvs.nopcode.org
+news.nopcode.org
+blogs.nopcode.org

Other Blogs
+ sKUrZ0
+ TripleDES
+ gospel
+ blyx
+ MiKi
+ plue
+ xtraeme
+ esteve
+ jmmv
+ pof
+ syvic
+ Yosh
+ k0ro
+ ESN
+ Brainstorm
+ BlackShell
+ Hubertf
+ TooMany
+ viric
+ ziberpunk

doblog
+ Makefile
+ Source
+ Readme
+ TODO
+ Changelog









 
 >>Fri, 09 Sep 2005 06:31:47 +0200

 pkgsrc : pkg_alternatives i pkg_fake


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)

Comments:
from: Japan
date: Fri, 21 Jul 2006 11:21:11 +0200
title: My homepage

Thank you!
My homepage | Cool site