Neden `sudo apt-get install XXXX` bazen bazen doğrulama isteğinde bulunuyor, diğerleri değil?


29

Sadece merak için, bazen yazılımı kurarken apt-get install software_nameterminale "Evet ya da Hayır", ama herzaman değil, bir onay vermemi ister.

Sudo parola istemini kastetmiyorum, ancak "İndirilecek ve XXX Kb indirilecek, devam edecek misiniz?" (Veya benzeri)

Niye ya?


2
Temel olarak, bağımsız değişkenlerde belirtilenlerin dışındaki paketlerin yüklenmesi gerekiyorsa, ister.
muru

Yanıtlar:


24

Yüklemeyi denediğiniz yazılıma bağlı olarak önerilen veya önerilen paketler olup olmadığını sorar, Ayrıca programın boyutuna veya indirdiğiniz havuzun güvenliğine de bağlı olabilir.


Ben de aynı motivasyonları düşündüm .. ama cevabın güvende olmasını istiyorum
Strae

Evet, bu cevap doğru. -ySizden istenmek istemiyorsanız (bir şeyi otomatikleştirmeye çalışıyorsanız faydalı) bayrağını kullanabileceğinizi ekleyeceğim .
Umang

@Umang: ipucu için teşekkürler, ama şu anda hiçbir şeyi otomatikleştirmem gerekmiyor, sadece bir meraktı;)
Strae

12

apt-get install new-package sadece verilen paketin bağımlılıklarını da yüklerse onay isteyecektir.

Belirttiğiniz tek bir paket başka bir şey olmadan kurulacaksa, daha önceden "onayladığın" yazarak bir tanesine sahip olmak istediğinizde sessiz kalır.
Ancak bazı bağımlılık paketleri varsa fikrinizi değiştirebilir ve yüklemeyi durdurmak isteyebilirsiniz (örneğin, biri daha önce sorun çıkardı), bu yüzden sizden bu durumu size sorar.

Şimdi ne yapacağını görmek istiyorsanız, install komutunun kuru çalışmasını / simülasyonunu yapabilirsiniz. -sArgümanlara bir ekleyerek bu anahtarı ayarlayabilirsiniz . Örnek: Tek paketin kurulumusudoku

bytecommander@AlkaliMetal:~$ sudo apt-get install sudoku -s
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  sudoku
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst sudoku (1.0.1-5 Ubuntu:14.10/utopic [i386])
Conf sudoku (1.0.1-5 Ubuntu:14.10/utopic [i386])

Bu size ne olacağını, ancak onay isteminin yapacağı gibi indirmelerin ne kadar büyük olacağını göstermez.

Bu nedenle, başka bir anahtar kullanılabilir --print-uris. Aynı örnek:

bytecommander@AlkaliMetal:~$ sudo apt-get install sudoku --print-uris
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  sudoku
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 28.4 kB of archives.
After this operation, 106 kB of additional disk space will be used.
'http://ftp.uni-stuttgart.de/ubuntu/pool/universe/s/sudoku/sudoku_1.0.1-5_i386.deb' sudoku_1.0.1-5_i386.deb 28426 MD5Sum:ecd0e3cd4fc1e4e4edfe6c59d1c54847

--print-urisAnahtar yalnızca gerçek yüklemek engelleyebilirsiniz ancak indirilen ve yüklü boyutları ve paketle ilgili ek bilgileri (web adresi ve MD5Sum) gösterilmez.
Dikkat: kullanmayın --print-uris ve -s birlikte. Sadece gibi görünecek -s.
Ayrıca -y, çıkışı işlemek istiyorsanız , anahtarı (= her soruya evet olarak kabul edin) eklemelisiniz , çünkü bu, anahtarsız normal kurulumla aynı kuralları izleyerek onayınızı isteyecektir.


Şimdi, indirilen ve yüklenen dosya boyutu bilgisini sadece diğer tüm şeyleri okumak zorunda kalmadan filtrelemek istiyorsanız, bunu sağlamak için aşağıdaki komutu kullanabilirsiniz (yardım için @terdon sayesinde). Yine örnekle sudoku:

bytecommander@AlkaliMetal:~$ LANG=C sudo apt-get -y --print-uris install sudoku | grep -Po '^(Need to|After this).*?\K[0-9.]+[ a-zA-Z]+? '
28.4 kB
106 kB

Çıktının ilk satırının indirme boyutu olduğunu ve ikinci satırın yükleme için gereken alanı tanımladığını görürsünüz.

Bu komutun yazılması kolay olmadığı ve hatta hatırlaması zor olduğu için aşağıdakileri bir komut dosyasına kopyalayın, örneğin apt-get-install-checker.sh:

#! /bin/bash

LANG=C sudo apt-get install -y --print-uris $* |
grep -Po '^(Need to|After this).*?\K[0-9.]+[ a-zA-Z]+? ' |
sed '1,1s/^/Download size: /;2,2s/^/Installed size: /'

Yapmadan chmod +x apt-install-checker.shönce bunu unutma !

Örnek çıktı:

bytecommander@AlkaliMetal:~/bin$ ./apt-install-checker.sh sudoku
Download size: 28.4 kB 
Installed size: 106 kB 

Senaryo hala geliştiriliyor! Planlanan özellikler: Kurulumu yapmak isteyip istemediğinizi sorup daha sonra devam edip çalıştırın. Belki yarın aklıma gelen bazı güzel araçlar ...


Ama her seferinde sana sormanın bir yolu var mı? Programın gerçek kodunu değiştirerek bile.

@Toroidal programın kodunu değiştirmek burada kapsamın biraz dışında - tercihleri ​​nasıl değiştireceğinizi bulmak için kazmak aptveya apt-getman sayfalarını kullanmak zorunda kalabilirsiniz , çünkü zorlamak için değiştirebileceğiniz bir ayar zaten mümkün.
Thomas Ward

9

Anladığım kadarıyla apt-get yalnızca yüklenecek ek bağımlılıklar olduğunda onay ister. Tüm paketler için varsayılan olarak onaylamayı zorlamanın bir yolu yoktur.

Ancak, yetenek kullanırken herhangi bir yükleme komutunda onay zorlamak mümkündür.

echo 'Aptitude::CmdLine::Always-Prompt "true";' | sudo tee -a /etc/apt/apt.conf.d/05aptitude

Veya, aptitudebelirli bir çalıştırmayı sormak için kullanın aptitude -P.
Eliah Kagan,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.