Mintalah untuk menginstal program setelah “Program 'x' saat ini tidak diinstal”

18

Jika Anda mencoba menjalankan program yang tidak diinstal, Anda akan mendapatkan pesan

The program 'x' is currently not installed. You can install it by typing: 
sudo apt-get install x

dan alih-alih menawarkan Anda menginstal program untuk Anda, Anda harus mengetik perintah yang sebenarnya. Bagaimana perilaku ini bisa diubah?

Burger Gerhard
sumber

Jawaban:

17

Paket yang bertanggung jawab untuk perilaku ini adalah paket perintah-tidak-ditemukanInstal perintah-tidak-ditemukan , dan sudah termasuk perilaku yang diinginkan meskipun dinonaktifkan secara default. Anda dapat mengaktifkannya dengan menambahkan baris berikut ke~/.bashrc

export COMMAND_NOT_FOUND_INSTALL_PROMPT=1

Sekarang perilakunya berubah menjadi

The program 'x' is currently not installed. You can install it by typing:
sudo apt-get install x
Do you want to install it? (N/y)

Catatan: Jika Anda mendapatkan pesan tentang menabrak python (khusus AttributeError: 'str' object has no attribute 'decode') ini adalah bug 1073919 . Perbaikan sudah tersedia untuk Raring dan Saucy. Atau ( hanya pengguna tingkat lanjut ), Anda dapat mengubah file /usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py, melihat diff terlampir ke laporan bug untuk baris yang perlu diubah.

Sunting: Perbaikan sekarang dirilis dalam versi 0.3ubuntu7.1 di Raring (SRU) dan untuk 0.3ubuntu8 di Saucy.

Burger Gerhard
sumber
1

Solusi saya adalah campuran antara keamanan dan kenyamanan:

auto-apt memeriksa akses file dari program yang berjalan dalam lingkungannya, dan jika suatu program mencoba mengakses file yang diketahui termasuk dalam paket yang dihapus, auto-apt akan menginstal paket itu menggunakan apt-get. Fitur ini membutuhkan apt dan sudo agar berfungsi. Ini juga menyediakan basis data sederhana untuk mencari paket mana yang berisi file yang diminta.

Ini adalah terminal-emulator di mana Anda memasuki lingkungan di mana setiap akses file diverifikasi sebelumnya oleh auto-apt dan jika tidak ada itu mencari dalam database (a la apt-file) dan mengunduh dan menginstal paket yang diinginkan, kemudian memungkinkan program untuk melanjutkan . Anda harus menjalankannya sebagai root:

sudo auto-apt

Ini berguna dalam kasus di mana Anda sedang membangun sebuah paket dan tidak berminat berada di depan layar mencari setiap kesalahan konfigurasi untuk header yang hilang, dll.

Ini juga dapat digunakan sebagai pengganti apt-get + apt-file di mana Anda dapat menginstal program hanya mengatakan commanduntuk menjalankannya.

Anda harus memahami bahwa Anda tidak boleh membiarkannya terbuka ketika sistem Anda tidak terlihat, karena hampir seolah-olah Anda menggunakan pengguna root.

Halaman manual : http://derpi.tuwien.ac.at/cgi-bin/man/man2html?1+auto-apt

Braiam
sumber
0

Menginstal otomatis akan menjadi ide yang buruk. Jika Anda ingin menyimpan beberapa pengetikan, Anda dapat menggunakannya

sudo apt-get install !!

di mana !!akan digantikan oleh perintah terakhir dari sejarah. Anda mungkin bisa membuat ini sebagai alias juga, tapi saya tidak tahu cara menambahkan !!tanpa mengevaluasinya.

Ada beberapa peringatan, seperti yang disebutkan oleh @ eliah-kagan dan @gertvdijk dalam komentar. Beberapa program tidak memiliki nama paket yang sama dengan biner yang akan Anda jalankan. Juga, ketika meneruskan argumen ke biner, ini bisa menghasilkan beberapa hasil yang tidak terduga.

l3dx
sumber
Tentu, saya tahu bahwa saran saya bukan solusi yang bagus, tetapi bisa berfungsi "cukup baik" berdasarkan kebutuhan pengguna.
l3dx
5
Nama perintah (nama file biner pada sistem) tidak harus sama dengan nama paket.
gertvdijk
3
l3dx: Meskipun saya masih memiliki keraguan (termasuk poin @ gertvdijk bahwa nama paket dan perintah sering berbeda, dan juga kekhawatiran tentang kemungkinan dampak buruk dari argumen baris perintah tambahan yang diteruskan ke perintah asli), sepertinya Anda tertarik pada sesuatu . Setelah sedikit pengujian, tampaknya ini bekerja lebih baik dalam praktek daripada (saya pikir) itu bekerja secara teori. Saya masih merekomendasikan memperluas jawaban ini untuk klarifikasi, peringatan, dan mungkin untuk merinci opsi lain. Bagaimanapun, saya telah men-downvotasikan ini, tetapi telah menghapus downvote saya.
Eliah Kagan
0

Ada beberapa metode untuk menginstal paket yang disarankan dengan cepat:

  • Tambahkan export COMMAND_NOT_FOUND_INSTALL_PROMPT=1ke suatu tempat seperti~/.bashrc

    ini adalah cara "paling keren", walaupun jelas tidak seaman itu, tetapi mungkin 90% dari waktu akan menghasilkan internal "Terima kasih, itulah tepatnya yang saya ingin Anda lakukan!" tanggapan.

    (Salah satu kelemahan pribadi dari metode ini adalah sepertinya saya menemukan jawabannya sulit untuk diingat / dicari, jadi saya cenderung belum menggunakannya sejauh ini.)

  • Jika Anda menggunakan Terminal default, Anda dapat dengan cepat memilih baris dan klik tengah untuk menempelkannya langsung ke baris perintah. (Terminal lain atau aplikasi SSH mungkin memiliki metode yang berbeda.)

    Dalam praktiknya, saya cenderung menemukan ini cukup cepat, dan sedikit lebih sulit untuk melakukan "secara tidak sengaja", dan tanpa memerlukan pengaturan sebelumnya, bahwa saya cenderung melakukannya.

  • Ada sesuatu yang bisa dikatakan, jika - jika Anda dapat (atau ingin belajar) mengetik dengan cepat - untuk mengetik sudo apt install packagenamesecara langsung.

    Ini membantu Anda melatih memori otot Anda, dan juga berarti Anda harus membaca dan mengetik nama paket, yang berarti Anda akan lebih mudah mengingatnya di kemudian hari. Ini juga sedikit lebih mudah di versi Ubuntu yang lebih baru, karena aptberfungsi sebagai pengganti apt-get.

mwfearnley
sumber
1
Anda mungkin bermaksud ~/.bashrcbukannya ~/.bash_rc.
edwinksl
Terima kasih, saya mungkin memikirkannya .bash_profile.
mwfearnley