Es ist möglich, yum und rpm zu verwenden, um jedes Paket im Repository der Distribution zu installieren. Hier ist das Rezept:
Suchen Sie den Paketnamen
Verwenden Sie yum search
.
Herunterladen
Laden Sie das Paket und alle seine Abhängigkeiten mit yumdownloader
herunter (was standardmäßig auf CentOS verfügbar ist). Sie müssen ihn passieren --resolve
Abhängigkeitsauflösung zu erhalten. yumdownloader
Downloads in das aktuelle Verzeichnis, es sei denn, Sie geben einen --destdir
an .
mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common
Wählen Sie einen Präfix-Standort aus
Es könnte ~
sein , ~/centos
, oder ~/y
. Wenn Ihr Zuhause langsam ist, weil es sich auf einem Netzwerkdateisystem befindet, können Sie es in /var/tmp/...
einfügen .
mkdir ~/centos
Extrahieren Sie alle .rpm-Pakete
Extrahieren Sie alle .rpm-Pakete an den von Ihnen gewählten Präfix-Speicherort.
cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
rpm2cpio
gibt die .rpm-Datei als .cpio-Archiv auf stdout aus.cpio
liest es von stdin-i
bedeutet extrahieren (in das aktuelle Verzeichnis)-d
bedeutet fehlendes Verzeichnis erstellen
Sie können optional -v
verwenden :ausführlich
Umgebung konfigurieren
Sie müssen die Umgebungsvariable PATH
konfigurieren und LD_LIBRARY_PATH
damit die installierten Pakete korrekt funktionieren. Hier ist das entsprechende Beispiel aus meinem ~/.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"
Bearbeitete Anmerkung (danke an @AmitNaidu für den Hinweis auf meinen Fehler):
Gemäß der Bash-Dokumentation zu Startdateien wird beim Herstellen einer Verbindung zu einem Server über ssh nur .bashrc bezogen:
Aufgerufen durch entfernten Shell-Daemon
Bash versucht festzustellen, wann es mit seiner Standardeingabe ausgeführt wird, die mit einer Netzwerkverbindung verbunden ist, wie wenn es vom Remote-Shell-Daemon, normalerweise rshd, oder dem Secure-Shell-Daemon sshd ausgeführt wird. Wenn Bash feststellt, dass es auf diese Weise ausgeführt wird, liest und führt es Befehle aus ~/.bashrc aus, wenn diese Datei existiert und lesbar ist.
Wenn Sie nun viele Pakete auf diese Weise installieren möchten, möchten Sie den Vorgang möglicherweise automatisieren. Wenn ja, werfen Sie einen Blick auf dieses Repository.
Zusätzliche Anmerkung:Wenn Sie versuchen, gcc, zlib, make, cmake, git, fish, zsh or tmux
zu installieren , sollten Sie wirklich die Verwendung von Conda in Betracht ziehen, siehe meine andere Antwort.
TL;DR Verwenden Sie Miniconda, Conda-Forge ist erstaunlich.
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Oder alternativ:
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
Häufig gesuchte Pakete:
- gcc
conda install gcc
- zlib
conda install zlib
- machen Sie
conda install make
- cmake
conda install cmake
- git
conda install git
- Fisch
conda install -c conda-forge fish
- zsh
conda install -c ActivisionGameScience zsh
- tmux
conda install -c conda-forge tmux
- Dieser tmux hat einen Fehler im Namen der verwendeten Ncurse-Bibliothek. Sie können dies umgehen, indem Sie zu Ihrem
da/lib
gehen Ordner und Symlinkln -sT libtinfow.so.6.1 libtinfo.so.6
- Dieser tmux hat einen Fehler im Namen der verwendeten Ncurse-Bibliothek. Sie können dies umgehen, indem Sie zu Ihrem
Für den Rest können Sie https://anaconda.org/search?q=
versuchen .
Ich habe lange versucht, einen Paketmanager dazu zu bringen, unter CentOS/RedHat gut zu funktionieren, aber ohne Erfolg. Das Beste, was ich tun konnte, war, ein Gentoo-Präfix an der richtigen Stelle auf einem anderen CentOS mit Root-Zugriff zu installieren und dann einen .tar.xz
zu scp der gesamten Installation auf den Zielserver (einziger Weg, um einen richtigen gcc für Gentoo Prefix zu erhalten). Ich könnte emerge
(Erstellen und Installieren) von Paketen auf dem Zielserver, aber es gab immer wieder Probleme mit Lokalen und Berechtigungen.
Ich habe kürzlich eine Benutzerinstallation einiger interessanter Pakete mit conda erreicht. So installieren Sie es über die Befehlszeile:
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Wenn Ihr Home-Ordner wie ich auf einem Remote-Laufwerk (einem Netzwerkdateisystem) gehostet wird, möchten Sie ihn vielleicht nicht in Ihrem Home-Ordner installieren, also sollten Sie etwas wie mkdir /var/tmp/lo
verwenden Geben Sie dann einen Installationsordner wie /var/tmp/lo/da
an während der Installation.
Sie können dann ziemlich viele Pakete installieren, wenn auch vielleicht nicht alle, die Sie wollten. Wenn es sich nicht im Standardkanal befindet, wird es meistens in conda-forge
sein . Unter https://anaconda.org/search?q=
können Sie nach vorhandenen Paketen suchen
Andere Paketmanager, die ich versucht habe, nach conda zu verwenden:
Linuxbrew
Ich dachte, dass es damit einfach wäre, Homebrew (Linuxbrew) zu installieren, aber ihre Quellen sind chaotisch und verwenden einen hartcodierten absoluten Pfad zum Ruby-Interpreter, der fehlschlägt, weil es nicht die letzte Version ist und so weiter und so weiter und ich gab hoch.
Nichts
Nix erfordert weiterhin die Verwendung des /nix-Ordners. Sie haben es auch hartcodiert und es ist schwierig, es bei jedem Download, der während der Installation durchgeführt werden muss, korrekt zu speichern (ganz zu schweigen von Updates).
Gentoo-Präfix
Ich gehe davon aus, dass Gentoo Prefix jetzt einfacher direkt zu installieren ist, da wir gcc auf dem Zielserver verwenden können. -- Ok, ich habe es versucht, bin aber während der Installation auf Berechtigungsfehler gestoßen (2018-09-28):
portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)
PkgSrc
Ich werde es jetzt mit pkgsrc versuchen. -- Verwenden Sie die (ältere) Version 64-Bit EL 6.x, wenn Sie CentOS 6 verwenden oder wenn Probleme mit der (G)LibC-Version mit 7.x auftreten. -- Kein Glück, pkgsrc kodiert fest /usr/pkg/sbin
und /usr/pkg/bin
. Es kann also nicht als Benutzer verwendet werden, es sei denn, es wird vielleicht eine Fakechroot-Umgebung eingerichtet. Aber ich habe das noch nie gemacht und ich erwarte Usability-Probleme.
Bitte kommentieren/antworten Sie, wenn es Ihnen gelingt, einen anderen Paketmanager zu installieren.