权限被拒绝:/etc/apt/sources.list

我正在尝试安装Java JRE,通常我是这样做的。
sudo echo 'deb http://www.duinsoft.nl/pkg 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
exit

但是当我这样做的时候
sudo echo 'deb http://www.duinsoft.nl/pkg debs all' >> /etc/apt/sources.list

我看到
权限被拒绝:/etc/apt/sources.list
当我执行 ls -l /etc/apt/sources.list
我看到
-rw-r--r-- 1 root root 3360 Aug 26 01:45 /etc/apt/sources.list

当我做的时候
sudo mv /etc/apt/sources.list /etc/apt/sources.list.old
sudo cat /etc/apt/sources.list.old | sudo tee /etc/apt/sources.list

我明白了。
#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 http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://lb.archive.ubuntu.com/ubuntu/ precise main restricted
deb-src http://lb.archive.ubuntu.com/ubuntu/ precise main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://lb.archive.ubuntu.com/ubuntu/ precise-updates main restricted
deb-src http://lb.archive.ubuntu.com/ubuntu/ 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 http://lb.archive.ubuntu.com/ubuntu/ precise universe
deb-src http://lb.archive.ubuntu.com/ubuntu/ precise universe
deb http://lb.archive.ubuntu.com/ubuntu/ precise-updates universe
deb-src http://lb.archive.ubuntu.com/ubuntu/ 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 http://lb.archive.ubuntu.com/ubuntu/ precise multiverse
deb-src http://lb.archive.ubuntu.com/ubuntu/ precise multiverse
deb http://lb.archive.ubuntu.com/ubuntu/ precise-updates multiverse
deb-src http://lb.archive.ubuntu.com/ubuntu/ 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 http://lb.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://lb.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu precise-security main restricted
deb-src http://security.ubuntu.com/ubuntu precise-security main restricted
deb http://security.ubuntu.com/ubuntu precise-security universe
deb-src http://security.ubuntu.com/ubuntu precise-security universe
deb http://security.ubuntu.com/ubuntu precise-security multiverse
deb-src http://security.ubuntu.com/ubuntu 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 http://archive.canonical.com/ubuntu precise partner
# deb-src http://archive.canonical.com/ubuntu precise partner

## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu precise main

问题还没有解决,我仍然看到那个权限错误,我使用的是64位的笔记本电脑。

我的问题是11年前提出的,被关闭为一个10年前提出的问题的重复。真是太棒了。 - undefined
4个回答

这是一个已知的问题,当你以这种方式使用sudo时,它不会正常工作。这是因为虽然echo命令是以sudo身份运行的,但用于追加的>>尝试以非sudo用户的身份打开文件目标。这就是权限问题所在。
然而,请阅读我的多部分答案,它给出了一个单独的解决方案,可以被认为比我提供的其他解决方案更“安全”:
1: 在/etc/apt/sources.list.d/中使用一个单独的文件,其中包含你现在说的deb指令。不过,你仍然需要使用sudo来编辑/创建该文件。

2:

一个解决方案是执行sudo su -c "echo 'deb http://www.duinsoft.nl/pkg debs all' >> /etc/apt/sources.list",这告诉系统以超级用户身份运行该命令,你可以通过在'su'命令前面使用'sudo'来获得访问权限。

请注意,在我在此处提到的命令之外使用su命令是危险的,所以只有在绝对需要时才应该使用这种方法。因此,考虑使用这里的解决方案#3。


最安全的解决方案(#3):使用echo | sudo tee和一个单独的.list文件。
您可以实现与上述相同的结果,而无需降级为超级用户提示符。通过以下命令:
echo 'deb http://www.duinsoft.nl/pkg debs all' | sudo tee -a /etc/apt/sources.list

然而,让我们也考虑上面的第一点,并且使用一个新文件来代替它。
sudo touch /etc/apt/sources.list.d/duinsoft.list
echo 'deb http://www.duinsoft.nl/pkg debs all' | sudo tee -a /etc/apt/sources.list.d/duinsoft.list

这样,我们不会动主要的sources.list文件,但是通过一个特定处理该软件源的包含文件来添加软件源。(顺便说一下,这就是如何添加PPA的方式!)

命令的执行过程是这样的,echo 以 root 用户身份运行,但 >> 不会。请尝试以下方法:
echo 'deb http://www.duinsoft.nl/pkg debs all' | sudo tee -a /etc/apt/sources.list

或者,你可以分两步来完成:
sudo -i

echo 'deb http://www.duinsoft.nl/pkg debs all' >> /etc/apt/sources.list

exit

这个命令所做的是将deb http://www.duinsoft.nl/pkg debs all附加到/etc/apt/sources.list。让我们用另一种方法来做!只需打开该文件并手动附加即可!
sudo nano /etc/apt/sources.list

然后在末尾添加deb http://www.duinsoft.nl/pkg debs all,按下Ctrl+O,然后按Enter保存更改,最后按Ctrl+X退出nano

现在你可以跳转到下一个命令了...


1很好,这对我帮助很大! - Kirill Husiatyn

创建一个名为myscript.sh的脚本。
#!/bin/bash
echo 'deb http://www.duinsoft.nl/pkg debs all' >> /etc/apt/sources.list

执行它(首先要给它执行权限,例如chmod u+x myscript.sh
sudo ./myscript.sh