501

Is there a way to make apt-get install answer "yes" to the "Do you want to continue [y/N]?"?

mistiry
  • 5,987
  • 4
  • 17
  • 16

12 Answers12

635

via the apt-get man page:

apt-get -y install [packagename]
jrc03c
  • 9,336
  • 1
  • 22
  • 14
  • Is this the same as @bclermont answer (--yes --force-yes)? – jjxtra Jul 05 '18 at 19:16
  • 2
    `-y` is abbreviated `--yes` is synonym to `--assume-yes`, while `--force-yes` is a different option. it is used to decide prompts with a potentially more severe impact, like downgrades or breaking dependencies. refer to the man page (which is linked in the answer), it is all explained in detail there. – dlatikay Aug 07 '20 at 08:56
197

The problem with:

apt-get --yes install $something

is that it will ask for a manual confirmation if the package signature owner's public-key is not in the keyring, or some other conditions. to be sure it does not ask a confirmation just do this:

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

If you want to have these settings permanent, create a file in /etc/apt/apt.conf.d/, like /etc/apt/apt.conf.d/90forceyes with the following content:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";
bclermont
  • 2,151
  • 1
  • 11
  • 3
  • 6
    +1 for variety. All the `-y` were getting boring. (Plus it's a more complete answer.) – Dennis Williamson Jul 16 '10 at 23:30
  • +1 the best answer - I was looking for the solution to force yes, rather than having to specify it each time – Robin Winslow Oct 11 '12 at 12:15
  • 1
    Will this work when it says "To continue type in the phrase 'Yes, do as I say!'" too? If not what is the work-around then? I encounter this when trying to replace sysvinit with systemd in my chrooted debian image. – Lennart Rolland May 29 '15 at 19:38
  • 20
    Please don't ever use `--force-yes`: as [this reply to a related thread on `debian-devel`](https://lists.debian.org/debian-devel/2015/06/msg00145.html) suggests, `--force-yes` might render the system unusable. (I'm not downvoting because the answer actually addresses the problem as stated by the OP, but I'd add a BIG RED WARNING to the answer anyway.) – kostix Jun 10 '15 at 14:16
  • 7
    __APT::Get::Assume-Yes "true";__ helped me to avoid interrupt in an installation in a docker container. – mehdix Feb 22 '16 at 11:18
  • 5
    force-yes has been deprecated. https://tracker.mender.io/browse/CFE-2360 – rrawat Sep 27 '17 at 22:23
65

Note that if you also want to automatically go by the default answers when an interactive prompt appears, you can use DEBIAN_FRONTEND=noninteractive

Single install:

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

E.g.:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

All updates:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

You can set up finer options with -o Dpkg::Options::="--force-confdef" and -o Dpkg::Options::="--force-confold".

Examples:

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

or

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

Example of interactive prompt:

enter image description here

Interesting read: Perform an unattended installation of a Debian package

Franck Dernoncourt
  • 17,347
  • 42
  • 155
  • 266
  • 1
    Great answer. Even with `-y`, I still got prompts asking if I wanted to restart services. I needed this to completely eliminate all prompts. – wisbucky Jun 19 '19 at 22:01
15
APT::Get::Assume-Yes "true";

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

This should at least be in /etc/apt/apt.conf and commented out. I worry Ubuntu is taking the Microsoft tack of always asking for permission.

"Are you sure?", of course I am sure, I am not a trained monkey simply typing away at the keyboard, going click happy.

Next the door will ask, "Are you sure you want to go outside?"
The oven will ask, "Are you sure you want to cook?"
The automobile will ask, "Are you sure you want to apply brakes?"
The fire extinguisher will ask, "Are you sure you want to put out the fire?"
I am sorry Dave, I can't let you do that.
HAL9000 could use a contraction but Data could not, or couldn't.

Gaff
  • 17,879
  • 14
  • 55
  • 68
Ajax4Hire
  • 167
  • 1
  • 2
  • 3
    The difference with HAL9000 and dpkg asking for permission is that HAL said "no, period", whereas the "Yes, do as I say" thing only shows up if you're about to completely and utterly break your system. If that's what you want, sure, go ahead. But having a warning in that case seems reasonable. – Wouter Verhelst Jun 11 '15 at 13:41
  • upvoting for saving me the rant, 9 years later, that hasn't changed one bit. it's silly that a "-y" is needed. it's unacceptable that a "-y" is ignored. – keithpjolley Jul 28 '20 at 18:07
  • This is funny and relevant even in 2020. The confirmation is related with the info of data to download / storage required. Something like "Are you sure you would like to spend this amount of data and storage?". And with default configuration, some apt install automatically YES when the package is very small. For example when installing htop. – izzulmakin Dec 14 '20 at 09:59
9

From the apt-get HOWTO

Use the -y switch: apt-get -y install packagename

Powerlord
  • 814
  • 4
  • 9
7
apt-get -y update
apt-get -y install [package]
steve.lippert
  • 2,080
  • 13
  • 14
  • 2
    +1 , but why `update` needs permission? – amyassin May 22 '12 at 20:31
  • @amyassin the `apt-get update` command requires root permissions because it updates the local package lists (indexes), which are system files owned by root. – jjmontes Oct 09 '15 at 11:31
  • @amyassin update and upgrade ask for permission because they are downloading stuff to the machine - thus taking up bandwidth and disk space. Believe it or not, back in the day, those were valuable commodities. – Chiwda Nov 23 '19 at 03:15
  • 2
    @Chiwda I live in a third world country where those things are still valuable commodities :) – amyassin Jan 01 '20 at 13:05
4

generally the options from the manual should work well

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

if it does not succeed you can try to use the yes command.

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

did use this with my vagrant shell provisioning script

PS: in case you want non-interactive but with generally stating no then you can try this:

yes no | apt-get install package
Summer-Sky
  • 161
  • 6
1

The new (well) apt alias takes the -y (--yes) switch too:

sudo apt -y upgrade
yPhil
  • 2,043
  • 1
  • 16
  • 19
1

If you always want the -y argument I'd advise adding the line

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

into your .bashrc. This, as the comment explains, will automatically add the -y argument to all your apt-get commands and therefore approves all the downloads.


NOTE: This will remain true until you revert your .bashrc and restart the shell.

1

I was looking for a way to select a non-default in a script, specifically when installing wireshark, and ended up using tmux to interact with a shell, as follows:

# 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
0

Using yes is package manager independent. E.g.

yes | apt-get install curl
whirlwin
  • 757
  • 3
  • 8
  • 16
0

Sometimes you need the --allow-downgrades with the -y Like sudo apt upgrade -y --allow-downgrades

Because the downgrades are a possibility and the "yes" options is not enough in that cases.