Saya ingin menginstal paket perangkat lunak, mirip dengan apt-get install <foo>
tetapi:
- Tanpa
sudo
, dan - Ke dalam direktori lokal
Tujuan dari latihan ini adalah untuk mengisolasi build independen di server integrasi berkelanjutan saya .
Saya tidak keberatan mengkompilasi dari sumber, jika itu yang diperlukan, tapi jelas saya lebih suka pendekatan sesederhana mungkin. Saya mencoba apt-get source --compile <foo>
seperti yang disebutkan di sini tetapi saya tidak bisa membuatnya berfungsi untuk paket seperti autoconf. Saya mendapatkan kesalahan berikut:
dpkg-checkbuilddeps: Unmet build dependencies: help2man
Saya memiliki help2man yang dikompilasi di direktori lokal, tetapi saya tidak tahu bagaimana cara memberitahu apt-get itu. Ada ide?
PEMBARUAN : Saya menemukan jawaban yang hampir berfungsi di https://askubuntu.com/a/350/23678 . Masalahnya chroot
adalah itu membutuhkan sudo. Masalahnya apt-get source
adalah bahwa saya tidak tahu cara menyelesaikan dependensi. Saya harus mengatakan, chroot
terlihat sangat menarik. Apakah ada perintah setara yang tidak memerlukan sudo?
sudo
dan ke direktori non-sistem.Jawaban:
Ini, secara umum, tidak bisa dilakukan, karena Anda akan mengacaukan dengan sistem dependensi apt.
Ada dua solusi:
Instal paket sumber, ubah ke direktori sumber, konfigurasikan dan instal paket terlepas dari sistem pengemasan secara manual ke direktori pilihan Anda.
Ini tidak perlu root, mengunduh sumber paket, membukanya di direktori di dalam direktori saat ini. Anda kemudian dapat mengubah ke direktori itu, membuat modifikasi ke sumber, mengkonfigurasi instalasi ke target lain dll.
Mengonfigurasi direktori instalasi mana yang harus diikuti oleh program tergantung pada program tertentu. Banyak program menggunakan
./configure --prefix localdir
untuk menargetkan instalasi ke localdir; tetapi sejauh ini tidak selalu demikian.Buat lingkungan chroot di mana Anda akan menginstal paket:
Sekarang Anda telah membuat instalasi dummy di direktori myfancyinstall /
Anda dapat menggunakan instalasi apt-get dalam kandang chroot untuk menginstal apa pun yang Anda inginkan.
sumber
apt-get source
tanpa--compile
tampaknya menekan peringatan tentang dependensi yang tidak terpenuhi (memungkinkan saya untuk menyelesaikannya sendiri)ar vx mypackage.deb
. Kemudian menganalisis isi paket dan mencari tahu cara menginstalnya secara manual.menggunakan bash shell, dan mendapatkan file "package.deb" (dengan asumsi nama paket adalah "paket") Anda dapat menjalankan perintah berikut untuk mencapai apa yang Anda inginkan - menginstal paket sehingga direktori home Anda diperlakukan dengan cara yang sama "/ "akan diperlakukan dalam instalasi normal.
Ini perintahnya:
Anda mungkin menghadapi beberapa kesalahan, seperti $ HOME / var / lib / dpkg / lock yang hilang jadi buat saja semua file yang hilang yang akan Anda dapatkan dari kesalahan dan kemudian instal akan bekerja tanpa sudo.
perhatikan bahwa jika "apt-get download" tidak berfungsi, Anda dapat mencoba "apt unduh" atau "paket unduhan apitutde".
jika tidak ada metode yang bekerja, Anda bisa mengunduh paket secara manual dari http://packages.ubuntu.com/
metode lain adalah dengan menjalankan perintah chroot dengan parameter $ HOME dan kemudian menginstal cara yang sama seperti di atas hanya tanpa --root = $ HOME. perintah itu akan membawa Anda ke dalam shell di mana "/" adalah $ HOME Anda saat ini. untuk kembali ke mode normal jangan lupa untuk "keluar"
semoga berhasil.
sumber
Jika Anda menggunakan web-hoster bersama dengan
ssh
akses tetapi tidakapt-get
ada root, dll. Atau sistem serupa yang dibatasi, yang berikut ini mungkin cocok untuk Anda. Ini bekerja untuk saya pada sistem di manauname -a
mengembalikan sesuatu sepertiSMP Debian 4.9.65-3+deb9u2~bpo8+1 (2017-01-05) x86_64 GNU/Linux
sumber