GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat software ze zdrojového kódu… a poté jej odebrat

Stručně:Tento podrobný průvodce vysvětluje, jak nainstalovat program ze zdrojového kódu v systému Linux a jak odebrat nainstalovaný software ze zdrojového kódu.

Jednou z největších předností vaší linuxové distribuce je její správce balíčků a související softwarové úložiště. S nimi máte všechny potřebné nástroje a zdroje ke stažení a instalaci nového softwaru do počítače zcela automatizovaným způsobem.

Ale přes veškerou snahu správci balíčků nemohou zvládnout každý případ použití. Ani nemohou zabalit veškerý dostupný software. Stále tedy existují situace, kdy budete muset zkompilovat a nainstalovat nový software sami. Pokud jde o mě, zdaleka nejčastějším důvodem, proč musím zkompilovat nějaký software, je, když potřebuji spustit velmi specifickou verzi nebo upravit zdrojový kód pomocí některých efektních možností kompilace.

Pokud vaše potřeby patří do druhé kategorie, je pravděpodobné, že již víte, co dělat. Ale pro drtivou většinu uživatelů Linuxu může první kompilace a instalace softwaru ze zdrojového kódu vypadat jako iniciační obřad:poněkud děsivé; ale s příslibem vstupu do nového světa možností a místa prestiže v privilegované komunitě.

[irp posts=”13491″ name=”Jak nainstalovat a odebrat software v Ubuntu”]

A. Instalace softwaru ze zdrojového kódu v Linux

A to je přesně to, co zde uděláme. Pro účely tohoto článku řekněme, že potřebuji nainstalovat NodeJS 8.1.1 do svého systému. Přesně ta verze. Verze, která není dostupná v repozitáři Debianu:

sh$ apt-cache madison nodejs | grep amd64
    nodejs | 6.11.1~dfsg-1 | http://deb.debian.org/debian experimental/main amd64 Packages
    nodejs | 4.8.2~dfsg-1 | http://ftp.fr.debian.org/debian stretch/main amd64 Packages
    nodejs | 4.8.2~dfsg-1~bpo8+1 | http://ftp.fr.debian.org/debian jessie-backports/main amd64 Packages
    nodejs | 0.10.29~dfsg-2 | http://ftp.fr.debian.org/debian jessie/main amd64 Packages
    nodejs | 0.10.29~dfsg-1~bpo70+1 | http://ftp.fr.debian.org/debian wheezy-backports/main amd64 Packages

Nyní je instalace NodeJs na Ubuntu nebo Debian docela jednoduchá, pokud to uděláte pomocí správce balíčků. Ale udělejme to prostřednictvím zdrojového kódu.

Krok 1:Získání zdrojového kódu z GitHubu

Stejně jako mnoho open-source projektů lze zdroje NodeJS nalézt na GitHubu:https://github.com/nodejs/node

Pojďme tedy přímo tam.

Pokud neznáte GitHub, git nebo jakýkoli jiný systém správy verzí, který stojí za zmínku, úložiště obsahuje aktuální zdroj softwaru a také historii všech úprav provedených v tomto softwaru v průběhu let. Nakonec až k úplně prvnímu řádku napsanému pro tento projekt. Pro vývojáře má zachování této historie mnoho výhod. Pro nás dnes hlavní je, že budeme schopni získat zdroje pro projekt tak, jak byly v daném okamžiku. Přesněji, budu moci získat zdroje tak, jak byly, když byla vydána verze 8.1.1, kterou chci. I když od té doby došlo k mnoha úpravám.

Na GitHubu můžete pomocí tlačítka „větev“ procházet mezi různými verzemi softwaru. „Pobočka“ a „tagy“ jsou v Gitu poněkud příbuzné pojmy. Vývojáři v podstatě vytvářejí „větve“ a „tagy“, aby mohli sledovat důležité události v historii projektu, například když začnou pracovat na nové funkci nebo když publikují vydání. Nebudu zde zacházet do podrobností, vše, co potřebujete vědět, je, že hledám verzi označenou „v8.1.1“

Po výběru značky „v8.1.1“ se stránka obnoví, nejviditelnější změnou je značka, která se nyní objevuje jako součást adresy URL. Kromě toho si všimnete, že datum změny souboru se také liší. Zdrojový strom, který nyní vidíte, je ten, který existoval v době vytvoření tagu v8.1.1. V určitém smyslu si můžete nástroj pro správu verzí, jako je git, představit jako stroj na cestování časem, který vám umožní vracet se tam a zpět do historie projektu.

V tomto okamžiku si můžeme stáhnout zdroje NodeJS 8.1.1. Nemůžete minout velké modré tlačítko, které navrhuje stáhnout ZIP archiv projektu. Pokud jde o mě, stáhnu a rozbalím ZIP z příkazového řádku kvůli vysvětlení. Ale pokud dáváte přednost použití nástroje GUI, neváhejte to udělat místo toho:

wget https://github.com/nodejs/node/archive/v8.1.1.zip
unzip v8.1.1.zip
cd node-8.1.1/

Stahování ZIP archivu funguje skvěle. Ale pokud to chcete udělat „jako profík“, doporučoval bych použít přímo git nástroj ke stažení zdrojů. Není to vůbec složité — a bude to příjemný první kontakt s nástrojem, se kterým se často setkáte:

# first ensure git is installed on your system
sh$ sudo apt-get install git
# Make a shallow clone the NodeJS repository at v8.1.1
sh$ git clone --depth 1 \
              --branch v8.1.1 \
              https://github.com/nodejs/node
sh$ cd node/

Mimochodem, pokud máte problém, považujte první část tohoto článku za obecný úvod. Později mám podrobnější vysvětlení distribucí založených na Debianu a RedHatu, abych vám pomohl s řešením běžných problémů.

Každopádně, kdykoli jste stáhli zdroj pomocí git nebo jako ZIP archiv byste nyní měli mít přesně stejné zdrojové soubory v aktuálním adresáři:

sh$ ls
android-configure  BUILDING.md            common.gypi      doc            Makefile   src
AUTHORS            CHANGELOG.md           configure        GOVERNANCE.md  node.gyp   test
benchmark          CODE_OF_CONDUCT.md     CONTRIBUTING.md  lib            node.gypi  tools
BSDmakefile        COLLABORATOR_GUIDE.md  deps             LICENSE        README.md  vcbuild.bat

Krok 2:Pochopení systému sestavení programu

Obvykle mluvíme o „kompilaci zdrojů“, ale kompilace je pouze jednou z fází potřebných k vytvoření funkčního softwaru ze zdroje. Sestavovací systém je sada nástrojů a postupů používaných k automatizaci a formulování těchto různých úkolů, aby bylo možné sestavit celý software pouhým vydáním několika příkazů.

Pokud je koncept jednoduchý, realita je poněkud složitější. Protože různé projekty nebo programovací jazyk mohou mít různé požadavky. Nebo kvůli vkusu programátora. Nebo podporované platformy. Nebo z historického důvodu. Nebo… nebo… existuje téměř nekonečný seznam důvodů, proč si vybrat nebo vytvořit jiný systém sestavení. To znamená, že existuje mnoho různých řešení.

NodeJS používá systém sestavení ve stylu GNU, je to oblíbená volba v komunitě open source a opět dobrý způsob, jak začít svou cestu.

Psaní a ladění systému sestavení je poměrně složitý úkol, ale pro „koncového uživatele“ systémy sestavení ve stylu GNU tento úkol usnadňují pomocí dvou nástrojů:configure a make .

configure file je skript specifický pro projekt, který zkontroluje konfiguraci cílového systému a dostupné funkce, aby zajistil, že projekt bude možné sestavit a případně se bude zabývat specifiky aktuální platformy.

Důležitá součást typické configure úkolem je vytvořit Makefile . To je soubor obsahující instrukce potřebné k efektivnímu sestavení projektu.

make na druhé straně je nástroj POSIX dostupný na jakémkoli unixovém systému. Přečte soubor Makefile specifický pro projekt a proveďte požadované operace k sestavení a instalaci programu.

Ale, jako vždy ve světě Linuxu, stále máte určitou shovívavost při přizpůsobení sestavení vašim konkrétním potřebám.

./configure --help

configure -help zobrazí všechny dostupné možnosti konfigurace. Opět se jedná o velmi specifický projekt. A abych byl upřímný, je někdy nutné ponořit se do projektu, než plně pochopíme význam každé jednotlivé možnosti konfigurace.

Existuje však alespoň jedna standardní možnost GNU Autotools, kterou musíte znát:--prefix volba. To souvisí s hierarchií systému souborů a místem, kde bude váš software nainstalován.

[irp posts=”14419″ name=”8 Vim tipů a triků, které z vás udělají profesionálního uživatele”]

Krok 3:FHS

Hierarchie souborového systému Linuxu v typické distribuci většinou odpovídá standardu Filesystem Hierarchy Standard (FHS)

Tento standard vysvětluje účel různých adresářů vašeho systému:/usr , /tmp , /var a tak dále.

Při používání GNU Autotools – a většiny ostatních systémů sestavení – bude výchozí umístění instalace vašeho nového softwaru /usr/local . Která je dobrá volba, protože podle FSH „Hierarchie /usr/local je pro použití správcem systému při místní instalaci softwaru? Musí být chráněn před přepsáním při aktualizaci systémového softwaru. Může být použit pro programy a data, která lze sdílet mezi skupinou hostitelů, ale nenacházejí se v /usr.“

/usr/local hierarchie nějak replikuje kořenový adresář a najdete tam /usr/local/bin pro spustitelné programy /usr/local/lib pro knihovny /usr/local/share pro soubory nezávislé na architektuře a tak dále.

Jediný problém při použití /usr/local strom pro instalaci vlastního softwaru je tam, kde budou smíchány soubory pro veškerý váš software. Zejména po instalaci několika programů bude těžké sledovat, do kterého souboru přesně /usr/local/bin a /usr/local/lib patří ke kterému softwaru. To však nezpůsobí žádné problémy systému. Koneckonců /usr/bin je úplně stejný nepořádek. Ale to se stane problémem v den, kdy budete chtít odstranit ručně nainstalovaný software.

K vyřešení tohoto problému obvykle preferuji instalaci vlastního softwaru do /opt místo toho podstrom. Ještě jednou, abych citoval FHS:

_”/opt je vyhrazeno pro instalaci softwarových balíčků doplňkových aplikací.

Balíček, který se má nainstalovat do /opt, musí najít své statické soubory v samostatném stromu adresářů /opt/ nebo /opt/, kde je název popisující softwarový balík a je registrovaný název LANANA poskytovatele.“_

Vytvoříme tedy podadresář /opt speciálně pro naši vlastní instalaci NodeJS. A pokud někdy budu chtít tento software odstranit, budu muset jednoduše odstranit tento adresář:

sh$ sudo mkdir /opt/node-v8.1.1
sh$ sudo ln -sT node-v8.1.1 /opt/node
# What is the purpose of the symbolic link above?
# Read the article till the end--then try to answer that
# question in the comment section!

sh$ ./configure --prefix=/opt/node-v8.1.1
sh$ make -j9 && echo ok
# -j9 means run up to 9 parallel tasks to build the software.
# As a rule of thumb, use -j(N+1) where N is the number of cores
# of your system. That will maximize the CPU usage (one task per
# CPU thread/core + a provision of one extra task when a process
# is blocked by an I/O operation.

Cokoli jiného než „ok“ za make příkaz byl dokončen by znamenalo, že během procesu sestavování došlo k chybě. Protože jsme spustili paralelní sestavení kvůli -j Není vždy snadné získat chybovou zprávu vzhledem k velkému objemu výstupu produkovaného sestavovacím systémem.

V případě problému stačí restartovat make , ale bez -j tentokrát možnost. A chyba by se měla objevit na konci výstupu:

sh$ make

Nakonec, jakmile je kompilace dokončena, můžete nainstalovat software do jeho umístění spuštěním příkazu:

sh$ sudo make install

A otestujte to:

sh$ /opt/node/bin/node --version
v8.1.1

B. Co když se při instalaci ze zdrojového kódu něco pokazí?

To, co jsem vysvětlil výše, je většinou to, co můžete vidět na stránce „pokynů k sestavení“ dobře zdokumentovaného projektu. Ale vzhledem k tomu, že cílem tohoto článku je umožnit vám zkompilovat váš první software ze zdrojů, možná by stálo za to věnovat čas prozkoumání některých běžných problémů. Takže udělám celý postup znovu, ale tentokrát z čerstvého a minimálního systému Debian 9.0 a CentOS 7.0, abyste viděli chyby, na které jsem narazil, a jak jsem je vyřešil.

Z Debianu 9.0 “Stretch”

[email protected]:~$ git clone --depth 1 \
                             --branch v8.1.1 \
                             https://github.com/nodejs/node
-bash: git: command not found

Tento problém je poměrně snadné diagnostikovat a řešit. Stačí nainstalovat git balíček:

[email protected]:~$ sudo apt-get install git
[email protected]:~$ git clone --depth 1 \
                             --branch v8.1.1 \
                             https://github.com/nodejs/node && echo ok
[...]
ok
[email protected]:~/node$ sudo mkdir /opt/node-v8.1.1
[email protected]:~/node$ sudo ln -sT node-v8.1.1 /opt/node

Žádný problém.

[email protected]:~/node$ ./configure --prefix=/opt/node-v8.1.1/
WARNING: failed to autodetect C++ compiler version (CXX=g++)
WARNING: failed to autodetect C compiler version (CC=gcc)
Node.js configure error: No acceptable C compiler found!
        Please make sure you have a C compiler installed on your system and/or
        consider adjusting the CC environment variable if you installed
        it in a non-standard prefix.

Je zřejmé, že ke kompilaci projektu potřebujete kompilátor. Protože NodeJS je napsán pomocí jazyka C++, potřebujeme kompilátor C++. Zde nainstaluji `g++`, kompilátor GNU C++ pro tento účel:

[email protected]:~/node$ sudo apt-get install g++
[email protected]:~/node$ ./configure --prefix=/opt/node-v8.1.1/ && echo ok
[...]
ok
[email protected]:~/node$ make -j9 && echo ok
-bash: make: command not found

Jeden další chybějící nástroj. Stejné příznaky. Stejné řešení:

[email protected]:~/node$ sudo apt-get install make
[email protected]:~/node$ make -j9 && echo ok
[...]
ok
[email protected]:~/node$ sudo make install
[...]
[email protected]:~/node$ /opt/node/bin/node --version
v8.1.1

Úspěch!

Všimněte si prosím:Nainstaloval jsem různé nástroje jeden po druhém, abych ukázal, jak diagnostikovat problémy s kompilací, a ukázat vám typické řešení k vyřešení těchto problémů. Pokud však budete hledat další informace o tématu nebo si přečíst další návody, zjistíte, že většina distribucí má „metabalíčky“, které zastřešují instalaci některých nebo všech typických nástrojů používaných pro kompilaci softwaru. Na systémech založených na Debianu se pravděpodobně setkáte s balíčkem build-essentials pro tento účel. A v distribucích založených na Red-Hat to budou „Vývojové nástroje“ skupina.

Od CentOS 7.0

[[email protected] ~]$ git clone --depth 1 \
                               --branch v8.1.1 \
                               https://github.com/nodejs/node
-bash: git: command not found

Příkaz nenalezen? Stačí jej nainstalovat pomocí yum správce balíčků:

[[email protected] ~]$ sudo yum install git
[[email protected] ~]$ git clone --depth 1 \
                               --branch v8.1.1 \
                               https://github.com/nodejs/node && echo ok
[...]
ok
[[email protected] ~]$ sudo mkdir /opt/node-v8.1.1
[[email protected] ~]$ sudo ln -sT node-v8.1.1 /opt/node
[[email protected] ~]$ cd node
[[email protected] node]$ ./configure --prefix=/opt/node-v8.1.1/
WARNING: failed to autodetect C++ compiler version (CXX=g++)
WARNING: failed to autodetect C compiler version (CC=gcc)
Node.js configure error: No acceptable C compiler found!

        Please make sure you have a C compiler installed on your system and/or
        consider adjusting the CC environment variable if you installed
        it in a non-standard prefix.

Hádáte správně:NodeJS je napsán pomocí jazyka C++, ale můj systém postrádá odpovídající kompilátor. Mňam na záchranu. Protože nejsem běžný uživatel CentOS, musel jsem na internetu vyhledat přesný název balíčku obsahujícího kompilátor g++. Vede mě na tuto stránku:https://superuser.com/questions/590808/yum-install-gcc-g-doesnt-work-anymore-in-centos-6-4

[[email protected] node]$ sudo yum install gcc-c++
[[email protected] node]$ ./configure --prefix=/opt/node-v8.1.1/ && echo ok
[...]
ok
[[email protected] node]$ make -j9 && echo ok
[...]
ok
[[email protected] node]$ sudo make install && echo ok
[...]
ok
[[email protected] node]$ /opt/node/bin/node --version
v8.1.1

Úspěch. Znovu.

C. Provádění změn v softwaru nainstalovaném ze zdrojového kódu

Software můžete nainstalovat ze zdroje, protože potřebujete velmi specifickou verzi, která není k dispozici ve vašem distribučním úložišti, nebo protože chcete upravit program, abyste opravili chybu nebo přidali funkci. Open-source je koneckonců především o provádění úprav. Využiji tedy této příležitosti, abych vám dal ochutnat sílu, kterou máte nyní po ruce, když jste schopni zkompilovat svůj vlastní software.

Zde provedeme menší změnu ve zdrojích NodeJS. A uvidíme, zda bude naše změna začleněna do zkompilované verze softwaru:

Otevřete soubor node/src/node.cc ve vašem oblíbeném textovém editoru (vim, nano, gedit, …). A zkuste najít ten fragment kódu:

   if (debug_options.ParseOption(argv[0], arg)) {
      // Done, consumed by DebugOptions::ParseOption().
    } else if (strcmp(arg, "--version") == 0 || strcmp(arg, "-v") == 0) {
      printf("%s\n", NODE_VERSION);
      exit(0);
    } else if (strcmp(arg, "--help") == 0 || strcmp(arg, "-h") == 0) {
      PrintHelp();
      exit(0);
    }

Je kolem řádku 3830 souboru. Poté upravte řádek obsahující printf aby místo toho odpovídala:

      printf("%s (compiled by myself)\n", NODE_VERSION);

Potom se vraťte k terminálu. Než půjdete dále – a abyste získali více informací o síle git – můžete zkontrolovat, zda jste upravili správný soubor:

diff --git a/src/node.cc b/src/node.cc
index bbce1022..a5618b57 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -3828,7 +3828,7 @@ static void ParseArgs(int* argc,
     if (debug_options.ParseOption(argv[0], arg)) {
       // Done, consumed by DebugOptions::ParseOption().
     } else if (strcmp(arg, "--version") == 0 || strcmp(arg, "-v") == 0) {
-      printf("%s\n", NODE_VERSION);
+      printf("%s (compiled by myself)\n", NODE_VERSION);
       exit(0);
     } else if (strcmp(arg, "--help") == 0 || strcmp(arg, "-h") == 0) {
       PrintHelp();

Před řádkem byste měli vidět „-“ (znaménko mínus) tak, jak tomu bylo, než jste jej změnili. A „+“ (znaménko plus) před řádkem po provedených změnách.

Nyní je čas znovu zkompilovat a znovu nainstalovat software:

make -j9 && sudo make install && echo ok
[...]
ok

Tentokrát může selhat pouze to, že jste při změně kódu udělali překlep. V takovém případě znovu otevřete node/src/node.cc soubor ve vašem textovém editoru a opravte chybu.

Jakmile se vám podaří zkompilovat a nainstalovat tuto novou upravenou verzi NodeJS, budete moci zkontrolovat, zda byly vaše úpravy skutečně začleněny do softwaru:

[email protected]:~/node$ /opt/node/bin/node --version
v8.1.1 (compiled by myself)

Gratulujeme! Provedli jste svou první změnu v programu s otevřeným zdrojovým kódem!

D. Nechte shell najít náš vlastní software pro sestavení

Možná jste si všimli, že jsem vždy spouštěl svůj nově zkompilovaný software NodeJS zadáním absolutní cesty k binárnímu souboru.

/opt/node/bin/node

Funguje to. Ale to je přinejmenším nepříjemné. Ve skutečnosti existují dva běžné způsoby, jak to opravit.

Ve skutečnosti existují dva běžné způsoby, jak vyřešit nepříjemný problém zadání absolutní cesty k binárním souborům,
ale abyste jim porozuměli, musíte nejprve vědět, že váš shell nachází spustitelné soubory tak, že je hledá pouze v adresářích určených proměnnou prostředí PATH.

[email protected]:~/node$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Pokud zde na tomto systému Debian neuvedete explicitně žádný adresář jako součást názvu příkazu, shell nejprve vyhledá spustitelné programy v /usr/local/bin , a pokud není nalezen, do /usr/bin , a pokud není nalezen, do /bin pak pokud není nalezen do /usr/local/games pak pokud není nalezen do /usr/games , pak pokud nenalezen ... shell ohlásí chybu „příkaz nenalezen“ .

Vzhledem k tomu máme dva způsoby, jak zpřístupnit příkaz pro shell:jeho přidáním do jedné z již nakonfigurovaných PATH adresáře. Nebo přidáním adresáře obsahujícího náš spustitelný soubor do PATH .

Pouze kopíruji binární soubor uzlu spustitelný z /opt/node/bin do /usr/local/bin by byl špatný nápad, protože tak by spustitelný program již nebyl schopen najít další požadované komponenty patřící do /opt/node/ (je běžnou praxí, že software lokalizuje své zdrojové soubory vzhledem ke svému vlastnímu umístění).

Tradičním způsobem, jak toho dosáhnout, je použití symbolického odkazu:

[email protected]:~/node$ sudo ln -sT /opt/node/bin/node /usr/local/bin/node
[email protected]:~/node$ which -a node || echo not found
/usr/local/bin/node
[email protected]:~/node$ node --version
v8.1.1 (compiled by myself)

Jedná se o jednoduché a efektivní řešení, zvláště pokud je softwarový balík tvořen pouze několika dobře známými spustitelnými programy – protože musíte vytvořit symbolický odkaz pro každý uživatelsky vyvolatelný příkaz. Pokud například znáte NodeJS, znáte npm doprovodná aplikace Měl bych symbolický odkaz z /usr/local/bin také. Ale nechám to na vás jako cvičení.

Úprava PATH

Nejprve, pokud jste vyzkoušeli předchozí řešení, odstraňte dříve vytvořený symbolický odkaz uzlu a začněte z čistého stavu:

[email protected]:~/node$ sudo rm /usr/local/bin/node
[email protected]:~/node$ which -a node || echo not found
not found

A nyní je zde kouzelný příkaz ke změně PATH :

[email protected]:~/node$ export PATH="/opt/node/bin:${PATH}"
[email protected]:~/node$ echo $PATH
/opt/node/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Jednoduše řečeno, nahradil jsem obsah PATH proměnná prostředí podle svého předchozího obsahu, ale s předponou /opt/node/bin . Takže, jak si to nyní dokážete představit, shell se nejprve podívá do /opt/node/bin adresář pro spustitelné programy. Můžeme to potvrdit pomocí which příkaz:

[email protected]:~/node$ which -a node || echo not found
/opt/node/bin/node
[email protected]:~/node$ node --version
v8.1.1 (compiled by myself)

Zatímco řešení „odkaz“ je trvalé, jakmile vytvoříte symbolický odkaz do /usr/local/bin , PATH změna je účinná pouze do aktuálního shellu. Nechám vás, abyste si udělali průzkum, jak provést změny v PATH stálice. Jako nápověda to souvisí s vaším „profilem“. Pokud najdete řešení, neváhejte se o něj podělit s ostatními čtenáři pomocí sekce komentářů níže!

E. Jak odstranit nově nainstalovaný software ze zdrojového kódu

Protože náš vlastní kompilovaný software NodeJS je zcela v /opt/node-v8.1.1 adresář, odstranění tohoto softwaru nevyžaduje větší úsilí než použití příkazu rm k odstranění tohoto adresáře:

sudo rm -rf /opt/node-v8.1.1

POZOR: sudo a rm -rf jsou nebezpečný koktejl! Před stisknutím klávesy „enter“ vždy dvakrát zkontrolujte svůj příkaz. Pokud odstraníte nesprávný adresář, neobdržíte žádnou potvrzovací zprávu a žádné obnovení smazání…

Pak, pokud jste upravili PATH , budete muset tyto změny vrátit zpět, což není vůbec složité.

A pokud jste vytvořili odkazy z /usr/local/bin budete je muset všechny odstranit:

[email protected]:~/node$ sudo find /usr/local/bin \
                                 -type l \
                                 -ilname "/opt/node/*" \
                                 -print -delete
/usr/local/bin/node

Počkat? Kde bylo peklo závislosti?

Jako poslední komentář, pokud čtete o kompilaci vlastního softwaru, možná jste slyšeli o pekle závislostí. Toto je přezdívka pro tu nepříjemnou situaci, kdy předtím, než budete moci úspěšně zkompilovat software, musíte nejprve zkompilovat nezbytnou knihovnu, což zase vyžaduje jinou knihovnu, která by zase mohla být nekompatibilní s nějakým jiným softwarem, který jste již vytvořili. nainstalováno.

Součástí práce správců balíčků vaší distribuce je skutečně vyřešit to peklo závislostí a zajistit, aby různý software vašeho systému používal kompatibilní knihovny a byl instalován ve správném pořadí.

Pro tento článek jsem se záměrně rozhodl nainstalovat NodeJS, protože prakticky nemá závislosti. Řekl jsem „virtuálně“, protože ve skutečnosti závislosti. Ale zdrojový kód těchto závislostí je přítomen ve zdrojovém úložišti projektu (v node/deps podadresář), takže je nemusíte předem ručně stahovat a instalovat.

Ale pokud máte zájem porozumět tomuto problému více a dozvědět se, jak se s ním vypořádat, dejte mi vědět, že pomocí sekce komentářů níže:to by bylo skvělé téma pro pokročilejší článek!



Linux
  1. Jak nainstalovat, odebrat a aktualizovat software na Arch Linux

  2. Instalace a odebrání softwaru v Manjaro

  3. Jak zkompilovat a nainstalovat FFmpeg ze zdroje v CentOS/RHEL?

  1. Jak nainstalovat Ruby 2.0 a RubyGems 2.1.11 na Ubuntu 13.10 ze zdroje

  2. Jak zkompilovat ze zdroje a nainstalovat Nginx do Debian 7 (Wheezy) VPS

  3. Jak nainstalovat a nakonfigurovat Nginx ze zdroje na Linuxu

  1. Jak zkompilovat a nainstalovat Python3.5 a Python-pip ze zdroje na CentOS

  2. Jak zkompilovat a nainstalovat software ze zdrojového kódu na Linuxu

  3. Jak nainstalovat Apache CouchDB na CentOS 6 (ze zdroje a EPEL)