Anw*_*war 45 aptitude synaptic apt localrepository software-sources
如何让 apt-get 更喜欢本地存储库包,而不是从官方存储库再次下载相同的包版本?本地存储库已签名并受信任。我们已经尝试过 apt 偏好优先级。
原始问题是:“如何在不使用 sources.list 文件的情况下为本地存储库分配最高优先级”
我已经用我下载的软件包设置了一个本地存储库。当我需要重新安装 Ubuntu 时,我使用它来避免通过 Internet 下载相同的软件包。它是一个基本存储库,使用apt-ftparchive packages . > Packages. 我将其设为受信任的存储库以避免“未经身份验证的存储库”警告。(当您有一个不受信任的存储库,apt或者synaptic尝试通过 Internet 下载相同的软件包时,因为它是受信任的)。
我已经使用这个本地存储库至少 1 年了。但是我必须始终将我的本地存储库行放在sources.list文件的顶部才能使用它。但这很烦人,因为我每次重新安装 Ubuntu 时都必须打开一个终端并在上面打字,尽管有更好的工具software-properties-gtk. 我不能使用这个工具,因为它将源代码行放在 `sources.list 的末尾。
而真正的问题是,在apt 或 synaptic总是从前面提到的来源下载一个包,不检查包是否已在当地的仓库中。所以,我别无选择,只能将本地源放在sources.list做终端的顶部(我实际上并不讨厌终端,但我需要一个解决方案)。
我试过这种方法。但这对我没有帮助。
我的首选项文件是这样的 /etc/apt/preferences.d/local-pin-900
Package: *
Pin: release o=Local,n=ubuntu-local
Pin-Priority: 900
Run Code Online (Sandbox Code Playgroud)
我的发布文件是这个
Origin: Local
Label: Local-Ubuntu
Description: Local Ubuntu Repository
Codename: ubuntu-local
MD5Sum:
ed43222856d18f389c637ac3d7dd6f85 1043412 Packages
d41d8cd98f00b204e9800998ecf8427e 0 Sources
Run Code Online (Sandbox Code Playgroud)
当我启用 apt-preference 时,会apt-cache policy正确显示首选项,例如它显示本地存储库具有最高优先级。
但是当我这样做时sudo apt-get install <package-name>,会apt尝试从 Internet 下载它。但是当我将本地存储库放在顶部时,它会从本地存储库安装。
所以,我的问题是 -> '当包在本地存储库中可用时,是否可以强制 apt 使用本地存储库,而无需将“本地源”明确放置在我的存储库列表(例如,sources.list 文件)的顶部? '
编辑:输出apt-cache policy $package_name如下
鹦鹉螺擦拭:
已安装:(无)
候选人:0.1.1-2
版本表:
0.1.1-2 0
500 个 http://archive.ubuntu.com/ubuntu/precision/universe i386 包
900 文件:/media/Main/Linux-Software/Ubuntu/Precise/ Packages
这表明我的本地存储库具有更高的偏好,尽管它不是sources.list文件中第一个。
这是输出 apt-get install nautilus-wipe
阅读包裹清单...完成 构建依赖树 读取状态信息...完成 将安装以下新软件包: 鹦鹉螺擦拭 0 升级,1 新安装,0 删除,131 未升级。 需要获得 30.7 kB 的档案。 此操作后,将使用 150 kB 的额外磁盘空间。 'http://archive.ubuntu.com/ubuntu/pool/universe/n/nautilus-wipe/nautilus-wipe_0.1.1-2_i386.deb' nautilus-wipe_0.1.1-2_i386.deb 30730 MD5Sum:7d4975cb8f9d497b8f9d
它仍在尝试从 Internet 获取文件,但我认为它应该对本地文件感到满意。
使用 localhost 没有效果。但“”有但与我的方法没有什么不同
Package: *
Pin: origin ""
Pin-Priority: 1001
Run Code Online (Sandbox Code Playgroud)
我在发布问题之前使用过它们。但是我再次尝试了这个(为了保险起见)。同样的结果。apt-cache policy表明我的本地存储库确实具有最高优先级。但是当我尝试安装时,它说“需要获取 XXX/XXX KB 的存档”。
Anw*_*war 61
APT 首选项文件 /etc/apt/preferences 可用于控制将选择安装哪些版本的软件包。
这是文件/etc/apt/preferences,apt-get用于决定如果单个包有多个版本,它必须选择哪个版本。这样,来自本地存储库的任何包都将优先于其他包。
包裹: * 销:起源“” 引脚优先级:1001
这不会控制版本,但如果两个包具有相同版本,则源首选项。如果您需要为本地存储库中的相同软件包版本分配最高优先级,请将它们列在/etc/apt/sources.list文件的顶部>
如何在不使用 sources.list 文件的情况下为本地存储库分配最高优先级?
在不使用sources.list文件的情况下,无法将最高优先级分配给本地存储库。如果您想为本地存储库分配最高优先级,则必须将它们放在“sources.list”的顶部。
如何让 apt-get 更喜欢本地存储库包,而不是从官方存储库再次下载相同的包版本?本地存储库已签名并受信任。我们已经尝试过 apt 偏好优先级。
使用该/etc/apt/sources.list文件,您需要将本地存储库行放在该文件的顶部。像下面那个。
deb cdrom:[Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)]/精确主限制 deb 文件:/media/Main/Precise-Debs-New / deb 文件:/media/Main/Linux-Software/Ubuntu/Precise / deb http://archive.ubuntu.com/ubuntu 精确主宇宙受限多元宇宙 deb-src http://archive.ubuntu.com/ubuntu 精确宇宙主多元宇宙受限 #由软件属性添加 # deb cdrom:[Xubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423.1)]/精确主多元宇宙受限宇宙 # deb cdrom:[Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)]/精确主限制 # deb http://archive.canonical.com/ubuntu 精准合作伙伴 # deb-src http://archive.canonical.com/ubuntu 精准合作伙伴 # deb http://extras.ubuntu.com/ubuntu 精确主 # deb-src http://extras.ubuntu.com/ubuntu 精确主
是的,“apt_preference”与选择相同版本的包实例无关。这里的重点是,您不能通过将最高优先级分配给本地存储库来使用/etc/apt/preference文件来强制选择/使用.deb本地存储库中的文件。该文件(首选项)用于选择特定版本,而不是相同版本的特定实例(.deb 文件)。对于后一种情况,您需要使用/etc/apt/sources.list具有上述方法的文件。
似乎我们都误解了apt_preference目的,apt_preference 手册在前 3 段中对此进行了描述!!
APT 首选项文件 /etc/apt/preferences 可用于控制将选择安装哪些版本的软件包。
当sources.list(5) 文件包含对多个发行版(例如,稳定版和测试版)的引用时,一个包的多个版本可能可供安装。APT 为每个可用版本分配优先级。受依赖约束,apt-get(8) 选择安装优先级最高的版本。APT 首选项文件会覆盖默认情况下 APT 分配给软件包版本的优先级,从而使用户可以控制选择安装哪个版本。
非常重要的是在第三段
当sources.list(5) 文件包含对多个源的引用时,同一版本包的多个实例可能可用。在这种情况下apt-get(8) 下载在 sources.list(5) 文件中最早列出的实例。APT 首选项文件不影响实例的选择,只影响版本的选择。
那些斜体是我做的
我有精确的版本compiz-fusion-plugins-extra,但为了演示我禁用了它
这是文件/etc/apt/preferences,apt-get用于决定如果单个包有多个版本,它必须选择哪个版本。(在这个例子中,compiz-fusion-plugins-extra有几个版本。
包裹: * 销:起源“” 引脚优先级:1001
该文件表示apt-get从本地存储库安装在不同存储库中存在多个版本的所有软件包。
换句话说,如果我的本地存储库中有xapps带有版本的包1.0,并且该相同的包xapps存在于具有更高版本的 Precise 存储库中,例如2.0,apt-get将更喜欢本地存储库中的版本,即 version 1.0。
这是我的/etc/apt/sources.list文件
deb http://archive.ubuntu.com/ubuntu 精确主宇宙受限多元宇宙 deb-src http://archive.ubuntu.com/ubuntu 精确宇宙主多元宇宙受限 #由软件属性添加 deb http://security.ubuntu.com/ubuntu/precision-security Universe 主多元宇宙受限 deb http://archive.ubuntu.com/ubuntu 精确更新宇宙主多元宇宙受限 deb http://archive.ubuntu.com/ubuntu precision-backports Universe 主多元宇宙受限 # deb http://archive.canonical.com/ubuntu 精准合作伙伴 #deb-src http://archive.canonical.com/ubuntu 精准合作伙伴 # deb http://extras.ubuntu.com/ubuntu 精确主 # deb-src http://extras.ubuntu.com/ubuntu 精确主 deb 文件:/media/Main/Linux-Software/Ubuntu/Oneiric / #this 是 oneiric 存储库。 deb 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty / deb 文件:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu / deb 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty_new /
虽然,我已经在文件的前面列出了精确的存储库,但它不会导致apt-get从该存储库中选择包。如手册中所述
APT 首选项文件不影响实例的选择,只影响版本的选择。
因此,该命令的输出apt-cache policy compiz-fusion-plugins-extra符合预期,如下所示
anwar@edubuntu-lenovo:/etc/apt$ apt-cache 策略 compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
已安装:(无)
候选:0.9.5.94-0ubuntu1 / **选择低版本优先** /
版本表:
0.9.7.0~bzr9-0ubuntu6 0
500 个 http://archive.ubuntu.com/ubuntu/precision/universe i386 包
0.9.5.94-0ubuntu1 0
1001 文件:/media/Main/Linux-Software/Ubuntu/Oneiric/ Packages
0.9.4-0ubuntu3 0
1001 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
在这里,候选版本是0.9.5.94-0ubuntu1, (在本地存储库中),而不是0.9.7.0~bzr9-0ubuntu6 0,它在精确存储库中。尽管精确的人在sources.list文件中列在第一位。
apt-get尝试安装的示例运行compiz-fusion-plugins-extra。anwar@edubuntu-lenovo:~$ sudo apt-get install compiz-fusion-plugins-extra 阅读包裹清单...完成 构建依赖树 读取状态信息...完成 以下软件包已自动安装,不再需要: x11-apps x11-xfs-utils xinit x11-session-utils libfs6 使用 'apt-get autoremove' 删除它们。 将安装以下额外的软件包: compiz-core compiz-plugins-default compiz-plugins-extra compiz-plugins-main-default libdecoration0 xserver-xorg-core xserver-xorg-video-intel 推荐套餐: compizconfig-settings-manager xfonts-100dpi xfonts-75dpi 以下软件包将被删除: compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop libcompizconfig0 ubuntu-desktop unity xorg xserver-xorg xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-input-vmmouse xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ati xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nouveau xserver-xorg-video-openchrome xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon xserver-xorg-video-s3 xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident xserver-xorg-video-vesa xserver-xorg-video-vmware 将安装以下新软件包: compiz-fusion-plugins-extra compiz-plugins-extra 以下软件包将被降级: compiz-core compiz-plugins-default compiz-plugins-main-default libdecoration0 xserver-xorg-core xserver-xorg-video-intel 0 升级,2 新安装,6 降级,37 删除和 698 未升级。 需要获得 0 B/5,772 kB 的档案。 执行此操作后,将释放 8,294 kB 磁盘空间。 你想继续[是/否]吗?
奇怪!!!,它试图降级已经安装的compiz包,以使用新选择的来解决依赖关系(与Oneiric的匹配)compiz-fusion-plugins-extra!!!。
更危险的是,它试图删除图形驱动程序包(xserver-xorg-....)以避免与新的compizes发生冲突。
(可能,如果我的本地存储库中也有它们,他们可能安全地想要降级。但是由于通常安装了这些软件包,我没有下载它们,所以不在本地存储库中,因此是这个结果)。
结论:因此,/etc/apt/preferences如果您在本地系统中有完整的存储库,则仅建议与本地存储库一起使用。
apt_preference手册中描述的
当sources.list(5) 文件包含对多个源的引用时,同一版本包的多个实例可能可用。在这种情况下 apt-get(8) 下载在 sources.list(5) 文件中最早列出的实例。
/etc/apt/preferences文件的用例示例:强制apt-get从自定义存储库中选择可用版本而不是 Ubuntu 的标准版本的一个示例可能是“Linux Mint”发行版。他们使用这个自定义preference文件。
包裹: * 引脚:释放 o=linuxmint 引脚优先级:700 包裹: * 引脚:origin packages.linuxmint.com 引脚优先级:700 包裹: * 引脚:发布 o=Ubuntu 引脚优先级:500
这有效地导致他们在他们的存储库中有包时提供包。但是如果他们没有它们,他们会使用 Ubuntu 的标准存储库。
apt-get将最高优先级设置为本地存储库后运行的示例我只是想kubuntu-desktop 在 Ubuntu 上安装包来测试 KDE。(我忘记了,我已经使用/etc/apt/preference文件设置了首选项)。我有 kubuntu-12.04-alternate-installer 的 iso,所以我想我可以使用它。
(在将iso正确设置为存储库源之后),我跑了
sudo apt-get install kubuntu-desktop,然后看到下面的输出感到惊讶。
anwar@edubuntu-lenovo:~$ sudo apt-get install kubuntu-desktop
阅读包裹清单...完成
构建依赖树
读取状态信息...完成
无法安装某些软件包。这可能意味着你有
请求了一个不可能的情况,或者如果您使用的是不稳定的
一些必需的包尚未创建的发行版
或被移出 Incoming。
以下信息可能有助于解决这种情况:
以下软件包具有未满足的依赖项:
kubuntu-desktop : 取决于:language-selector-kde 但它不会被安装
推荐: amarok 但它不会被安装
推荐:apturl-kde 但它不会被安装
推荐:gdebi-kde 但它不会被安装
推荐:gpgsm 但它不会被安装
推荐: ibus-qt4 但它不会被安装
推荐: jockey-kde 但它不会被安装
推荐: kdegraphics-strigi-plugins 但它不会被安装
推荐: kdepim-wizards 但它不会被安装
推荐: kpackagekit 但它不会被安装
推荐:libreoffice-kde 但它不会被安装
推荐:libreoffice-style-oxygen 但它不会被安装
推荐:network-manager-pptp-kde 但它不会被安装
推荐:plasma-widget-facebook 但它不会被安装
推荐:plasma-widget-kimpanel 但它不会被安装
推荐:usb-creator-kde 但它不会被安装
E:无法纠正问题,您持有破损的包裹。
我对结果感到惊讶。突然我记得,我已经设置了一个偏好(为了写这个答案)/etc/apt/preference来为我的本地存储库设置最高优先级。
所以,我运行了这个:apt-cache policy kubuntu-desktop,输出如下:
anwar@edubuntu-lenovo:~$ apt-cache 策略 kubuntu-desktop
kubuntu 桌面:
已安装:(无)
候选:1.222.1kde47~ppa2
版本表:
1.254 0
500 cdrom://Kubuntu 12.04 LTS _Precise Pangolin_ - 发布 i386 (20120424)/精确/主 i386 包
500 个 http://archive.ubuntu.com/ubuntu/precision/main i386 包
1.222.1kde47~ppa2 0
1001 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222.1 0
1001 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222 0
1001 文件:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/ Packages
在此输出中,我们看到“cdrom”和“精确主存储库”的版本号均为1.254,而本地存储库的版本号为1.222.1kde47~ppa2,这是较低版本。尽管它们在sources.list 文件中放在本地包之前,但本地包优先。
为了明确看到apt-get确实是在尝试从本地安装,我运行synaptic并得到了这个,这表明 Apt 系统将1.222.1kde47~ppa2作为要安装的候选版本。

也apt-cache policy kubuntu-desktop显示相同的东西
anwar@edubuntu-lenovo:~$ apt-cache 策略 kubuntu-desktop
kubuntu 桌面:
已安装:(无)
候选:1.222.1kde47~ppa2
版本表:
1.254 0
500 cdrom://Kubuntu 12.04 LTS _Precise Pangolin_ - 发布 i386 (20120424)/精确/主 i386 包
500 个 http://archive.ubuntu.com/ubuntu/precision/main i386 包
1.222.1kde47~ppa2 0
1001 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222.1 0
1001 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty/ Packages
1.222 0
1001 文件:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/ Packages
为了解决这个问题,我/etc/apt/preference通过sudo rm /etc/apt/preference.
然后又跑了一遍apt-cache policy kubuntu-desktop。只看到这个预期的输出。
anwar@edubuntu-lenovo:~$ sudo rm /etc/apt/preferences
anwar@edubuntu-lenovo:~$ sudo apt-cache 策略 kubuntu-desktop
kubuntu 桌面:
已安装:(无)
候选人:1.254
版本表:
1.254 0
500 cdrom://Kubuntu 12.04 LTS _Precise Pangolin_ - 发布 i386 (20120424)/精确/主 i386 包
500 个 http://archive.ubuntu.com/ubuntu/precision/main i386 包
1.222.1kde47~ppa2 0
500 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty/ 包
1.222.1 0
500 文件:/media/Main/Linux-Software/Ubuntu/Natty/natty/ 包
1.222 0
500 文件:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/ Packages
也再次运行了这个。sudo apt-get install kubuntu-desktop查看下面的输出:
...... 删除了不必要的细节...... 0 升级,213 新安装,0 删除,150 未升级。 需要获得 0 B/89.6 MB 的档案。 此操作后,将使用 269 MB 的额外磁盘空间。 你想继续[是/否]吗?
您可以在此处查看完整结果
然后我非常确定解释部分。
| 归档时间: |
|
| 查看次数: |
41204 次 |
| 最近记录: |