Debian/Ubuntu Linux apt-get:将安装中的软件包列入黑名单
时间:2020-01-09 10:37:59 来源:igfitidea点击:
问题描述:
我创建了自己的lighttpd .deb软件包,但我不想使用apt-get命令对其进行升级。
另外,我也不想升级更多软件包,例如php5-cgi,httpd等。
如何将一个或多个软件包列入黑名单,以便在运行apt-get upgrade时它将忽略列入黑名单的软件包,并在Debian或Ubuntu Linux服务器系统下安装其余更新?
解决方法:
您需要使用dpkg命令工具来安装,构建,删除和管理Debian软件包。 Debian或Ubuntu Linux下的每个软件包都具有以下选择统计信息:
install
已选择要安装的软件包。hold
标记为保留的软件包不会由dpkg处理,除非被迫使用option force-hold进行处理。deinstall
已选择要卸载的软件包(即我们要删除除配置文件外的所有文件)。purge
选择要清除的软件包(即我们要从系统目录甚至配置文件中删除所有内容)。
选项#1:dpkg命令语法
要将Debian/Ubuntu软件包列入黑名单,请使用以下命令:
echo "packageName hold" | dpkg --set-selections echo "lighttpd hold" | dpkg --set-selections
要删除软件包保留并再次安装/升级:
echo "packageName install” | dpkg --set-selections echo "lighttpd install” | dpkg --set-selections
选项#2:/etc/apt/apt.conf.d/01autoremove
另一个选择是编辑一个名为/etc/apt/apt.conf.d/01autoremove
的文件,输入:
# vi /etc/apt/apt.conf.d/01autoremove
输出示例:
APT { NeverAutoRemove { "^firmware-linux.*"; "^linux-firmware$"; "^linux-image.*"; "^kfreebsd-image.*"; "^linux-restricted-modules.*"; "^linux-ubuntu-modules-.*"; }; Never-MarkAuto-Sections { "metapackages"; "restricted/metapackages"; "universe/metapackages"; "multiverse/metapackages"; "oldlibs"; "restricted/oldlibs"; "universe/oldlibs"; "multiverse/oldlibs"; }; };
将光标移动到名为Never-MarkAuto-Sections的部分的底部,然后追加并输入该部分以阻止我输入php5-cgi *的grub:
Never-MarkAuto-Sections { "metapackages"; "restricted/metapackages"; "universe/metapackages"; "multiverse/metapackages"; "oldlibs"; "restricted/oldlibs"; "universe/oldlibs"; "multiverse/oldlibs"; "php5-cgi*"; };
保存并关闭文件。