Automatycznie odpowiedz „Tak” podczas korzystania z instalacji apt-get

356

Czy istnieje sposób na apt-get installudzielenie odpowiedzi „tak” na pytanie „Czy chcesz kontynuować [t / n]?”?

Mistiry
źródło

Odpowiedzi:

430

poprzez stronę podręcznika apt-get :

apt-get -y install [packagename]
jrc03c
źródło
Czy to to samo, co @bclermont answer (--yes --force-yes)?
jjxtra
175

Problem z:

apt-get --yes install $something

polega na tym, że poprosi o ręczne potwierdzenie, jeśli klucz publiczny właściciela podpisu paczki nie znajduje się w breloku lub inne warunki. aby upewnić się, że nie prosi o potwierdzenie, wykonaj następujące czynności:

apt-get --yes --force-yes install $something

Jeśli chcesz, aby te ustawienia były trwałe, utwórz plik w /etc/apt/apt.conf.d/, na przykład /etc/apt/apt.conf.d/90forceyes, o następującej treści:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";
Bclermont
źródło
3
+1 za różnorodność. Wszyscy -ysię nudzili. (Plus to bardziej kompletna odpowiedź.)
Dennis Williamson
1
Czy to zadziała, gdy będzie napisane „Aby kontynuować, wpisz wyrażenie„ Tak, rób, co mówię! ”? Jeśli nie, co to jest obejście? Napotykam to, gdy próbuję zamienić sysvinit na systemd w moim chrootowanym obrazie debian.
Lennart Rolland
13
Nigdy nie używaj --force-yes: jak sugeruje ta odpowiedź na pokrewny wątekdebian-devel , --force-yessystem może być bezużyteczny. (Nie oddaję głosu, ponieważ odpowiedź faktycznie rozwiązuje problem podany przez OP, ale i tak dodam DUŻE CZERWONE OSTRZEŻENIE.)
kostix
7
APT :: Get :: Assume-Yes "true"; pomógł mi uniknąć przerw w instalacji w kontenerze dokowanym.
Mehdi Sadeghi
3
force-yes zostało wycofane. tracker.mender.io/browse/CFE-2360
rrawat
53

Pamiętaj, że jeśli chcesz automatycznie przejść do domyślnych odpowiedzi, gdy pojawi się interaktywny monit, możesz użyć DEBIAN_FRONTEND=noninteractive

Pojedyncza instalacja:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install [packagename]

Na przykład:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

Wszystkie aktualizacje:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

Możesz ustawić dokładniejsze opcje za pomocą -o Dpkg::Options::="--force-confdef"i -o Dpkg::Options::="--force-confold".

Przykłady:

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

lub

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

Przykład interaktywnego monitu:

wprowadź opis zdjęcia tutaj

Ciekawa lektura: Wykonaj nienadzorowaną instalację pakietu Debian

Franck Dernoncourt
źródło
1
Świetna odpowiedź. Mimo -yto nadal pojawia się monit z pytaniem, czy chcę ponownie uruchomić usługi. Potrzebowałem tego, aby całkowicie wyeliminować wszystkie monity.
wisbucky
14
APT::Get::Assume-Yes "true";

APT::Get::force-yes "true";

Powinno to być przynajmniej /etc/apt/apt.confwpisane i skomentowane. Obawiam się, że Ubuntu stosuje Microsoft zawsze prosząc o pozwolenie.

„Jesteś pewien?”, Oczywiście jestem pewien, że nie jestem wyszkoloną małpą, która po prostu pisze na klawiaturze i szczęśliwie klika.

Następnie drzwi zapytają: „Jesteś pewien, że chcesz wyjść na zewnątrz?”
Piekarnik zapyta: „Czy na pewno chcesz gotować?”
Samochód zapyta: „Czy na pewno chcesz włączyć hamulce?”
Gaśnica zapyta: „Czy na pewno chcesz ugasić pożar?”.
Przepraszam, Dave, nie mogę ci na to pozwolić.
HAL9000 może użyć skurczu, ale Data nie może lub nie może.

Ajax4Hire
źródło
3
Różnica w stosunku do HAL9000 i dpkg z prośbą o pozwolenie polega na tym, że HAL powiedział „nie, kropka”, podczas gdy „Tak, rób jak mówię” pojawia się tylko wtedy, gdy masz zamiar całkowicie i całkowicie złamać system. Jeśli tego właśnie chcesz, to śmiało. Ale ostrzeżenie w tej sprawie wydaje się rozsądne.
Wouter Verhelst
7
apt-get -y update
apt-get -y install [package]
steve.lippert
źródło
2
+1, ale dlaczego updatepotrzebuje pozwolenia?
amyassin
@amyassin apt-get updatepolecenie wymaga uprawnień roota, ponieważ aktualizuje lokalne listy pakietów (indeksy), które są plikami systemowymi należącymi do roota.
jjmontes,
3

ogólnie opcje z instrukcji powinny działać dobrze

apt-get -y --force-yes install package

jeśli to się nie powiedzie, możesz spróbować użyć yespolecenia.

yes | apt-get -y --force-yes install package

użyłem tego z moim błędnym skryptem do obsługi powłoki

PS: jeśli chcesz nieinteraktywny, ale ogólnie mówiąc nie, możesz spróbować:

yes no | apt-get install package
Summer-Sky
źródło
1

Nowy ( dobrze ) aptalias przyjmuje również przełącznik -y( --yes):

sudo apt -y upgrade
yPhil
źródło
1

Jeśli zawsze chcesz argumentu -y, radzę dodać linię

alias apt-get='apt-get -y' #Automatic -y argument on apt-get commands

do twojego .bashrc. To, jak wyjaśnia komentarz, automatycznie doda argument -y do wszystkich poleceń apt-get, a tym samym zatwierdza wszystkie pobrania.


UWAGA: Będzie to obowiązywać do momentu przywrócenia .bashrc i ponownego uruchomienia powłoki.

Joseph Stevens
źródło
1

Szukałem sposobu na wybranie skryptu, który nie jest domyślny, szczególnie podczas instalowania wireshark, i skończyłem z użyciem tmux do interakcji z powłoką, w następujący sposób:

# Start a detached root session
sudo tmux new-session -d
# Send the command
sudo tmux send-keys "DEBIAN_FRONTEND=readline apt-get -qq install wireshark-common; exit" enter
# Wait for the tmux session to get to the interactive stage
sleep 5
# Answer the question
sudo tmux send-keys "yes" enter
# Now attach to the session so we wait for command completion
sudo tmux attach
Stephen Ramm
źródło