Bagaimana saya bisa menginstal paket tanpa akses root?

126

Saya tidak memiliki akses root pada mesin ini.

Saya ingin tahu apakah ada cara saya dapat mengunduh paket Ubuntu dan menginstalnya sebagai non-root?

Mungkin di saya ~/binatau ~/usr/shareatau sesuatu seperti itu? Apakah itu akan berhasil?

Weboide
sumber
1
Semoga mereka akan segera mendukungnya.
Domi
4
Anda dapat menggunakan aplikasi portabel untuk linux: tidak perlu menginstal, tidak perlu root. Temukan di appimage.org . Bahkan Linus Torvalds menyukainya. Itu aneh, karena Linus tidak pernah menyukai apa pun.
ipse lute
Saya sarankan mencoba fakechroot .
Robert Pollak
Kombinasi dpk -xdan mvbekerja untuk saya. Atau, jika bahkan dpktidak tersedia, ardan perpipaan / penggabungan dengan tarbekerja untuk saya pada sistem yang sangat terbatas, lihat di sini
iolsmit
Terkait dengan Unix & Linux : Manajer Paket Non-Root
Eliah Kagan

Jawaban:

107

Apt tidak mendukungnya secara langsung, tetapi ada cara untuk melakukannya.

Salah satunya adalah menggunakan schrootuntuk membuat chroot non-root. Ini adalah proses yang agak terlibat , tetapi Anda harus dapat menemukan bantuan komunitas karena banyak pengembang mengatur lingkungan chroot untuk mengkompilasi kode.

Cara kedua yang saya tahu adalah menginstal dari paket deb. Anda mungkin dapat mengunduh ini dari situs web atau jika ada di repositori Ubuntu yang dapat Anda unduh.

apt-get download package

Ganti packagedengan nama paket

Setelah Anda memiliki panggilan file deb Anda dpkglangsung dari baris perintah. Contoh berikut akan menginstal package.deb ke direktori home Anda.

dpkg -i package.deb --force-not-root --root=$HOME 

Kerugian menggunakan dpkg seperti ini adalah bahwa pesan kesalahan cenderung samar; dpkg tidak secara otomatis menyelesaikan dependensi atau membuat struktur direktori yang diharapkan.

Terakhir, Anda bisa menggunakan apt-get sourceperintah untuk mengambil sumber paket dan mengkonfigurasinya untuk menginstal secara lokal. Biasanya ini terlihat seperti:

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

Kerugian dari pendekatan ini adalah bahwa Anda memerlukan lingkungan pengembangan yang tersedia untuk pendekatan ini untuk bekerja sama sekali, dan Anda mungkin menemukan diri Anda menyusun lusinan paket untuk menyelesaikan semua dependensi.

SUNTING:

Karena dpkg -itidak berfungsi (lihat komentar), saya menyarankan alternatif ini:

dpkg -x package.deb dir

Ini akan mengekstrak paket deb untuk dir. Kemudian Anda dapat mengekspor PATH di mana biner berada. Selama semua dependensi dari binary diinstal, ia harus berjalan seperti biasa.

jbowtie
sumber
1
Jika Anda memiliki akses root tetapi tidak ingin menginstal paket tertentu secara global, Anda dapat menggunakan sudo apt-get build-dep packageuntuk menginstal semua yang diperlukan untuk membangun sebuah paket (setelah mendapatkan sumbernya apt-get source).
Vladimir Panteleev
19
Jawaban ini ditulis kembali pada tahun 2010. Apakah ada perubahan pada bagaimana hal ini dilakukan sejak saat itu?
becko
36
Bahkan dengan --force-not-root, saya mendapatkan "dpkg: error: operasi yang diminta membutuhkan hak superuser"
Clément
10
Orang,, --force-not-root --root=$HOMEatau variasi daripadanya tidak akan berfungsi. Paket biner Debian tidak dirancang untuk diinstal di direktori home, titik. Atau, dengan kata lain, "Contoh berikut ini akan menginstal package.deb ke direktori home Anda." Tidak, tidak akan.
Faheem Mitha
1
Sayangnya ini tidak akan berhasil. Saya mencoba--force-not-root --root=/your/custom/path
Viet
16

Saya berasumsi Anda ingin menginstal jedit . Pertama, Anda harus menemukan paket dan mengunduhnya. Saya hanya mengambil file deb dari beberapa mirror dan membuka konsol / terminal:

  1. mkdir /tmp/jedit && cd /tmp/jedit- Membuat direktori baru tmpdan mengubahnya.
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb - Paket unduhan
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.debatau, mudah diketik, ar x *.deb- ini mengekstraksi konten file
  4. tar xvzf data.tar.gz- file data.tar.gzmemiliki semua hal yang Anda perlukan untuk menjalankan perangkat lunak
  5. usr/bin/jedit membuka editor
  6. Selesai :-)

Anda dapat memindahkan file ke beberapa titik di direktori home Anda dan menjalankannya dari sana.

qbi
sumber
11
Perhatikan bahwa skrip pra dan pasca pemasangan tidak dapat dijalankan; Anda juga harus menyelesaikan sendiri dependensi atau jalur apa pun. Tetapi pada instalasi standar ini sudah cukup untuk banyak aplikasi desktop.
jbowtie
Anda juga dapat mengunduh paket tanpa mencarinya, cukup lakukan unduhan apt-get (lihat jawaban lain)
lib
saya yakin tautan Anda rusak.
Winnemucca
9

Saya menulis sebuah program bernama JuJu yang pada dasarnya memungkinkan untuk memiliki distribusi linux yang sangat kecil (hanya berisi manajer paket) di dalam direktori $ HOME / .juju Anda.

Memungkinkan sistem kustom Anda di dalam direktori home dapat diakses melalui proot dan, karenanya, Anda dapat menginstal paket apa pun tanpa hak root. Ini akan berjalan dengan baik untuk semua distribusi linux utama, satu-satunya batasan adalah JuJu dapat berjalan pada kernel linux dengan versi minimum yang direkomendasikan versi 2.6.32.

Sebagai contoh, setelah menginstal JuJu untuk menginstal jedit:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit
pengguna967489
sumber
Ini akan berjalan dengan baik di Ubuntu kan?
Seth
Ya, jika versi linux dari ubuntu lebih besar atau sama dengan 2.6.32 itu akan berfungsi.
user967489
2
Pada awalnya saya pikir Anda membicarakan hal ini . Huruf kapital kedua membuat perbedaan.
kon psych
1
Pertanyaannya adalah apakah kita bisa menginstal paket Ubuntu. Dengan junest, kita hanya akan dapat menginstal paket ArchLinux dan BUKAN paket Ubuntu. Misalnya, jika paket yang sama tidak tersedia untuk ArchLinux, maka ini tidak akan membantu. Yang mengatakan, terima kasih untuk Junest.
Kiran