Pravděpodobně jste tedy program nainstalovali do určité lokace a dále se o něj nestarali. Nebo jste použili nástroj checkinstall, který vytvoří ze zkompilovaného programu binární balíček a zaznamená instalaci programu podle distribučních zvyklostí určité linuxové distribuce.
Dobrá, co když nemáte Linux? Nebo se nechcete omezovat na systémové/distribuční balíčkovací utility? Nebo jste se rozhodli zkusit LFS (Linux from Scratch), na kterém vůbec není počítáno se správou software…
Pokročilý uživatel namítne, že si pomůže symbolickými odkazy. Ano toto je řešení, ale pracné. Proto si dnes ukážeme nástroj graft – perlový skript, který nám pomůže řešit náš problém.
gunzip -c graft-2.4.tar.gz | tar xvf - cd graft-2.4 make -f Makefile.dist
Nyní si otevřeme v oblíbeném editoru Makefile
a můžeme změnit pár konfiguračních voleb. graft
samozřejmě můžete později donutit ke změnám přímo volbami na příkazovém řádku.
Takže nejdůležitější volby jsou:
PACKAGEDIR = /opt/pkgs
Nastavuje cestu, do které budete instalovat ručně zkompilované programy. Například /opt/pkgs/figlet-2.2.1
.
TARGETDIR = /opt/gpkg
Nastavuje cestu pro „grafty“. Tj. například /opt/gpkg/bin/figlet
bude symbolický odkaz na /opt/pkgs/figlet-2.2.1/bin/figlet
.
PERL = /usr/bin/perl
Cesta k perlu. V případě, že hodláte využít systémovou instalaci perlu, nastavte správnou cestu.
BUILDPERL = $(PERL)
Jestliže hodláte v budoucnu zgraftovat i perl, pak nastavte tuto volbu na aktuální cestu k perlu a pozměňte volbu PERL
na budoucí umístění.
LOGFILE = /var/log/graft
Cesta k logovacímu souboru graftu.
SUPERUSER = 1
Nastavte na 1
, jestliže potřebujete práva uživatele root k zápisu do TARGETDIR
. Jestliže hodláte graftem spravovat vlastní programy například v domovském adresáři změňte na 0
.
PRESERVEPERMS = 0
Jestliže hodláte spravovat pouze programy například ve vašem domácím adresáři, tj. máte volbu SUPERUSER = 0
, pak PRESERVEPERMS = 1
způsobí dědění práv a nastavení vašeho uživatele. Volba PRESERVEPERMS = 0
funguje pouze v kombinaci se SUPERUSER = 1
.
Zeditovaný Makefile
uložíme a provedeme následují kroky k instalaci graftu do PACKAGEDIR
.
make clean rm -f graft make
graft
jsem instaloval jako utilitu pro administrátora, tudíž jsem jej nainstaloval příkazem…
sudo make install
Nyní máte graft
nainstalovaný v /opt/pkgs/graft-2.4
, tedy je nainstalován ve svém vlastním adresáři, zcela oddělen od jiných programů. Naším cílem je ale pomoci programu graft
zjednodušit instalaci, odinstalaci ručně kompilovaného software a hlavně snadno tento software zpřístupnit uživatelům pomocí pár adresářů, které si mohou přidat do své PATH
.
/usr/bin/perl /opt/pkgs/graft-2.4/bin/graft -i graft-2.4 export PATH=$PATH:/opt/gpkg/bin $ which graft /opt/gpkg/bin/graft export MANPATH="/usr/share/man" export MANPATH="/usr/local/man:${MANPATH}" export MANPATH="/opt/gpkg/man:${MANPATH}"
Toto je nejjednoduší cesta jak přidat manuálové stránky. Například na OpenBSD je systémové řešení dost krkolomné. Odvážní zájemci si počtou man man.conf
.
$ man graft
Protože mám rád prohlížeč obrázků feh, chtěl jsem jej použít i na Slackware 10.2. Bohužel není oficiální balíček, tak jsem se rozhodl pro ruční kompilaci feh
, potřebné knihovny libgiblib a použití nástroje graft
.
export PACKAGEDIR='/opt/pkgs' ./configure --prefix=${PACKAGEDIR}/giblib-1.2.4
Defaultně graft
bude hledat instalovaný software jako podadresáře v PACKAGEDIR
. Proto jsme jako --prefix
nastavili $PACKAGEDIR/giblib-1.2.4
gmake sudo gmake install sudo graft -i giblib-1.2.4 ls -l /opt/gpkg/bin/ $ ls -l /opt/gpkg/lib/libgiblib* lrwxr-xr-x 1 root wheel 38 May 23 03:56 /opt/gpkg/lib/libgiblib.a -> /opt/pkgs/giblib-1.2.4/lib/libgiblib.a lrwxr-xr-x 1 root wheel 39 May 23 03:56 /opt/gpkg/lib/libgiblib.la -> /opt/pkgs/giblib-1.2.4/lib/libgiblib.la lrwxr-xr-x 1 root wheel 43 May 23 03:56 /opt/gpkg/lib/libgiblib.so.1.6 -> /opt/pkgs/giblib-1.2.4/lib/libgiblib.so.1.6
Graftování instalovaného software je, jak vidíte, velmi jednoduché. graft
umí samozřejmě i odinstalovávat, umožňuje definovat seznamy souborů/adresářů, které se mají z graftování vyloučit, částečné definovatelné graftování (symlinkujeme pouze určité soubory) nebo dovoluje měnit volby přímo na řádku, tudíž nemusíme být omezeni pouze na jeden TARGETDIR
/ PACKAGEDIR
.
graft
je jednoduchý a rychlý perlový skript na správu ručně kompilovaného software. Nepotřebuje žádnou databázi ani pevně definované úložiště. Pro bližší informaci si pročtěte dokumentaci ve zdrojovém balíčku programu.