Apt-get komutunu istemeye zorla evet / hayır


11

apt-getEvet / hayır istemini göstermeye zorlamanın bir yolu var mı ? Bir --force-yesseçenek var, ancak --force-promptbenzer bir seçenek yok gibi görünüyor . Tüm bağımlılıkları önceden yüklenmiş olan bir paketi yüklemeye çalışırsanız, evet / hayır istemi göstermeden kuruluma başlar. Bağımlılıkların var olup olmadığını ve hangilerinin yükleneceğini incelemek istiyorsanız bu rahatsız edici olabilir, çünkü potansiyel bağımlılıkların önceden yüklenip yüklenmediğini bilmiyorsunuz.

NOT: “apt-get install” ne zaman devam etmek isteyip istemediğimi onaylamamı istiyor? istemin hangi standart koşullar altında görüntülendiğini açıklamasıyla bir şekilde ilişkilidir. Yine de onu nasıl zorlayacağımı bilmek istiyorum.


1
"Bağımlılıkların olup olmadığını ve hangilerinin yüklenip yüklenmeyeceğini incelemek istiyorsanız bu rahatsız edici olabilir." Bununla kafam karıştı. Yüklü bir bağımlılık yoksa ne inceliyorsunuz?
Faheem Mitha

2
İlginç soru. Bunu yapmanın bir yolu yok gibi görünüyor, apt-getuygun bir seçenekle yama yapmaktan yoksun . Ancak, bu varsayımsal seçenek benim için çok yararlı görünmüyor.
Faheem Mitha

Bunu yapmak için @FaheemMitha Benim amaçlı yeni bağımlılıkları / kullanılarak yüklenecek olabilir ne olduğunu bulmak için çok daha kolay olmasıdır apt-get installziyade apt-cache showpkg.
user369450

Yanıtlar:


10

Mevcut apt-get uygulamasıyla bunu yapmanın bir yolu yoktur, bir özellik isteği açmanız ve sürdürücüye hitap etmeniz gerekir. Apt-get'in şu anki davranışı, örtük olarak kurulduğunu beyan ettiğiniz paketlerin listesi, yüklenecek paketlerin miktarına eşit olduğunda ve başka hiçbir paketin yükseltmelerden veya kopmalardan etkilenmediğinde, apt-get'in zaten kullanıcı olduğunu varsayar emin yapılacak olup bitenleri taşımaktadır emin değilseniz ya aslında paketini yüklemeden ne yapılacağını analiz etmek istiyorsanız, kullanabileceğiniz Kostas öneri ait -s, --simulate, --just-print, --dry-run, --recon, --no-act.

Yüklenecek paketlerin sürümlerini gerçekten yüklemeden (bu durumda hatalar için) ve sizi uyarmadan önce apt-listbugs gibi başka araçlar da vardır.


4

Komut, yessadece bir paketin (komut satırından başlatılan) kurulması durumunda VE sistemdeki tüm bağımlılıkların, yani bir paketin dışında kurulacak hiçbir şey olmadığını varsayar .

Başka bir deyişle "görmek için hiçbir şey (ekstra paketler yok) sonra hiçbir istemi (sormak için hiçbir şey)".

Test amacıyla bir anahtar kullanabilirsiniz -s, --simulate, --just-print, --dry-run, --recon, --no-act


@cpburnz eğer all dependecies are installedzaten olacak değil başka paketler yüklenmemiş böylece promted edilmiştir.
Costas

0

Eski soru, görebiliyorum, ama şimdi benzer bir durumda. Genellikle ben kullanımını yapmak sudo aptitude install -P PACKAGE_NAMEher zaman önce sormak yüklemek ne. Ancak şimdi Debian varsayılan paket yöneticisi apt|apt-getve bu işlevselliği yok. Tabii ki hala yükleyebilir aptitudeve kullanabilirsiniz ... Ancak ben apt-getkurulumdan önce sormak için küçük sh / bash sarma işlevi / komut yazdı . Gerçekten ham ve terminalimde bir işlev olarak yazdım.

$ f () { sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf'; read -p 'Do You want to continue (y/N): ' ans; case $ans in [yY] | [yY][eE][sS]) sudo apt-get -y install "$@";; *);; esac; }

Şimdi daha açık bir şekilde açıklayalım:

f () {
  # Do filtered simulation - without lines contains 'Inst' and 'Conf'
  sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';

  # Interact with user - If You want to proceed and install package(s),
  # simply put 'y' or any other combination of 'yes' answer and tap ENTER.
  # Otherwise the answer will be always not to proceed.
  read -p 'Do You want to continue (y/N): ' ans;
  case $ans in
    [yY] | [yY][eE][sS])
      # Because we said 'yes' I put -y to proceed with installation
      # without additional question 'yes/no' from apt-get 
      sudo apt-get -y install "$@";
    ;;
    *)
      # For any other answer, we just do nothing. That means we do not install
      # listed packages.
    ;;
  esac
}

Bu işlevi bir sh / bash betiği olarak kullanmak için, örneğin my_apt-get.shiçerikli bir komut dosyası oluşturun (Not: listeleme, yorum içermez, biraz daha kısa yapmak için ;-)):

#!/bin/sh

f () {
  sudo apt-get --simulate install "$@" | grep -v '^Inst\|^Conf';
  read -p 'Do You want to continue (y/N): ' ans;
  case $ans in
    [yY] | [yY][eE][sS])
      sudo apt-get -y install "$@";
    ;;
    *)

    ;;
  esac
}

f "$@"

Sonra örneğin içine koymak ~/bin/ve ile yürütülebilir hale getirmek $ chmod u+x ~/bin/my_apt-get.sh. Dizin değişkeninize ~/bineklenmişse, dizini PATHbasitçe şu şekilde yürütebilirsiniz:

$ my_apt-get.sh PACKAGE_NAME(S)_TO INSTALL

Lütfen aklınızda bulundurun:

  • Kod kullanılır sudo. Eğer kullanırsanız roothesabı, muhtemelen ayarlamak gerekir.
  • Kod, kabuk otomatik tamamlamayı desteklemiyor
  • Kodun kabuk kalıplarıyla nasıl çalıştığına dair bir fikriniz yok (örn. "!", "*", "?", ...)
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.