È possibile utilizzare yum e rpm per installare qualsiasi pacchetto nel repository della distribuzione. Ecco la ricetta:
Trova il nome del pacchetto
Usa yum search
.
Scarica
Scarica il pacchetto e tutte le sue dipendenze usando yumdownloader
(che è disponibile su CentOS per impostazione predefinita). Dovrai passarlo --resolve
per ottenere la risoluzione delle dipendenze. yumdownloader
viene scaricato nella directory corrente a meno che non specifichi un --destdir
.
mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common
Scegli una posizione del prefisso
Potrebbe essere ~
, ~/centos
o ~/y
. Se la tua casa è lenta perché si trova su un file system di rete, puoi inserirla in /var/tmp/...
.
mkdir ~/centos
Estrai tutti i pacchetti .rpm
Estrai tutti i pacchetti .rpm nella posizione del prefisso che hai scelto.
cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
rpm2cpio
restituisce il file .rpm come archivio .cpio su stdout.cpio
lo legge da stdin-i
significa estrarre (nella directory corrente)-d
significa creare la directory mancante
Puoi facoltativamente utilizzare -v
:prolisso
Configura l'ambiente
Dovrai configurare la variabile d'ambiente PATH
e LD_LIBRARY_PATH
affinché i pacchetti installati funzionino correttamente. Ecco l'esempio corrispondente dal mio ~/.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"
Nota modificata (grazie a @AmitNaidu per aver segnalato il mio errore):
Secondo la documentazione di bash sui file di avvio, quando ci si connette a un server tramite ssh, viene recuperato solo .bashrc:
Invocato dal demone della shell remota
Bash tenta di determinare quando viene eseguito con il suo input standard connesso a una connessione di rete, come quando viene eseguito dal demone della shell remota, solitamente rshd, o dal demone della shell sicura sshd. Se Bash determina che viene eseguito in questo modo, legge ed esegue i comandi da ~/.bashrc, se quel file esiste ed è leggibile.
Ora, se vuoi installare molti pacchetti in questo modo, potresti voler automatizzare il processo. In tal caso, dai un'occhiata a questo repository.
Nota extra:se stai tentando di installare uno qualsiasi dei file gcc, zlib, make, cmake, git, fish, zsh or tmux
, dovresti davvero prendere in considerazione l'utilizzo di conda, vedi la mia altra risposta.
TL;DR Usa Miniconda, conda-forge è incredibile.
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Oppure, in alternativa:
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
Pacchetti comunemente ricercati:
- gcc
conda install gcc
- zlib
conda install zlib
- crea
conda install make
- cmake
conda install cmake
- git
conda install git
- pesce
conda install -c conda-forge fish
- zsh
conda install -c ActivisionGameScience zsh
- tmux
conda install -c conda-forge tmux
- Questo tmux ha un bug con il nome della libreria ncurse che usa. Puoi aggirare il problema andando al tuo
da/lib
cartella e collegamento simbolicoln -sT libtinfow.so.6.1 libtinfo.so.6
- Questo tmux ha un bug con il nome della libreria ncurse che usa. Puoi aggirare il problema andando al tuo
Per il resto, puoi provare https://anaconda.org/search?q=
.
Ho provato a lungo a far funzionare bene un gestore di pacchetti su CentOS/RedHat, ma senza successo. Il meglio che potevo fare era installare un prefisso Gentoo nella posizione corretta su un altro CentOS con accesso root, quindi scp a .tar.xz
dell'intera installazione sul server di destinazione (unico modo per ottenere un gcc appropriato per Gentoo Prefix). Potrei emerge
(compila e installa) pacchetti sul server di destinazione, ma continuava a riscontrare problemi con locali e permessi.
Recentemente ho realizzato un'installazione utente di alcuni pacchetti interessanti utilizzando conda. Ecco come installarlo dalla riga di comando:
curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh
Se, come me, la tua cartella home è ospitata su un'unità remota (un file system di rete), potresti non voler installarla nella tua cartella home, quindi potresti voler usare qualcosa come mkdir /var/tmp/lo
quindi specifica una cartella di installazione come /var/tmp/lo/da
durante l'installazione.
Sarai quindi in grado di installare molti pacchetti, anche se forse non tutti quelli che volevi. La maggior parte delle volte, se non è nel canale predefinito, sarà in conda-forge
. Puoi controllare i pacchetti esistenti su https://anaconda.org/search?q=
Altri gestori di pacchetti che ho provato a usare dopo conda:
Linuxbrew
Ho pensato che con ciò sarebbe stato facile installare homebrew (linuxbrew) ma i loro sorgenti sono disordinati e usano il percorso assoluto codificato per l'interprete ruby, che fallisce perché non è l'ultima versione e così via e così via e ho dato su.
Niente
Nix richiede ancora di utilizzare la cartella /nix. L'hanno anche hardcoded ed è difficile sedarlo correttamente da ogni download che deve fare durante l'installazione (per non parlare degli aggiornamenti).
Prefisso Gentoo
Mi aspetto che Gentoo Prefix sia più facile da installare direttamente ora che gcc può essere utilizzato sul server di destinazione. -- Ok, ho provato ma ho riscontrato bug di autorizzazione durante l'installazione (28-09-2018):
portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)
PkgSrc
Adesso proverò pkgsrc. -- Utilizzare la versione (precedente) EL 6.x a 64 bit se su CentOS 6 o se si riscontrano problemi di versione (G)LibC con quella 7.x. -- Nessuna fortuna, pkgsrc hardcoded /usr/pkg/sbin
e /usr/pkg/bin
. Quindi non può essere utilizzato come utente, a meno che non si crei un ambiente fakechroot. Ma non l'ho mai fatto e mi aspetto problemi di usabilità.
Commenta/rispondi se riesci a installare qualsiasi altro gestore di pacchetti.