permission denied: /etc/apt/sources.list
Matthew Barrera
I'm trying to install java jre, i usually do it like this
sudo echo 'deb debs all' >> /etc/apt/sources.list
sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 5CB26B26
sudo apt-get update
sudo apt-get install update-sun-jre
exitbut when i do
sudo echo 'deb debs all' >> /etc/apt/sources.listi see
permission denied: /etc/apt/sources.list
When i do
ls -l /etc/apt/sources.list
i see
-rw-r--r-- 1 root root 3360 Aug 26 01:45 /etc/apt/sources.listWhen i do
sudo mv /etc/apt/sources.list /etc/apt/sources.list.old
sudo cat /etc/apt/sources.list.old | sudo tee /etc/apt/sources.listi see
#deb cdrom:[Ubuntu 12.04 LTS _Precise Pangolin_ - Release amd64 (20120425)]/ dists/precise/main/binary-i386/
#deb cdrom:[Ubuntu 12.04 LTS _Precise Pangolin_ - Release amd64 (20120425)]/ dists/precise/restricted/binary-i386/
#deb cdrom:[Ubuntu 12.04 LTS _Precise Pangolin_ - Release amd64 (20120425)]/ precise main restricted
# See for how to upgrade to
# newer versions of the distribution.
deb precise main restricted
deb-src precise main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb precise-updates main restricted
deb-src precise-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb precise universe
deb-src precise universe
deb precise-updates universe
deb-src precise-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb precise multiverse
deb-src precise multiverse
deb precise-updates multiverse
deb-src precise-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb precise-backports main restricted universe multiverse
deb-src precise-backports main restricted universe multiverse
deb precise-security main restricted
deb-src precise-security main restricted
deb precise-security universe
deb-src precise-security universe
deb precise-security multiverse
deb-src precise-security multiverse
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb precise partner
# deb-src precise partner
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb precise main
deb-src precise mainand the issue is not solved, i still see that permission error, I'm on a 64 bit laptop
4 Answers
This is a known issue, when you use sudo in this fashion, it won't work right. That is because while the echo command is run as sudo, the >> for append tries to open the file target as a non-sudo user. That is where the permission issue is.
However, please read my multi-part answer, which gives you a separate solution that can be considered more 'safe' than the others I provide:
1:
Use a separate file in /etc/apt/sources.list.d/ which contains the deb instruction you're saying now. You'd still need to use sudo, though, to edit / create the file.
2:
A solution would be to do sudo su -c "echo 'deb debs all' >> /etc/apt/sources.list", which tells the system to run that as superuser, which you get access to by using 'sudo' in front of the 'su' command.
PLEASE NOTE that the su command used outside of the command I stated here is dangerous, so you should only use this method if you absolutely need it. Therefore, consider using Solution #3 here instead.
Safest Solution (#3): Use echo | sudo tee AND a separate .list
You can achieve the same as the above, however, without ever dropping to a superuser prompt though. With this command:
echo 'deb debs all' | sudo tee -a /etc/apt/sources.listHowever, let's also take into account #1 above, and instead use a new file for it:
sudo touch /etc/apt/sources.list.d/duinsoft.list
echo 'deb debs all' | sudo tee -a /etc/apt/sources.list.d/duinsoft.listThis way, we leave the main sources.list alone, but the sources will be added via an included file that specifically handles this repository. (This is how PPAs get added, by the way!)
What happens with the command is that echo is run as root, but not >>. Try the following instead:
echo 'deb debs all' | sudo tee -a /etc/apt/sources.listalternatively, you could do it in two steps:
sudo -i
echo 'deb debs all' >> /etc/apt/sources.list
exit What this command does is appending deb debs all to /etc/apt/sources.list. Let's do it in an other method! Just open that file and append it manually!
sudo nano /etc/apt/sources.listThen add deb debs all to end of it and press Ctrl+O and then Enter to save the changes and finally Ctrl+X to quit nano.
You can jump to the next command now...
1Create a script myscript.sh containing
#!/bin/bash
echo 'deb debs all' >> /etc/apt/sources.listexecute it with (you have to give execute permission to it first e.g. chmod u+x myscript.sh)
sudo ./myscript.sh 0