Odpowiedzi:
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";
-y
się nudzili. (Plus to bardziej kompletna odpowiedź.)
--force-yes
: jak sugeruje ta odpowiedź na pokrewny wątekdebian-devel
, --force-yes
system 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.)
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:
Ciekawa lektura: Wykonaj nienadzorowaną instalację pakietu Debian
-y
to nadal pojawia się monit z pytaniem, czy chcę ponownie uruchomić usługi. Potrzebowałem tego, aby całkowicie wyeliminować wszystkie monity.
APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";
Powinno to być przynajmniej /etc/apt/apt.conf
wpisane 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.
Użyj -y
przełącznika:
apt-get -y install packagename
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ć yes
polecenia.
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
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.
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