Když instaluji jednoduchý program, často používá make && make install
a často ani nemá odinstalaci cíl.
Pokud chci upgradovat program, předpokládá se standardní protokol, že se pouze hladce přepíše přes starý program?
Jak mohu sledovat tyto programy; většina lidí prostě „vystřelí a zapomene“ a pokud ne, odinstaluje cíl je dán, musím vše ručně smazat?
Přijatá odpověď:
Nainstalujte každý program do vyhrazeného adresářového stromu a použijte Stow nebo XStow, aby se všechny programy objevily ve společné hierarchii. Stow vytváří symbolické odkazy z adresáře specifického pro program do společného stromu.
Podrobněji vyberte adresář nejvyšší úrovně, například /usr/local/stow
. Nainstalujte každý program pod /usr/local/stow/PROGRAM_NAME
. Zajistěte například instalaci jeho spustitelných souborů do /usr/local/stow/PROGRAM_NAME/bin
, jeho manuálové stránky v /usr/local/stow/man/man1
a tak dále. Pokud program používá autoconf, spusťte ./configure --prefix /usr/local/stow/PROGRAM_NAME
. Po spuštění make install
, spusťte stow
:
./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME
A nyní budete mít symbolické odkazy, jako jsou tyto:
/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo
Můžete snadno sledovat, jaké programy máte nainstalované, vypsáním obsahu stow
adresář a vždy víte, ke kterému programu soubor patří, protože je to symbolický odkaz na umístění v adresáři daného programu. Odinstalujte program spuštěním stow -D PROGRAM_NAME
poté smažte adresář programu. Program můžete dočasně znepřístupnit spuštěním stow -D PROGRAM_NAME
(spusťte stow PROGRAM_NAME
aby byl znovu dostupný).
Pokud chcete mít možnost rychle přepínat mezi různými verzemi stejného programu, použijte /usr/local/stow/PROGRAM_NAME-VERSION
jako adresář programu. Chcete-li upgradovat z verze 3 na verzi 4, nainstalujte verzi 4 a poté spusťte stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.
Starší verze Stow nejdou příliš daleko za základy, které jsem popsal v této odpovědi. Novější verze, stejně jako XStow (která nebyla v poslední době udržována) mají pokročilejší funkce, jako je schopnost ignorovat určité soubory, lépe se vypořádají s existujícími symbolickými odkazy mimo adresář stow (jako je man -> share/man
), řeší některé konflikty automaticky (když dva programy poskytují stejný soubor) atd.
Pokud nemáte nebo nechcete používat root přístup, můžete si vybrat adresář pod svým domovským adresářem, např. ~/software/stow
. V tomto případě přidejte ~/software/bin
do vaší PATH
. Pokud man
nenajde automaticky manuálové stránky, přidejte ~/software/man
na váš MANPATH
. Přidejte ~/software/info
na váš INFOPATH
, ~/software/lib/python
do vašeho PYTHONPATH
, a tak dále podle potřeby.