[BSD] csomag tartalom kereső

Zahemszky Gábor Gabor at Zahemszky.HU
2009. Okt. 21., Sze, 21:36:21 CEST


Szia!

>  OK, megint Debian-ból indultam ki ahol _minden_ csomagból van
> telepítve.

Hát, ez is egy olyan különbség, amiről érdemes tudni (hogy a Debian a
jobb megoldás, vagy a *BSD, az meg parttalan vita, ugorgyunk.)

> keresni. Hanem amikor tudom hogy nincs meg egy lib mert nincs
> telepítve, akkor arra keresnék hogy melyik csomagban van, melyiket
> kell telepítenem hogy az a rendszer része legyen.

Tényleg pontatlan volt a fogalmazás, de ebben az esetben a helyzet
rosszabb, mert erre pedig csak elég kacifántos válasz adható:

régebben, a /usr/ports/x/y -ban szokott volt lenni egy (ha jól
emlékszen) pkg-plist nevű fájl. Ebben a fájlban szerepelt az, hgy az
adott csomag pontosan milyen nevű fájlokat telepít fel. Ez mostanra
annyival nehezedett, hogy van olyan csomag, aminél van ilyen pkg-plist,
és van olyan, amelyiknél viszont a port-hoz tartozó Makefile (rosszabb
esetben Makefile.*) tartalmat egy vagy több, PLIST_FILES kezdetű sort,
és ezekben szerepelnek a telepítendő fájlnevek. Tekintettel arra,
hogy elvi szinten FreeBSD alatt van lehetőség nem a standard PORTDIR alá
telepíteni, soha nem abszolút elérési úttal szerepelnek a fájlok, hanem
(ha jól tudom) a $PORTDIR -hez képest relatív névvel.

Összefoglalva kb azt kell megcsinálni, hogy:

cd /usr/ports
find . -type f -name Makefile\* -o -name pkg-plist\* |
xargs fgrep libc.so.2.2

(Hasból írtam, és amúgy is lehetnek benne pontatlaságok, de kb ez kell
neked; nyilván ezt azért lehet finomítani - bár sokkal bonyolultabb
lesz a dolog -, mert a Makefile* -ban nyilván nem minden esetben jó
nekem a libc.so, csak akkor, ha PLIST_FILES -hez tartozik (elvi
szinten el tudok képzelni olyat, hogy pl. library függőség megadásaként
szerepel). Mindazonáltal az így kapható (szerintem max 10-20 sornyi)
kimenetből azért már könnyebb kivadászni a megfelelőt.

> > Az más kérdés, hogy libc.so.2.2 az nem FreeBSD-s libc, hanem nagy
> > esélyes linuxos.
> 
>  Alátámasztandó, éles rendszeren a  /usr/lib/compat/libc.so.2.2
> elérési úttal találtam meg. Szétnézek majd melyik compat csomag
> szállítja ezt az állományt.

No akkor nem linuxos. Az /usr/lib/compat az a korábbi FreeBSD verziókkal
kapcsolatos kompat, a linuxos kompat -ok a /compat/linux alatt
kellene, hogy legyenek.

>  Biztos hogy minden amit keres az FreeBSD-hez lett szánva, mégha
> compat lib is mint a fenti libc.so . FreeBSD-vel árulják a Japánok,
> erre fejlesztik.

Ja ez még mindig a korábbi folyamatirányító rendszer? Mert ha igen,
akkor ugye ott valami 4.x FBSD rémlik. Mi lenne, ha megnéznéd, hogy az
a 4-es rendszer milyen verziójú *natív* libc.so -t használ, ezzel
legalább közelíteni lehet, hogy ha mondjuk a 4.4-en libc.so.3* van,
akkor valószínűleg compat3x; ha a 4-es FBSD libc.so.6-ot használ, akkor
meg inkább compat2x - vagy valami hasonló lehet a számodra keresendő
csomag. Amúgy kb FreeBSD-főverziószám = libc főverziószám; nem
korrekt, de kb stimmel. Azt ugyan nem tudom, hogy mely verziótól kezdve
voltak ilyen compatX-csomagok/portok. Annyit még megemlítenék, hogy
akkor sem kell elkeseredni, ha nem találod a fenti keresgélés
eredményeként. Ugyanis időnként megszűnnek portok, azokat nyilván nem
találod a ports-fában. Ilyenkor érdemes a /usr/ports/MOVED fájlt
megnézni, hogy legalább elvi szinten van-e esély arra, hogy ilyesmi
történt.

És akkor az elméleti levezetés után oldjuk meg a feladványt:

jelenleg (7.x) van misc/compt3x, 4x, 5x és 6x port. a compat3x-beli
pkg-plist -et megnézve látszik, hogy abból libc.so.3 települ. Ellenben
a fent említett MOVED fájlt megnézve:

$ fgrep misc/compat MOVED
misc/compat22||2005-11-25|Forbidden, unfetchable, unneeded

(meg még pár sor) - azaz ha megengedsz egy tippet, talán a 4.x-es
FreeBSD-dben még volt misc/compat22 nevű port (vagy ugye hasonló nevű
csomag), és nagy eséllyel az telepítette a te libc.so.2.2 -det.

Zahy < Gabor at Zahemszky dot HU >

>   http://www.zahemszky.hu/ -> Forbidden You don't have permission to
> access / on this server.
> Ismert dolog és lesz rajta tartalom vagy szándékosan üres?

Hát az úgy volt, hogy volt nekem valaha weboldalam (tartalom
nélkül :-) ) aztán nem akartam a semmiért fizetni és megszüntettük,
most meg kaptam egy levelet, hogy megemelték nekem a méretét, de
mondjuk nem kértem, és még nem tudom mit tegyek fel. Esetleg a
bsd-listára küldött e-mail-jeimet bőrkötésben :-)

-- 
#!/bin/ksh
Z='21N16I25C25E30, 40M30E33E25T15U!';
IFS=' ABCDEFGHIJKLMNOPQRSTUVWXYZ ';
set -- $Z;for i;{ [[ $i = ? ]]&&print $i&&break;
[[ $i = ??? ]]&&j=$i&&i=${i%?};
typeset -i40 i=8#$i;print -n ${i#???};
[[ "$j" = ??? ]]&&print -n "${j#??} "&&j=;typeset +i i;};
IFS=' 0123456789 ';set -- $Z;for i;{ [[ $i = , ]]&&i=2;
[[ $i = ?? ]]||typeset -l i;j="$j $i";typeset +l i;};print "$j"



További információk a(z) BSD levelezőlistáról