[ Časlav Ilić @ 31.07.2003. 14:56 ] @
Hoću da konvertujem na GNU Autotools sistem jedan paket koji čine mnogobrojni hederi, biblioteke i izvršne datoteke. Paket nije sistemskog tipa (bavi se nekim proračunima), i može se očekivati dodavanje novih datoteka u instalaciju ubuduće.

Gde je najbolje instalirati hedere i biblioteke? Da li ostaviti podrazumevane lokacije i očekivati od korisnika da razreši moguće probleme (npr. da postavi $prefix na usr/local/packagename/) ili postaviti da se hederi instaliraju u $prefix/include/packagename, a biblioteke u $prefix/lib/packagename ili nešto treće?

Da li izvršnim datotekama odmah dodeliti neki prefiks, ili i to ostaviti korisniku da odredi?

Ako bih ostavio sve na podrazumevanim vrednostima, da li ipak da preporučim neke posebne parametre instalacije (u README ili gde već)?
[ brcha @ 09.08.2003. 22:35 ] @
Čini mi se da je najbolje da ostaviš sve kao što je podrazumevano, tj. da se instalira u prefix=/usr/local, pa hederi u $prefix/include, biblioteke u $prefix/lib i izvršni u $prefix/bin. Ako ti testiraš taj paket dok ga praviš, napravi neku skripticu koja ti konfiguriše prefiks na nešto kao ~/test ili slično (recimo config.sh sa ./configure --prefix=~/test $0).

Usput, šta mislite o GAR arhitekturi grupnog kompajliranja paketa (to je varijanta FreeBSD-ovog ports sistema, a koriste ga LNX-BBC, Gnome - Garnome, a odskora i KDE). U svakom slučaju, za više informacija pogledajte http://www.lnx-bbc.org/garchitecture.html

Pozdrav
Filip
[ Časlav Ilić @ 10.08.2003. 10:33 ] @
Citat:
brcha:

Čini mi se da je najbolje da ostaviš sve kao što je podrazumevano, tj. da se instalira u prefix=/usr/local, pa hederi u $prefix/include, biblioteke u $prefix/lib i izvršni u $prefix/bin.

Problem i jeste sa hederima i bibliotekama. Može da se desi da se heder ili biblioteka iz ovog paketa preklopi sa nekim drugim paketom, i tada korisnik ne može istovremeno da koristi oba paketa.
[ brcha @ 10.08.2003. 12:40 ] @
Onda ih strpaj u .../paket, a dodaj .../paket/bin u path i .../paket/lib u ld.so.conf i onda je sve manje-više ok ('s|...|/usr/local|' ili nešto slično). Nisam te shvatio da se preklapa sa drugim paketima. Koji ti je to program, anyway?
[ Časlav Ilić @ 11.08.2003. 09:47 ] @
Citat:
brcha:
Onda ih strpaj u .../paket, a dodaj .../paket/bin u path i .../paket/lib u ld.so.conf i onda je sve manje-više ok ('s|...|/usr/local|' ili nešto slično). Nisam te shvatio da se preklapa sa drugim paketima.

Problem je ako moj i taj drugi paket imaju dva istoimena hedera/biblioteke/izvršne datoteke. I ako se fizički ne gaze međusobno, korisnik ne može da upotrebi oba istovremeno.
Citat:
Koji ti je to program, anyway?

Ništa interesantno široj publici — nešto što sam radio za diplomski, pa hoću malo da ga uobličim.
[ dust @ 11.08.2003. 14:34 ] @
Nije loše rešenje da staviš u /opt direktorijum.
Pogledaj kako je urađen cdrtools.
Tu postoji problem što korisnik mora da podešava PATH, ali ipak je to standardno rešenje (kojeg se retko ko pridržava).

Drugo rešenje je kao što si već naveo $prefix/include/IME_PAKETA i tu nema "gaženja". U izvorni kod staviš #include <IME_PAKETA/heder.h> i kod kompilacije -I$prefix/include i svi srećni. Analogno za biblioteke, a što se izvršnih datoteka tiče koje god rešenje da upotrebiš, ako postoji još neki program sa istim imenom jedino sa apsolutnom putanjom možeš razrešiti konflikt.

Što se GAR-a tiče mislim da je velika prednost ports sistema to što su svi na istom mestu. Da bi se tako nešto desilo sa GAR-om trebalo bi da ga neka veća distribucija prihvati.

pozdrav,
Dule
[ brcha @ 11.08.2003. 14:55 ] @
Slažem se sa dustom i čak bi pomešao te dve stvari. Ako hederi imaju tendenciju da se mešaju sa tuđim hederima, obavezno ih stavi negde da budu inkludovani sa #include <paket/header.h> (ovo bi trebalo da uključi nešto tipa /opt/paket/include/paket/header.h, naravno ako staviš -I/opt/paket/include). A druga stvar, pošto je reč o tvom paketu, mislim da ne bi bilo s gorega da ga instaliraš u poseban direktorijum (dakle ili u /usr/local/paket ili u /opt/paket, kako ti već duša ište), a posle da za korišćenje hedera i libova to regulišeš sa -I.../paket/include i -L.../paket/lib. Mnogo pišem...

Pozdrav
Filip
[ dust @ 11.08.2003. 23:50 ] @
Mislim da ne bi trebalo da bude /opt/paket/include/paket (meni ovo izgleda prilično besmisleno). Ja bih stavio /opt/ČaslavIlić...
Pogledaj naprimer intelove kompajlere (c++ i fortran), oba se nalaze u /opt/intel. Gnu-ovi programi bi trebalo da idu u /opt/gnu, a ne svaki pojedinačno, npr. /opt/emacs bi bilo pogrešno.

pozdrav,
Dule
[ brcha @ 12.08.2003. 15:51 ] @
Dobra je to ideja, ali problem je u tome što distribucije čak ne podržavaju do kraja ni FHS (Filesystem Hierarchy Standard, http://www.pathname.com/fhs/), a kamoli još takve dodatke, kao što je to što ti predlažeš. Po FHS-u 2.2 je /opt struktura uglavnom nedefinisana i jedino što se kaže jeste da bi trebalo da bude /opt/paket/{bin,sbin,lib,man,libexec,share} i sl. A ovaj tvoj (ili Intelov) predlog bi zvučao kao /opt/autor/paket/{bin,sbin,lib,man,libexec,share}. Nisam čitao FHS 2.3 (draft), moguće je da je tako nešto i predloženo, ali će proći decenije dok to bude usvojeno od strane distribucija. Ja obično napunim /usr/local particiju, pa onda trpam gde imam mesta, tako da imam programe instalirane po svim particijama (kao npr. /mnt/part6/{BerkeleyDB.4.1,OpenLDAP,blender-2.27,Samba3} i slične fore ), ali to je moj trip zbog punjenja prostora na particijama.
Anyway, ako misliš da publikuješ taj paket, stavi ga kao što čovek kaže u /opt/Caslav/program/{bin,lib,...} i prekršićeš FHS, ali će biti lepo sređeno.

Ajd' zdravo
Filip