GNU/Linux >> Znalost Linux >  >> Linux

Jak Idiomatické unixové programy detekují, pod jakou předponou jsou nainstalovány?

Pokud nainstaluji binární soubor s nestandardní předponou, např. /opt/bin/foo , který potřebuje nějaké statické soubory z /opt/share/foo , jak je najde? Použití zpětných odkazů vzhledem ke spustitelnému souboru (../share/foo )? Pevně ​​zakódováno v době kompilace?

Co je idiomatické způsob, jak aplikace zpracovat variabilní předponu instalace? Měly by mít všechny adresáře předponu? (a co /var ?)

Přijatá odpověď:

Je běžné, že se takové odkazy napevno zakódují v době kompilace a možná je k dispozici možnost příkazového řádku nebo proměnná prostředí, která přepíše výchozí nastavení v době kompilace. Často si program pamatuje pouze umístění jednoho konfiguračního souboru (obvykle pod /etc ), kde lze přepsat jakékoli výchozí nastavení v době kompilace. Tento přístup dává největší smysl pro software s otevřeným zdrojovým kódem, který je kompilován stejnými lidmi, kteří vytvářejí operační systém, jako součást distribuce Linuxu nebo portů BSD.

U aplikací distribuovaných v binární formě je obvyklým přístupem najít binární aplikaci od jejího nultého argumentu. Podle konvence nultý argument pro execve (tj. argv[0] ) je cesta k binárnímu systému (je na volajícím, často shellu, aby dodržel konvenci). Pokud argv[0] neobsahuje žádné / , aplikace by měla provést $PATH vyhledat to.


Linux
  1. Protokoly Docker:Co jsou a jak je používat (s příklady)

  2. Jak zjistit, kdo je přihlášen ve vašem systému a co dělá

  3. Co jsou režimy Vim? Jak je změnit?

  1. Co jsou symbolické odkazy (Soft Links) a jak je vytvořit pod Linuxem

  2. Co jsou Shell Scripts? Jak vytvořit Shell skripty?

  3. Jak zjistit spouštění programů na Linuxu?

  1. Jak zjistím, jaký je můj nejpoužívanější linuxový příkaz?

  2. Názvy hostitelů – o čem jsou?

  3. zkontrolujte, jaké 32bitové balíčky jsou nainstalovány na 64bitovém serveru