标签: deb

如何查看 debian/ubuntu deb 软件包的更新日志?

我正在运行 Ubuntu,并且安装了一个 deb 文件。我以前制作过 deb 包,所以我知道有一个 debian 更改日志 (debchange)。无论如何,是否可以查看我已安装的任何软件包的 debian 更改日志?假设我无权访问此包的 deb 源文件,并且我没有可用的 deb 文件。如果需要,我可以安装额外的软件包。

package-management ubuntu debian deb apt

25
推荐指数
2
解决办法
3万
查看次数

apt:如何使用包标签进行搜索?

Debian 中的一些(大多数?)软件包有标签。例如:

=# apt-cache show squirrelmail | perl -lne 'print if /^Tag:/.../^\S/'
Tag: implemented-in::php, interface::web, mail::imap, mail::smtp,
 mail::user-agent, network::server, protocol::http, protocol::imap,
 protocol::smtp, role::program, scope::application, use::browsing,
 use::editing, use::searching, use::transmission, use::viewing,
 web::TODO, web::application, works-with::mail
Section: web
Run Code Online (Sandbox Code Playgroud)

但是,我找不到列出所有带有给定标签的包的方法。是否可以?

debian dpkg deb apt

14
推荐指数
4
解决办法
4400
查看次数

为什么reprepro抱怨“所有”架构?

我今天开始为我们的一些应用程序设置一个 deb 存储库。鉴于它们是解释性脚本,我选择了“所有”架构(来自conf/distributions):

Codename: lucid
Architectures: all
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将 .deb 添加到存储库时,reprepro 会打印警告:

WARNING: Distribution lucid contains an architecture called 'all'.
Run Code Online (Sandbox Code Playgroud)

现在我想知道为什么它会发出警告?有什么问题?

ubuntu debian deb apt

7
推荐指数
1
解决办法
2973
查看次数

“apt-get source”找不到包,但“apt-get install”和“apt-get cache”可以找到

我正在尝试下载包的源代码,但是当我运行时

root@proxy:~# apt-get source squid3
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Can not find version '3.3.8-1.1' of package 'squid3'
E: Unable to find a source package for squid3
Run Code Online (Sandbox Code Playgroud)

无法找到。但是当我运行时apt-cache search squid3它会找到它。

root@proxy:~# apt-cache search squid3
squid-cgi - Full featured Web Proxy cache (HTTP proxy) - control CGI
squid3 - Full featured Web Proxy cache (HTTP proxy)
squid3-common - Full featured Web Proxy cache (HTTP proxy) - common files
squid3-dbg - Full featured …
Run Code Online (Sandbox Code Playgroud)

ubuntu squid deb apt

7
推荐指数
1
解决办法
5701
查看次数

在 i386 机器上为 amd64 编译 debian 包?

我有一台 i386 ubuntu hardy 机器和一台 amd64 ubuntu hardy 机器。我想在 i386 上为 amd64 机器编译一个 debian 包(又名 deb)(因为我没有足够的内存在 amd64 机器上快速编译)。如果我dpkg-buildpackage在 i386 机器上做 a ,它会为 i386 生成一个 deb,它不能安装在 amd64 机器上。有没有办法在 i386 机器上为 amd64 编译 deb?

ubuntu debian 64-bit i386 deb

6
推荐指数
1
解决办法
2813
查看次数

reprepro 可以将新版本的软件包接受到存储库中吗?

我已经将一个软件包安装到我自己的 debian 软件包存储库中,如下所示:

$ sudo reprepro -b /var/packages/ubuntu includedeb maverick my-package_0.8-0_all.deb 
my-package_0.8-0_all.deb: component guessed as 'main'
Exporting indices...
Run Code Online (Sandbox Code Playgroud)

我已经使用 apt-get install 在几台机器上安装了我的软件包。

我现在为我的软件添加了新功能,并希望将我的软件包的新次要版本添加到存储库,以便我可以使用 apt-get upgrade 更新我的机器。

我尝试这样做:

$ sudo reprepro -b /var/packages/ubuntu includedeb maverick my-package_0.9-0_all.deb 
my-package_0.9-0_all.deb: component guessed as 'main'
Skipping inclusion of 'my-package' '1.0-0' in 'maverick|main|i386', as it has already '1.0-0'.
Skipping inclusion of 'my-package' '1.0-0' in 'maverick|main|amd64', as it has already '1.0-0'.
Run Code Online (Sandbox Code Playgroud)

看起来我需要告诉 reprepro 这是同一个包的新版本,但我不知道如何做到这一点。我已经多次阅读 reprepro 手册页并在网上搜索了几个小时,但我没有找到任何答案。

我错过了什么吗?

非常感谢。

linux debian deb apt

6
推荐指数
1
解决办法
9755
查看次数

debian,差异,配置默认值

我想知道是否有可能获得已安装 debian 软件包的原始配置文件与当前配置文件的差异。

如果找到显示修改后的配置文件的答案,但我找不到生成差异的方法。

命令是

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}' | sort | less
Run Code Online (Sandbox Code Playgroud)

debian configuration diff dpkg deb

6
推荐指数
1
解决办法
841
查看次数

为什么签名的 deb 包在复制到我的私人 deb 存储库时说它们没有经过身份验证?

快速版

我已经建立了一个私有 deb 存储库并将一些签名的 deb 包复制到其中。我已经在本地安装了签名密钥。但是,当我尝试从 repo 安装时,我收到此警告:

WARNING: The following packages cannot be authenticated!
Run Code Online (Sandbox Code Playgroud)

手动安装时,我可以按,y但我想使用 puppet 自动安装这些包,但失败了。

所以有什么问题?我是否需要使用我控制的密钥退出软件包?有没有更好的方法来确保我安装了特定版本的 puppet?

更多细节

我从puppet debian 存储库中获得了软件包- http://apt.puppetlabs.com/我只是从(对于 lucid)这个目录中复制了软件包

然后使用脚本更新存储库,该脚本为每个存储库运行这些命令:

cd /var/www/html/apt/ubuntu/lucid
dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
dpkg-scansources sources /dev/null | gzip -9c > sources/Sources.gz
Run Code Online (Sandbox Code Playgroud)

我已经在客户端上安装了签名密钥。

$ sudo apt-key list
/etc/apt/trusted.gpg
--------------------
...
pub   4096R/4BD6EC30 2010-07-10 [expires: 2016-07-08]
uid                  Puppet Labs Release Key (Puppet Labs Release Key) <info@puppetlabs.com>
...
Run Code Online (Sandbox Code Playgroud)

这样做的理由是我希望所有的 puppet 客户端都是相同的版本。因此,所有机器都应该使用以下 pin …

puppet repository deb apt

5
推荐指数
1
解决办法
1071
查看次数

Debian 软件包创建:binary-arch 和 binary-indep 目标

我正在尝试创建我的第一个 deb,所以我还不太了解它。这是我目前的“规则”文件:

#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1

# This has to be exported to make some magic below work.
export DH_OPTIONS

%:
        dh $@
Run Code Online (Sandbox Code Playgroud)

目前我正在阅读文档并试图了解如何编写更复杂的“规则”文件。我被困在 'binary-arch' 和 'binary-indep' 目标上。简而言之,我不明白它们究竟代表什么。

文档说包 arch 由“Control”文件中的“Architecture:”行决定。

  • 如果值为“all”,则该包依赖于体系结构。

  • 如果值为“any”,则包是
    独立于体系结构的。

我完全理解这部分。但后来我开始阅读 debhelper 工具的 man 文件。

man dpkg-buildpackage 说:

  1. 它调用 debian/rules 构建,然后调用 fakeroot debian/rules 二进制目标(除非使用 -S 请求了纯源构建)。请注意,binary-target 是 binary(默认情况下,或者如果指定了 -b)或 binary-arch(如果指定了 -B)或 binary-indep(如果指定了 -A)

man dh 说:

binary-indep 序列中的命令传递了“-i”选项以确保它们仅适用于与二进制无关的包,并且 binary-arch 序列中的命令传递了“-a”选项以确保它们仅适用于体系结构相关的包.

然后我尝试通过键入来查看“binary”、“binary-arch”和“binary-indep”目标的默认命令集

$ dh binary --no-act

$ dh binary-arch …
Run Code Online (Sandbox Code Playgroud)

debian packaging deb

5
推荐指数
1
解决办法
2069
查看次数

Linux 的 /etc/init.d - 符号链接、硬链接还是实际文件?

我有一个 Debian 和一个需要将启动/停止脚本添加到 /etc/init.d 目录的 RPM 包。最近,一位远程开发人员告诉我,“知情人士”知道“最佳实践”是在 /etc/init.d 目录中实际安装启动程序,而不是使用符号链接,尤其是在可以安装软件包时在不同的分区上。我一直使用符号链接。“ls -la”显示很多包使用符号链接。

是否有 Unix/Linux 大师可以给出关于在 /etc/init.d 目录中启动脚本的最佳实践的明确答案。最佳实践符号链接、硬链接、实际文件还是真的很重要?

如果你能引用一个来源,那就太好了。我在谷歌上搜索了这个话题,但找不到答案。

linux unix rpm init.d deb

5
推荐指数
1
解决办法
8959
查看次数

DEB:“提供:”字段被忽略

我需要用一个自定义的包替换一个包,它有自己的名字(foo-origpackage)。为了允许将其用作替代品,我将这Provides: origpackage一行添加到控制文件中。apt-cache show foo-origpackage列出“提供”条目就好了。但是,当我想根据 origpackage 安装文件时,它会失败(“未安装软件包 origpackage”)。

我缺少的“真实”包和虚拟包之间有什么区别吗?

编辑:

准确地说,我要替换的是用于 Squeeze 的 xen-utils-common。我的 tao-xen-utils-common 有以下control文件:

来源:tao-xen-utils-common
部分:内核
优先级:可选
维护者:Creshal <administration@tao.at>
构建依赖:debhelper
标准版本:3.8.0
主页:http://tao.at

包:tao-xen-utils-common
架构:全部
依赖:gawk、lsb-base、udev、xenstore-utils、tao-firewall
提供:xen-utils-common
冲突:xen-utils-common
替换:xen-utils-common
说明:Xen 管理工具——常用文件(修改)
 管理通过 Xen 虚拟化的系统的用户空间工具
 机监视器。
 修改为与 TAO 防火墙一起使用。

但是,安装 xen-utils-4.0 失败:

foo@bar# apt-cache showpkg tao-xen-utils-common
包:tao-xen-utils-common
版本: 
4.0.0-1tao1 (/var/lib/apt/lists/repo.tao.at_dists_stable_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 描述语言: 
                 文件:/var/lib/apt/lists/repo.tao.at_dists_stable_main_binary-amd64_Packages
                  MD5:7c2503f563fca13b33b4eb3cbcb3c129


反向取决于: 
  tao-防火墙,tao-xen-utils-common
  tao-防火墙,tao-xen-utils-common
依赖项: 
4.0.0-1tao1 - gawk (0 (null)) lsb-base (0 (null)) udev (0 (null)) xenstore-utils (0 (null)) tao-firewall (0 (null)) …

debian packages dependencies deb apt

4
推荐指数
1
解决办法
1882
查看次数

升级前查看所有要升级的包的更新日志

在我的 Ubuntu 台式计算机上使用 Synaptic 时,我可以查看所有要升级的软件包的所有更改日志,并根据需要取消选择要升级的软件包。在我的桌面上,我通常会安装所有东西,但我喜欢至少查看更改的内容,以便在我怀疑升级可能会导致我使用的开发工具出现问题时推迟升级。

在没有 x-server 的服务器(Ubuntu Server)上,我如何在控制台上做同样的事情:

  • 列出将要更新的所有包(apt-get --dry-run upgrade这样做还有很多嘈杂的模拟安装消息),
  • 查看从上次升级到将升级到的版本的更改日志(如果有)。
  • 选择我想忽略的包,或者我想升级的包

我为此搜索了很多,但没有找到任何东西,可能我没有使用正确的术语;但这肯定是可能的。Synaptic 必须从我假设的一些低级工具中获取它的信息?

如果使用现有工具还不能轻松完成,也欢迎使用复杂的 shellscript。

package-management ubuntu deb

3
推荐指数
1
解决办法
2161
查看次数

创建常用程序的自定义 DEB 包

我有越来越多的服务器运行 Debian 或 Ubuntu 以及自定义版本的 Apache、PHP 等。
我想我可以通过创建自己的 APT 源并将这些包的已编译副本放在我所有的服务器都可以使用的方式来节省时间用。这样,我也可以一次升级它们。
我已经能够找到几组创建 deb 存储库的指令(例如123),但我还没有找到实际编译和打包软件的最佳方法。
关于如何为自定义 DEB 存储库编译和打包 Apache HTTPD、PHP(以及一般软件)的任何教程或建议?

deb apt

3
推荐指数
1
解决办法
687
查看次数