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*";
};
保存并关闭文件。

