GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menginstal paket di Linux (CentOS) tanpa pengguna root dengan penanganan ketergantungan otomatis?

Dimungkinkan untuk menggunakan yum dan rpm untuk menginstal paket apa pun di repositori distribusi. Ini resepnya:

Temukan nama paket

Gunakan yum search .

Unduh

Unduh paket dan semua dependensinya menggunakan yumdownloader (yang tersedia di CentOS secara default). Anda harus meneruskannya --resolve untuk mendapatkan resolusi ketergantungan. yumdownloader mengunduh ke direktori saat ini kecuali Anda menentukan --destdir .

mkdir -p ~/rpm
yumdownloader --destdir ~/rpm --resolve vim-common

Pilih lokasi awalan

Mungkin ~ , ~/centos , atau ~/y . Jika rumah Anda lambat karena menggunakan sistem file jaringan, Anda dapat memasukkannya ke dalam /var/tmp/... .

mkdir ~/centos

Ekstrak semua paket .rpm

Ekstrak semua paket .rpm ke lokasi awalan pilihan Anda.

cd ~/centos && rpm2cpio ~/rpm/x.rpm | cpio -id
  • rpm2cpio menampilkan file .rpm sebagai arsip .cpio di stdout.
  • cpio membacanya dari dari stdin
  • -i berarti ekstrak (ke direktori saat ini)
  • -d berarti buat direktori yang hilang

Secara opsional, Anda dapat menggunakan -v :bertele-tele

Konfigurasi lingkungan

Anda perlu mengonfigurasi variabel lingkungan PATH dan LD_LIBRARY_PATH agar paket yang diinstal berfungsi dengan benar. Ini adalah contoh yang sesuai dari ~/.bashrc saya :

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"

Catatan yang diedit (terima kasih kepada @AmitNaidu karena telah menunjukkan kesalahan saya):

Menurut dokumentasi bash tentang file startup, saat terhubung ke server melalui ssh, hanya .bashrc yang bersumber:

Dipanggil oleh daemon shell jarak jauh

Bash mencoba untuk menentukan kapan dijalankan dengan input standarnya yang terhubung ke koneksi jaringan, seperti ketika dijalankan oleh daemon shell jarak jauh, biasanya rshd, atau daemon shell aman sshd. Jika Bash menentukan sedang dijalankan dengan cara ini, Bash membaca dan mengeksekusi perintah dari ~/.bashrc, jika file itu ada dan dapat dibaca.

Sekarang jika Anda ingin menginstal banyak paket dengan cara itu, Anda mungkin ingin mengotomatiskan prosesnya. Jika ya, lihat repositori ini.

Catatan tambahan:jika Anda mencoba memasang salah satu dari gcc, zlib, make, cmake, git, fish, zsh or tmux , Anda harus benar-benar mempertimbangkan untuk menggunakan conda, lihat jawaban saya yang lain.


TL;DR Gunakan Miniconda, conda-forge luar biasa.

curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh

Atau, sebagai alternatif:

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

Paket yang biasanya diinginkan:

  • gcc conda install gcc
  • zlib conda install zlib
  • buat conda install make
  • cmake conda install cmake
  • git conda install git
  • ikan conda install -c conda-forge fish
  • zsh conda install -c ActivisionGameScience zsh
  • tmux conda install -c conda-forge tmux
    • Tmux ini memiliki bug dengan nama pustaka ncurse yang digunakannya. Anda dapat mengatasinya dengan membuka da/lib Anda folder dan menyinkronkan ln -sT libtinfow.so.6.1 libtinfo.so.6

Selebihnya, Anda dapat mencoba https://anaconda.org/search?q= .

Saya sudah lama mencoba membuat manajer paket bekerja dengan baik di CentOS/RedHat tetapi tidak berhasil. Yang terbaik yang bisa saya lakukan adalah menginstal Awalan Gentoo di lokasi yang benar di CentOS lain dengan akses root, lalu scp .tar.xz dari seluruh instalasi ke server target (satu-satunya cara untuk mendapatkan gcc yang tepat untuk Awalan Gentoo). Saya bisa emerge (bangun &instal) paket di server target tetapi terus mengalami masalah dengan penduduk setempat dan izin.

Saya baru-baru ini mendapatkan instalasi pengguna dari beberapa paket menarik menggunakan conda. Berikut cara menginstalnya dari baris perintah:

curl "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh" | sh

Jika seperti saya, folder rumah Anda dihosting di drive jarak jauh (sistem file jaringan), Anda mungkin tidak ingin menginstalnya di folder rumah Anda, jadi Anda mungkin ingin menggunakan sesuatu seperti mkdir /var/tmp/lo kemudian tentukan folder instalasi seperti /var/tmp/lo/da selama penginstalan.

Anda kemudian dapat menginstal cukup banyak paket, meskipun mungkin tidak semua yang Anda inginkan. Sering kali, jika tidak ada di saluran default, itu akan ada di conda-forge . Anda dapat memeriksa paket yang ada di https://anaconda.org/search?q=

Manajer paket lain yang saya coba gunakan setelah conda:

Linuxbrew

Saya pikir dengan itu akan mudah untuk menginstal homebrew (linuxbrew) tetapi sumbernya berantakan dan menggunakan jalur absolut yang dikodekan keras ke juru bahasa Ruby, yang gagal karena ini bukan versi terakhir dan seterusnya dan seterusnya dan saya memberi naik.

Nix

Nix masih mengharuskan Anda untuk menggunakan folder /nix. Mereka juga melakukan hard-code dan sulit untuk melakukannya dengan benar dari setiap unduhan yang harus dilakukan selama penginstalan (apalagi pembaruan).

Awalan Gentoo

Saya berharap Gentoo Prefix lebih mudah untuk menginstal langsung sekarang karena kita gcc dapat digunakan di server target. -- Oke, saya sudah mencoba tetapi menemui bug izin selama penginstalan (28-09-2018):

portage.exception.OperationNotPermitted: chown(b'~/gentoo/tmp/var/tmp/portage/sys-apps/gentoo-functions-0.12/image/var', 2000, 2000)

PkgSrc

Saya akan mencoba pkgsrc sekarang. -- Gunakan (lebih lama) versi 64-bit EL 6.x jika menggunakan CentOS 6 atau jika mengalami masalah versi (G)LibC dengan versi 7.x. -- Tidak berhasil, kode keras pkgsrc /usr/pkg/sbin dan /usr/pkg/bin . Jadi tidak bisa digunakan sebagai pengguna, kecuali mungkin menyiapkan lingkungan fakechroot. Tapi saya belum pernah melakukannya dan saya menduga ada masalah kegunaan.

Harap beri komentar/jawab jika Anda berhasil memasang pengelola paket lainnya.


Linux
  1. Cara menginstal Nextcloud dengan ISPConfig 3.1

  2. Cara menginstal Erlang di Rocky Linux/Alma Linux/CentOS 8

  3. Cara Mengelola CentOS Linux dengan GUI

  1. Tambahkan Pengguna ke Grup di Linux, Bagaimana Melakukannya (Dengan Contoh)

  2. Instal WordPress di Linux dengan Apache

  3. Bagaimana cara mengetahui izin pengguna tertentu di Linux dengan akses root?

  1. Bagaimana memberi pengguna hak akses root di Kali Linux

  2. Cara Menginstal File RPM (Paket) di CentOS Linux

  3. UNIX / Linux :Cara menghapus pengguna setara root (Pengguna Non-Root dengan UID 0)