首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >木偶在安装"lsscsi“时移除软件包。

木偶在安装"lsscsi“时移除软件包。
EN

Server Fault用户
提问于 2013-09-17 13:53:04
回答 1查看 182关注 0票数 4

我们希望在所有Linux服务器上安装"lsscsi“包,并为其构建一个清单:

代码语言:javascript
复制
# pack_lsscsi.pp

class common::pack_lsscsi  {

        case $operatingsystem {
                RedHat, CentOS, Debian: {
                        package { 'lsscsi':
                                ensure  => 'installed',
                        }
                }
        }
}

"lsscsi“包只有"libc6”作为依赖项,所以根本不需要考虑。我们的Red和CentOS服务器都很好,但是一些Debian系统变得疯狂了。木偶移除了10到180个包裹,就像这个:

代码语言:javascript
复制
Sep 17 10:46:06 cacti01 puppet-agent[28008]
(/Stage[main]/Common::Pack_lsscsi/Package[lsscsi]/ensure) change from purged
to present failed: Execution of '/usr/bin/aptitude -y -o
DPkg::Options::=--force-confold install lsscsi' returned 255: Reading package
lists...#012Building dependency tree...#012Reading state information...#012Reading
extended state information...#012Initializing package states...#012Writing extended
state information...#012The following NEW packages will be installed:#012  lsscsi
#012The following packages will be REMOVED:#012  alien{u} apt-file{u} ash{u} at{u}
autopoint{u} biff{u} bin86{u} bison{u} #012  bwidget{u} checkpolicy{u} cramfsprogs{u}
curl{u} dbus{u} debhelper{u} #012  deborphan{u} dhcp-client{u} doc-linux-de{u}
dosfstools{u} dselect{u} #012  ethtool{u} fdutils{u} finger{u} flex{u} flip{u}
gcc-3.4-base{u} gdb{u} #012  gdbserver{u} gettext{u} gnu-efi{u} gnupg-doc{u}
hicolor-icon-theme{u} #012  html2text{u} hwdata{u} ifenslave{u} ifenslave-2.6{u}
intltool-debian{u} #012  iptraf{u} joe{u} kernel-package{u} language-env{u}
lgtoclnt{u} #012  libappconfig-perl{u} libapt-pkg-perl{u} libatk1.0-0{u}
libatk1.0-data{u} #012  libaudit0{u} libavahi-client3{u} libavahi-common-data{u}
#012  libavahi-common3{u} libbeecrypt6{u} libbind9-50{u} #012  libcompress-raw-zlib-
perl{u} libcompress-zlib-perl{u} #012  libconfig-file-perl{u} libcroco3{u} libcrypt-
ssleay-perl{u} libcups2{u} #012  libcurl3{u} libdb1-compat{u} libdb4.2{u} libdbus-1-
3{u} #012  libdigest-hmac-perl{u} libdigest-sha1-perl{u} libdirectfb-1.0-0{u} #012
libdns58{u} libdrm-intel1{u} libdrm-radeon1{u} libdrm2{u} libelf1{u} #012  libfam0{u}
libfam0c102{u} libfile-remove-perl{u} libfont-afm-perl{u} #012  libfs6{u} libgl1-mesa-
dri{u} libgl1-mesa-glx{u} libglade2-0{u} #012  libglu1-mesa{u} libgtk2.0-0{u}
libgtk2.0-bin{u} libgtk2.0-common{u} #012  libhtml-format-perl{u} libhtml-parser-
perl{u} libhtml-tagset-perl{u} #012  libhtml-tree-perl{u} libice6{u} libident{u}
libio-compress-base-perl{u} #012  libio-compress-zlib-perl{u} libio-stringy-perl{u}
Sep 17 10:46:09 cacti01 puppet-agent[28008]: Finished catalog run in 54.68 seconds

知道怎么会发生这种事吗?

托马斯

EN

回答 1

Server Fault用户

发布于 2015-12-20 13:38:24

之所以发生这种情况,是因为aptitude喜欢删除它认为未使用的包。aptitude跟踪它安装的每一个程序,并将其归类为“手动”或“自动”。“手动”包是明确要求安装的包。“自动”包不是专门请求的,而是作为依赖项安装的。例如,aptitude install irssi将安装irssi,但也会安装大量库,包括libncurses、lbperl、lbtinfo、libval等。如果您在某个时候删除了irssi,并且它是唯一需要这些库的安装包,aptitude也将删除不需要的自动安装库。

不幸的是,过去的情况是,aptitudeapt-get没有很好地结合在一起,由apt-get安装的打包程序通常会被aptitude视为自动安装的,因此,可能会被删除。新版本的apt-getaptitude协同工作要好得多,但这个问题在这些问题存在的时候就表现出来了。

如果,由于某种原因,你现在仍然有这种行为,有几种选择。最简单的方法是更改为Puppet的apt类型使用package提供程序。这将完全避免aptitude对于应该删除哪些包的任何混淆。

如果你需要继续使用aptitude提供商,你需要修正aptitude的S关于正在使用什么的想法。运行aptitude dist-upgrade并查看它想要删除的每个包。对于您知道要保存的每一个包,运行aptitude unmarkauto <package-name> (例如aptitude unmarkauto apt-file curl)。然后确保从那时起只对包安装使用aptitude

根据我的经验,aptitude比当前版本的apt-get做得更好的唯一事情是交互式的:诅咒接口和在命令行会话中间修改包安装/删除集的能力。傀儡不需要任何交互功能,所以您应该可以只使用apt提供程序。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/539562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档