标签: dpkg

无法强制 Debian 进行无人值守安装... libc6 需要交互式确认

我正在尝试创建一个脚本,强制 Debian Lenny 安装以安装最新版本的 CRAN R。在安装过程中,似乎 libc6 已升级,并且安装需要交互确认可以重新启动三个服务(mysql、exim4、cron )。此过程必须无人值守,因为它在 Amazon 的 Elastic Map Reduce (EMR) 机器上运行。但我的选择不多了。这是我尝试过的一些事情:

这个前面的问题似乎正是我要找的。所以我设置了我的安装脚本如下:

# set my CRAN repos... yes, I know there's a new convention where to put these. 
echo "deb http://cran.r-project.org/bin/linux/debian lenny-cran/" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://cran.r-project.org/bin/linux/debian lenny-cran/" | sudo tee -a /etc/apt/sources.list

# set the dpkg.cfg options per the previous SuperUser question
echo "force-confold" | sudo tee -a  /etc/dpkg/dpkg.cfg
echo "force-confdef" | sudo tee -a  /etc/dpkg/dpkg.cfg
export DEBIAN_FRONTEND=noninteractive

# …
Run Code Online (Sandbox Code Playgroud)

debian automated-install dpkg apt libc6

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

服务器环境中的 gem 与 apt-get

在使用乘客 + apache 设置服务器以在 Rails 上托管 ruby​​ 时,我应该在哪里划清使用 apt-get 和 gem 之间的界限?

它甚至重要吗?

在考虑软件更新等时混合包管理系统感觉是错误的。

应该怎么做呢?

rubygems dpkg apt

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

如何检查 apt 锁定文件是否已锁定?

我正在编写一个脚本来执行一些apt命令,但我遇到了apt/dpkg数据库被锁定的潜在问题,因此我的脚本无法使用。我想/var/lib/dpkg/lock在做任何事情之前检查锁定文件(即),就像apt它运行它的命令一样,但我不知道如何apt执行锁定。

锁定文件始终存在,并且apt-get不会对该文件进行群集操作。否则将如何检查它是否在使用中?从strace我看到apt-get打开文件,但就是这样。在我的脚本中,我可以在打开文件的同时apt-get打开它。

aptitude dpkg apt

6
推荐指数
3
解决办法
7286
查看次数

这个 dpkg 命令究竟是做什么的?

我修复了像这里描述的nagios 的许可问题。

命令是:

sudo dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
Run Code Online (Sandbox Code Playgroud)

好吧,很明显,这是某种许可更改。但它发生在哪里?它存储在哪里?它只是一个chmod修改吗?

permissions chmod dpkg

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

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
查看次数

dpkg-reconfigure:对话框前端成功设置 postfix;非交互式前端失败

(注意,在这个问题中,前导#表示根提示符,而不是注释。此外,我已将实际主机名替换为<myhostname>。)

正如debconf (7)手册页所述,dpkg-reconfigure可以使用多个前端中的任何一个来调用,包括默认(“对话框”)交互式前端和“非交互式”前端。

我的想法正确吗?

# dpkg-reconfigure postfix
Run Code Online (Sandbox Code Playgroud)

调用对话框前端,并按Enter回答每个问题,应该相当于运行以下命令?

# dpkg-reconfigure -f noninteractive postfix
Run Code Online (Sandbox Code Playgroud)

如果是这样,那么我不明白以下差异。

差异

在从我的网络主机映像(已安装 postfix)中新填充 Debian 9“Stretch”的 VPS 上,我使用以下命令进行预置debconf-set-selections

# debconf-set-selections <<< "postfix postfix/destinations string <myhostname>"
# debconf-set-selections <<< "postfix postfix/mailbox_limit string 51200000"              
# debconf-set-selections <<< "postfix postfix/mailname string <myhostname>"    
# debconf-set-selections <<< "postfix postfix/main_mailer_type select Internet Site"      
# debconf-set-selections <<< "postfix postfix/protocols select ipv4"                      
# debconf-set-selections <<< "postfix postfix/root_address …
Run Code Online (Sandbox Code Playgroud)

automation dpkg preseed debconf debian-stretch

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

如何完全删除 Debian 中的软件包?

我试着用这个:

aptitude remove denyhosts
Run Code Online (Sandbox Code Playgroud)

它似乎成功但在我使用后重新启动后:

ps aux | grep "denyhosts"
Run Code Online (Sandbox Code Playgroud)

我看到启动后仍然加载了拒绝主机。

那么我该怎么做才能停止并一劳永逸地摧毁它?“aptitude remove something”不是用来卸载的吗?

package-management debian aptitude dpkg apt

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

在 Debian 系统上,如何使用控制文件的“已安装大小”字段?

.deb 包的控制文件中包含的字段之一是“Installed-Size”,它应告知相关包的最终磁盘占用(以 kB 为单位)。

我的问题是这些信息通常何时/如何使用?

例如 dpkg 是否使用它来通知并可能阻止可用磁盘空间不足的用户安装/升级系统?安装完成后该信息是否有任何价值?

debian dpkg

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

跳过 dpkg-genchange 步骤 (Debian)

我正在构建仅二进制包:

dpkg-buildpackage -b -us -uc
Run Code Online (Sandbox Code Playgroud)

构建实际上运行成功,但我已经删除了以前版本的包,现在 dpkg-genchanges 抱怨:

   dh_builddeb
dpkg-deb: building package `zzz' in `../zzz_01-4_amd64.deb'.
 dpkg-genchanges -b >../zzz_01-4_amd64.changes
dpkg-genchanges: binary-only upload - not including any source code
dpkg-genchanges: error: cannot fstat file ../zzz_01-1_amd64.deb: No such file or directory
dpkg-buildpackage: error: dpkg-genchanges gave error exit status 2
Run Code Online (Sandbox Code Playgroud)

有没有办法跳过这一步?我真的不需要它,因为我正在构建供本地使用的 deb 包,而以前的版本是不必要的。

debian dpkg

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

使用 apt 安装任意版本的软件包的推荐方法是什么?

问题:

我需要一种方法来在我的 Debian 系统上安装某些软件包的特定固定版本。snapshot.debian.org似乎提供了一种方法来执行此操作,但是即使在向我的 apt-sources 添加快照后,我也无法apt-get install在该快照存档中使用某些特定版本的软件包。

问题:

从 Debian 快照存档安装特定软件包版本的官方或“正确”方式是什么?

背景和我尝试过的:

让我们使用 Debian8 Jessie 和 3.16.x 内核二进制文件作为我们的示例。在撰写本文时,Jessie 发布的内核是 3.16.43-2+deb8u5。说我要安装 3.16.43-2+deb8u4。

我首先在 debian 快照档案中搜索我想要的版本 ( http://snapshot.debian.org/binary/linux-image-3.16.0-4-amd64/ ),然后单击我想要的内核的确切版本我正在寻找,这让我进入http://snapshot.debian.org/package/linux/3.16.43-2%2Bdeb8u4/#linux-image-3.16.0-4-amd64_3.16.43-2:2b: deb8u4

从那里,我可以看到该软件包是“在 2017-09-20 22:12:21 上看到的 debian-security”和“在 2017-10-08 16:31:52 上看到的 debian”。我决定使用前者并选择 debian-security snapshot 20170920T221221Z

按照snapshot.debian.org首页上的说明,我将以下内容添加到我的 /etc/apt/sources.list 中:

deb http://snapshot.debian.org/archive/debian-security/20170920T221221Z/ jessie/updates main
deb src http://snapshot.debian.org/archive/debian-security/20170920T221221Z/ jessie/updates main
Run Code Online (Sandbox Code Playgroud)

然后我运行apt-get -o Acquire::Check-Valid-Until=false update并看到更新(似乎)成功完成。

我认为这将允许我现在安装所需版本的内核,但 apt 只知道两个安装候选,3.16.43-2+deb8u2 和 3.16.43-2+deb8u5。没有 +deb8u4 的迹象:

# apt-cache madison linux-image-3.16.0-4-amd64
linux-image-3.16.0-4-amd64 | 3.16.43-2+deb8u5 …
Run Code Online (Sandbox Code Playgroud)

debian dpkg apt

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