Portál AbcLinuxu, 20. dubna 2024 07:33


Dotaz: FreeBSD, informace o závislostích

30.7.2008 19:44 freebsduser
FreeBSD, informace o závislostích
Přečteno: 564×
Odpovědět | Admin
Kdyz instaluji nejaky port tak bych rad vedel jake ma zavislosti a ktere z nich nemam. Jednoduse nazvy portu, ktere se budou instalovat s tim co chci jako to zobrazuje treba apt nebo pacman. V Makefile daneho portu vidim jen zavislosti bezprostredni, ale ty maji samozrejme zavislosti dalsi a dalsi.. Je nejaky nastroj, ktery projde rekurzivne vsechny zavisle balicky nenainstalovaneho portu, porovna vysledek s databazi nainstalovanych balicku a rekne co se bude instalovat?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.7.2008 21:13 fv
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
Odpovědět | | Sbalit | Link | Blokovat | Admin
"pkg_info -rR" by mel ukazat vsechny zavislosti
30.7.2008 21:47 freebsduser
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
Pekne, ale to funguje jenom pro jiz nainstalovane balicky. Ja bych chtel znat informaci o tom, kolik software bude potreba nainstalovat kdyz budu chtit nejaky port xyz. Napriklad bych si rad naistaloval port games/gturing ale nechci instalovat zadne casti gnome, jehoz zavislost zjistim az pote co zacnu kompilovat.
30.7.2008 22:11 fv
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
a podle tohoto navodu by to treba neslo? ..sory ze tak strilim od pasu, ale nemam momentalne zadny stroj s freebsd po ruce :(
30.7.2008 22:49 freebsduser
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
Diky za odpoved. Clanek je moc zajimavy a rozhodne poucny, ale bohuzel na moji otazku porad neodpovida. Je tam obsazeno jakym zpusobem lze zjistit build nebo run zavislosti, ale ty nic nerikaji o tom - kolik bude potreba DOinstalovat programu jako zavislost programu ktery chci naistalovat. :-(
30.7.2008 23:20 fv
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
jeste me tak napadlo.. mozna by stacilo do /etc/make.conf pridat WANT_GNOME=NO a WITHOUT_GNOME=YES kdyz nemas rad gnome. Nejake detaily o tom jsou tady Ale netusim jestli to funguje. Ja jsem vzdycky systemy ktere resi zavislosti automaticky, totalne zasukoval.:/ chtelo by to asi aby se do debaty vlozil nekdo zkusenejsi
30.7.2008 23:40 kraken
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
Ahoj

skus pozriet ports-mgmt/portupgrade.. po jeho nainstalovani budes mat k dispozicii portinstall. V man portinstall si pozri parameter "-n"
3.8.2008 03:04 abr | skóre: 24 | blog: ab
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
Parametr -n to neresi, ale s portupgrade dostaneme utilitku pkgdu (-h pro napovedu), a ta zvlada zobrazovat alespon velikost nainstalovanych portu.
# pkgdu -tRm mc
0       gamin-0.1.9_2
10      gettext-0.17_1
0       gio-fam-backend-2.16.5
7       glib-2.16.5
3       libiconv-1.11_1
4       libslang2-2.1.3
6       mc-4.6.1_8
1       pcre-7.7
28      perl-5.8.8_1
0       pkg-config-0.23_1
0       png-1.2.28
48      python25-2.5.2_2
111
3.8.2008 11:21 bhy | skóre: 35 | blog: bhyblog | brno
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
což ovšem není to, co chtěl vědět tazatel:) taky by mě to zajímalo.
3.8.2008 12:15 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
není.. ale i takové triky se hodí znát..
3.8.2008 15:24 abr | skóre: 24 | blog: ab
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
Ups, nejak jsem se zamotal. Ted me jen napada "portinstall -iF foo" a po stazeni se na konci vypise list chybejicich portu. Zase to ale neni ono, ptz to saha na net...
3.8.2008 20:33 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: FreeBSD, informace o závislostích
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem projel kompletní mailing list users-l (český freebsd mailing list), který mi byl v mnohém nápomocen. První řešení, které dávalo nějaké výsledky je toto:
#!/usr/bin/env bash

function is_installed () {
        ls -d /var/db/pkg/${1}* &>/dev/null
        [ $? -eq 1 ] && echo "Port $1 is not installed."
}

for port in `make all-depends-list | sed 's#^/usr/ports/[^/]*/##'`
do
        is_installed $port
done
Sice je to velmi (ale opravdu velmi) špatně napsané, ale už to alespoň něco říká. Při tvorbě tohoto skriptu jsem procházel celý /usr/ports/Mk/bsd.port.mk (SVATÝ GRÁL) a někde u řádku 4927 jsem tento skript měl naznačený a zkoušel jsem ho testovat. Po úspěšném dopsání jsem ještě ze zvědavosti dorazil těch pár set řádků a našel jsem (samozřejmě na úplně posledním místě) zázračnou formuli.. BEHOLD>>

make missing

Neboli:
5258 # Show missing dependiencies
5259 missing:                                                                   
5260     @for dir in $$(${ALL-DEPENDS-LIST}); do \
5261         THISORIGIN=$${dir##${PORTSDIR}/}; \
5262         installed=$$(${PKG_INFO} -qO $${THISORIGIN}); \
5263         if [ -z "$$installed" ]; then \
5264             ${ECHO_CMD} $$THISORIGIN; \
5265         fi; \
5266     done
5267 
Výsledky sice nejsou zcela shodné s mým skriptem, ale čekal bych, že make missing bude mít víc pravdu než nějaké shellové ořezávátko. Navíc překlep 'dependiencies' na řádku 5258 byl ten vtip, kvůli kterému se mi to hůře hledalo. Teď jen doufám, že daný příkaz opravdu slouží k tomu k čemu myslím, že slouží.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.