it-swarm-eu.dev

Kde by měl být umístěn místní spustitelný soubor?

Mám spustitelný soubor pro klienta pro správu verzí perforce (p4). Nemůžu to umístit do /opt/local protože nemám oprávnění root. Existuje standardní umístění, kde musí být umístěno pod $HOME?

Má hierarchie systému souborů konvence, která říká, že místní spustitelné soubory/binární soubory musí být umístěny do $HOME/bin?

Nemohl jsem najít takovou konvenci uvedenou v článek Wikipedie pro FHS .

Také, pokud skutečně existuje konvence, musím výslovně zahrnout cestu k $HOME/binsložka nebo cokoli umístění adresáře bin je?

72
user640378

Obecně platí, že pokud binární systém nainstalovaný a udržovaný mimo systém musí být přístupný v celém systému pro více uživatelů, měl by jej správce vložit do /usr/local/bin. Pod /usr/local Je úplná hierarchie, která se obvykle používá pro lokálně kompilované a nainstalované softwarové balíčky.

Pokud jste jediný uživatel binárního souboru, je instalace do $HOME/bin Vhodným místem, protože jej můžete nainstalovat sami a budete jediným spotřebitelem. Pokud kompilujete softwarový balíček ze zdroje, je také vhodné vytvořit částečnou nebo úplnou místní hierarchii v adresáři $HOME. Celá místní hierarchie by vypadala takto.

  • $HOME/bin Místní binární soubory
  • $HOME/etc Konfigurace systému pro místní binární soubory specifické pro hostitele
  • $HOME/games Místní binární hry
  • $HOME/include Místní soubory záhlaví C
  • $HOME/lib Místní knihovny
  • $HOME/lib64 Místní 64bitové knihovny
  • $HOME/man Místní online manuály
  • $HOME/sbin Binární soubory místního systému
  • $HOME/share Hierarchie nezávislá na místní architektuře
  • $HOME/src Místní zdrojový kód

Při spuštění configure byste měli definovat svou místní hierarchii pro instalaci zadáním $HOME Jako předponu pro výchozí nastavení instalace.

./configure --prefix=$HOME

Po spuštění make && make install Budou zkompilované binární soubory, balíčky, manuálové stránky a knihovny nainstalovány do vaší místní hierarchie $HOME. Pokud jste ručně nevytvořili místní hierarchii $HOME, make install Vytvoří adresáře potřebné pro softwarový balíček.

Po instalaci v $HOME/bin Můžete buď přidat $HOME/bin Do $PATH, Nebo zavolat binární pomocí absolutního $PATH. Některé distribuce budou ve výchozím nastavení zahrnovat $HOME/bin Do vašeho $PATH. Můžete to vyzkoušet buď echo $PATH A zjistit, zda je tam $HOME/bin, Nebo vložit binární kód do $HOME/bin A provést which binaryname. Pokud se vrátí s $HOME/bin/binaryname, Je ve výchozím nastavení ve vaší $ PATH.

75
George M

Jak vedeno výše , /usr/local je určen jako předpona pro software nainstalovaný správcem systému, zatímco /usr by měl být použit pro software nainstalovaný z balíčků distribuce.

Cílem je vyhnout se střetům s distribuovaným softwarem (jako jsou balíčky rpm a deb) a dát administrátorovi plnou vládu nad „lokální“ předponou.

To znamená, že administrátor může nainstalovat vlastní kompilovaný software, zatímco stále používá distro jako debian.

Z FHS

Software vložený do/nebo/usr může být přepsán aktualizací systému (i když za těchto okolností doporučujeme, aby distribuce nepřepisovaly data v/etc). Z tohoto důvodu nesmí být lokální software umisťován mimo/usr/local bez dobrého důvodu.

Při instalaci softwaru specifického pro uživatele ther navrhuje pomocí $HOME jako předpona, protože to zajišťuje, že máte oprávnění k zápisu. Osobně se cítím používat $HOME/.local být elegantnějším řešením, protože se vyhýbá zaplnění vašeho (snad) pěkného a uklizeného domovského adresáře!

$HOME/.local/share je již použito ve specifikaci freedesktop.org XDG Base Directory , takže není nutné si představit přidání $HOME/.local/bin tvému ​​$PATH a vytvoření $HOME/.local/lib, atd., když jste u toho.

Pokud opravdu nechcete, aby vaše předpona byla skrytým adresářem, můžete snadno vytvořit také symbolický odkaz, například:

ln -s .local ~/local

Sidenote

Stojí za zmínku, že .config (ne .local/etc) je výchozí hodnota pro $XDG_CONFIG_HOME používá se pro konfigurační soubory specifické pro uživatele. Měl bych také zdůraznit, že velká část softwaru bohužel ignoruje XDG a vytváří konfigurační soubory, kdekoli se jim líbí (obvykle v kořenovém adresáři $HOME). Také si všimněte, že $XDG_CONFIG_HOME může být zrušeno, pokud výchozí $HOME/.config je žádoucí.

Je zvláštní, že pro výchozí konfigurační soubory distribuce není vyhrazen žádný adresář, takže neexistuje způsob, jak zjistit, zda je soubor v /etc byl dodán distro nebo upraven správcem systému.

30
MattSturgeon