Jak zainstalować pakiet za pomocą apt bez monitu „Czy chcesz kontynuować [T / n]?”?

53

Oczywiście kiedy piszesz:

sudo apt-get install whatever

Pyta cię:

Do you want to continue [Y/n]? 

Czy jest jakiś sposób, aby go zainstalować bez pytania, czy chcę kontynuować? Tak naprawdę nie dbam o przestrzeń, mam więcej niż wystarczająco.

Łukasz
źródło
superuser pytanie superuser.com/questions/164553/...
αғsнιη

Odpowiedzi:

87
sudo apt-get install -y whatever

Ze strony man ( man apt-get):

 -y, --yes, --assume-yes

           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.
Rinzwind
źródło
9
(jak żyć niebezpiecznie plik)
user2413
Dziękuję Ci bardzo! Naprawdę powinienem częściej korzystać z tej strony podręcznika. :)
Łukasz
2
Dlatego tam są @KingShimkus;)
Rinzwind
5
sudo apt-get install -yeah cokolwiek ...
BoJack Horseman
Teraz, jeśli tylko to zadziałało w przypadku aktualizacji pakietu Docker>. <Jeśli nigdy wcześniej nie aktualizowałeś Dockera, oto obraz tego, co pojawia się w terminalu, nawet gdy używasz --yes: Imgur Jest to wyjątkowo denerwujące, ponieważ wymusza interakcję podczas aktualizacji pakietu .
Spencer D
15

Dla apt-get -ylub --assume-yesdziałaj dobrze (jak wyjaśnił @rinzwind) i zakładam, że to najlepsza odpowiedź tutaj. W przypadku wielu takich interaktywnych operacji administracyjnych istnieje podobne polecenie.

Innym dość ogólnym sposobem na zrobienie tego jest:

 $ echo "y" | sudo apt-get install edamame_biscuit

(Tam, gdzie edamame-biscuit jest (wymyślonym) pakietem, który chcesz zainstalować, a „y” przyjmuje się za prawidłową odpowiedź; w razie potrzeby zamień na „tak” lub inny tekst.)

„Cechą” tej metody jest to, że się zepsuje, jeśli niepoprawnie zakładasz tylko jedno interaktywne pytanie. Jeśli pojawi się więcej potencjalnie niechcianych podpowiedzi, na które możesz nie chcieć odpowiedzieć „tak”, unikniesz sytuacji, w której system będzie działał bez pytania.

Belacqua
źródło
13
Również yes | sudo apt-get install edamame-biscuit. Tak to polecenie, które wysyła słowo „tak” na swoje wyjście. Możesz także ustawić, aby wyświetlał dowolny tekst w razie potrzeby, patrz strona man.
Kroltan
14
@Kroltan yesPolecenie (domyślnie) wyświetla tylko literę, ypo której następuje nowa linia, tyle razy, ile potrzeba do wypełnienia bufora potoku. Aby wydrukować słowo yes, musisz użyć polecenia yes yes.
Jonathan Callen
3
yes, wybacz mój błąd
Kroltan
4
@Braiam Myślę, że o to chodziło, więc nie robi nic, jeśli ktoś po prostu wklei to w swojej skorupie.
Kroltan
2
Szczególnie podoba mi się część funkcji „A” tej metody, która się psuje, jeśli niepoprawnie zakładasz tylko jedno interaktywne pytanie ”. ponieważ spamowanie tak, wszystko może być wyjątkowo niebezpieczne.
BeowulfNode42
4

Przede wszystkim pozwala zrozumieć, dlaczego pojawia się komunikat. W rzeczywistości, jeśli pakiet nie ma zależności, których jeszcze nie zainstalowałeś lub które wyraźnie kazałeś zainstalować, apt nigdy nie zapyta:

➜  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...

Chociaż jeśli chcesz zainstalować pakiet, który zależy od pakietów, o których nie wspomniałeś, zapyta:

➜  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Który mimo to nie zapytałby, czy pośrednio twierdzisz, że chcesz zainstalować ten pakiet:

➜  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])

Ale w jaki sposób sprawić, że nie zapyta cię definitywnie? Dzięki Rizwind odpowiedź powinna obejmować rozwiązania ad-hoc i skrypty (w rzeczywistości ta opcja jest częściej używana w skryptach), możesz zamiast tego zmodyfikować apt.confplik i dodać:

APT::Get::Assume-Yes

Coś takiego powinno wystarczyć:

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask

Uwaga: nie pozwoli to na inne bardziej rażące podpowiedzi, które należy zweryfikować , takie jak:

➜  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 

Dlatego nie zalecałbym używania yes | ..., ponieważ to ostrzeżenie zostanie zignorowane.

Braiam
źródło
W przypadku „OSTRZEŻENIE: Następujących pakietów nie można uwierzytelnić!”, Co należy z tym zrobić? Otrzymuję to dla obrazu Docker ( python:3.6-slim). Czy powinienem zadać na to osobne pytanie?
Martin Thoma,
@MartinThoma zwykle jest to problem z nieaktualizowaną listą pakietów. Uruchom aktualizację apt-get przed instalacją. Jeśli to nie usunie wiadomości, zadaj pytanie, podając jak najwięcej szczegółów, aż do sposobu utworzenia obrazu dokera.
Braiam
0

Dodaj -ydo dowolnej instalacji biblioteki

Np . :sudo apt-get install -y nodejs

Np . :sudo apt-get install -y postgres

Np . :sudo apt-get install -y mongodb




--force-yes as welli uważaj na przypadkowe miejsca. amortyzacja za ostatnie dystrybucje

Vijay
źródło