![如何更新 Debian 4.0 Etch 的 sources.list?](https://linux22.com/image/592175/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%96%B0%20Debian%204.0%20Etch%20%E7%9A%84%20sources.list%EF%BC%9F.png)
我正在尝试更新我/etc/apt/sources.list
的 VPS。运行时,apt-get update
我收到各种 404 未找到信息,例如:
Failed to fetch http://debian.newdream.net/dists/etch/main/binary-amd64/Packages.gz 404 Not Found
Failed to fetch http://security.debian.org/dists/etch/updates/main/binary-amd64/Packages.gz 404 Not Found [IP: 149.20.20.6 80]
Failed to fetch http://www.ksplice.com/apt/dists/etch/ksplice/binary-amd64/Packages.gz 404 Not Found
当我审视http://www.debian.org/releases/etch/,我没有看到任何有关档案的信息。我在 archive.debian.org 内,但我对如何遵循其说明/修改源列表有点困惑。以下是当前列表的内容:
deb http://debian.di.newdream.net/ etch ndn
deb http://www.ksplice.com/apt etch ksplice
deb http://debian.newdream.net etch main non-free contrib
deb http://www.backports.org/debian/ etch-backports main
deb http://archive.debian.org/debian-volatile etch/volatile main contrib non-free
deb http://security.debian.org/ etch/updates main
deb http://debian.dc-uoit.net/debian-multimedia/ etch main
从我在存档 README 上读到的内容来看,我认为格式应该是这样的:
deb http://archive.debian.org/debian-security dists/etch/updates/ main
此外,在注释掉源文件中的大多数(如果不是全部)行之后,我仍然会收到相同的错误。是否有需要运行的命令来清除缓存?
答案1
Etch 现已超过生命周期结束前 2 个版本。由于不再受支持,因此没有安全支持。
对于主档案,请使用如下行。
deb http://archive.debian.org/debian etch main
您应该升级到 lenny,然后挤压。
安全更新、反向移植、多媒体和 ksplice 档案可能已消失。
答案2
man apt
,man apt-cache
并man apt-get
提供有关包缓存维护的信息。
更新文件后/etc/apt/sources.list
,请记住软件包信息存储在各个地方,并且仅运行apt-get clean
或apt-get autoclean
不会清除这些有问题的软件包(对于未找到的软件包,您将继续收到 404 错误)。您需要从以下位置清除软件包缓存:
/var/lib/apt/lists/
Storage area for state information for each package resource specified in
sources.list(5) Configuration Item: Dir::State::Lists.
如果您这样做,ls /var/lib/apt/lists/
您将看到导致 404 的资源列表。 中可能还有软件包信息/var/lib/apt/lists/partial/
。您可能需要删除(如 中rm foo-bar
)导致 404 的软件包。小心不要删除正在运行的软件包。
然后如果你使用 cd 进入,/etc/apt
你会注意到sources.list.d
。在我的情况下,我只是运行并删除了所有损坏的软件包(当然,sources.list.d/*
在验证了的内容之后)。sources.list.d/*
随后,您可以按顺序运行apt-get check
、、apt-get autoclean
和,apt-get update
然后就应该可以出结果了。
如果您对列表文件中包的命名约定有疑问,您可以随时执行man sources.list
。