Pro instalaci libovolného balíčku do úložiště distribuce je možné použít yum a rpm. Zde je recept:
Najděte název balíčku
Použijte yum search
.
Stáhnout
Stáhněte si balíček a všechny jeho závislosti pomocí yumdownloader
(který je standardně dostupný na CentOS). Budete jej muset předat --resolve
získat řešení závislosti. yumdownloader
stáhne se do aktuálního adresáře, pokud nezadáte --destdir
.
mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common
Vyberte umístění předpony
Může to být ~
, ~/centos
nebo ~/y
. Pokud je váš domov pomalý, protože je na síťovém souborovém systému, můžete jej vložit do /var/tmp/...
.
mkdir ~/centos
Rozbalte všechny balíčky .rpm
Extrahujte všechny balíčky .rpm do zvoleného umístění předpony.
cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
rpm2cpio
vydá soubor .rpm jako archiv .cpio na stdout.cpio
čte to z stdin-i
znamená extrahovat (do aktuálního adresáře)-d
znamená vytvořit chybějící adresář
Volitelně můžete použít -v
:podrobný
Nakonfigurujte prostředí
Budete muset nakonfigurovat proměnnou prostředí PATH
a LD_LIBRARY_PATH
aby nainstalované balíčky fungovaly správně. Zde je odpovídající ukázka z mého ~/.bashrc
:
export PATH="$HOME/centos/usr/sbin:$HOME/centos/usr/bin:$HOME/centos/bin:$PATH"
L='/lib:/lib64:/usr/lib:/usr/lib64'
export LD_LIBRARY_PATH="$L:$HOME/centos/usr/lib:$HOME/centos/usr/lib64"
Upravená poznámka (děkuji @AmitNaidu za upozornění na mou chybu):
Podle dokumentace bash o spouštěcích souborech se při připojování k serveru přes ssh získává pouze .bashrc:
Vyvoláno vzdáleným démonem shellu
Bash se pokouší určit, kdy je spuštěn se svým standardním vstupem připojeným k síťovému připojení, jako když je spuštěn vzdáleným shellovým démonem, obvykle rshd, nebo bezpečným shellovým démonem sshd. Pokud Bash zjistí, že je spouštěn tímto způsobem, čte a provádí příkazy z ~/.bashrc, pokud tento soubor existuje a je čitelný.
Nyní, pokud chcete tímto způsobem nainstalovat mnoho balíčků, možná budete chtít tento proces zautomatizovat. Pokud ano, podívejte se na toto úložiště.
Další poznámka:pokud se pokoušíte nainstalovat některý z gcc, zlib, make, cmake, git, fish, zsh or tmux
, měli byste opravdu zvážit použití conda, viz moje další odpověď.
TL;DR Použijte Minicondu, conda-forge je úžasná.
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Nebo alternativně:
curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh > Miniconda.sh
bash Miniconda.sh -b -p ~/conda
# -b is used to specify that this is done "in batch", so skip the EULA prompt
# -p lets you specify where you want conda installed
Běžně požadované balíčky:
- gcc
conda install gcc
- zlib
conda install zlib
- vytvořit
conda install make
- cmake
conda install cmake
- git
conda install git
- ryba
conda install -c conda-forge fish
- zsh
conda install -c ActivisionGameScience zsh
- tmux
conda install -c conda-forge tmux
- Tento tmux má chybu s názvem knihovny ncurse, kterou používá. Můžete to obejít tak, že přejdete na
da/lib
složka a symbolické propojeníln -sT libtinfow.so.6.1 libtinfo.so.6
- Tento tmux má chybu s názvem knihovny ncurse, kterou používá. Můžete to obejít tak, že přejdete na
Pro zbytek můžete zkusit https://anaconda.org/search?q=
.
Dlouho jsem se snažil přimět správce balíčků, aby dobře fungoval na CentOS/RedHat, ale bez úspěchu. Nejlepší, co jsem mohl udělat, bylo nainstalovat Gentoo Prefix do správného umístění na jiném CentOS s přístupem root a pak scp a .tar.xz
celé instalace na cílový server (jediný způsob, jak získat správné gcc pro Gentoo Prefix). Mohl jsem emerge
(sestavit a nainstalovat) balíčky na cílovém serveru, ale stále narážely na problémy s místními obyvateli a oprávněními.
Nedávno jsem dosáhl uživatelské instalace některých zajímavých balíčků pomocí conda. Zde je návod, jak jej nainstalovat z příkazového řádku:
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Pokud jako já je vaše domovská složka umístěna na vzdáleném disku (síťový souborový systém), možná ji nebudete chtít instalovat do domovské složky, takže možná budete chtít použít něco jako mkdir /var/tmp/lo
poté zadejte instalační složku jako /var/tmp/lo/da
během instalace.
Potom budete moci nainstalovat poměrně hodně balíčků, i když možná ne všechny, které jste chtěli. Většinu času, pokud není ve výchozím kanálu, bude v conda-forge
. Existující balíčky můžete zkontrolovat na https://anaconda.org/search?q=
Další správci balíčků, které jsem se pokusil použít po conda:
Linuxbrew
Myslel jsem, že s tím bude snadné nainstalovat homebrew (linuxbrew), ale jejich zdroje jsou chaotické a používají pevně zakódovanou absolutní cestu k interpretru ruby, který selže, protože to není poslední verze a tak dále a tak dále a dal jsem nahoru.
Nix
Nix stále vyžaduje, abyste používali složku /nix. Také to napevno zakódovali a je těžké to správně nastavit při každém stažení, které musí provést během instalace (natož aktualizací).
Předpona Gentoo
Očekávám, že Gentoo Prefix bude snazší instalovat přímou nyní, když můžeme gcc použít na cílovém serveru. -- Dobře, zkusil jsem to, ale během instalace (2018-09-28) jsem narazil na chyby v oprávněních:
portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)
PkgSrc
Teď zkusím pkgsrc. -- Použijte (starší) verzi 64bitové verze EL 6.x, pokud používáte CentOS 6 nebo pokud narazíte na problémy s verzí (G)LibC s verzí 7.x. -- Žádné štěstí, pevné kódy pkgsrc /usr/pkg/sbin
a /usr/pkg/bin
. Takže to nemůže být použito jako uživatel, pokud možná nenastavíte prostředí fakechroot. Ale nikdy jsem to nedělal a očekávám problémy s použitelností.
Prosím komentujte/odpovězte, pokud se vám podaří nainstalovat jakýkoli jiný správce balíčků.