如何将包选择状态设置为当前状态?

我做了一个dpkg --clear-selections命令,发现我的所有包都被选中删除了。 正如手册所说的那样

–clear-selections:设置要卸载的每个非必要包的请求状态。

我后来才知道,如果我做一个sudo apt-get dselect-upgrade将删除所有包。

我在Ask Ubuntu中检查了这个问题 ,并在dpkg -l命令中读取了各种标志的含义。 有说,第一列显示“所需的包状态”或选择状态,第二列显示“当前状态”。

既然,我现在没有依赖问题,我想在dpkg数据库中将我的选择状态设置为所需的状态 。 我怎样才能做到这一点?

由于输出很大,我没有给出dpkg -l的输出。 输出是所有ri列。

当我做命令sudo apt-get dselect-upgrade ,它给了我这条消息,

 .........在要删除的一长串包名后......
警告:将删除以下基本包。
除非您确切知道自己在做什么,否则不应该这样做!
   apt ubuntu-keyring(由于apt)libapt-pkg4.12(由于apt)libstdc ++ 6(到期)
   to))gnupg(由于apt)base-files bash
 4个升级,0个新安装,1764个删除,1个未升级。
需要获得0 B / 1,359 kB的档案。
执行此操作后,将释放3,078 MB磁盘空间。
你即将做一些有害的事情。
要继续输入“是的,按我说的做”!
  ?] 

有没有办法将软件包选择状态重置为当前安装状态?

尝试使用此命令更改包状态 –

 echo " " | sudo dpkg --set-selections 

假设您已将包zip状态设置为deinstall 。 要回滚到原始状态, install运行此命令 –

 echo "zip install" | sudo dpkg --set-selections 

要一次更改更多包,请使用此命令

 dpkg --get-selections | sed -n 's/\<$//p' | sudo dpkg --set-selections 

例如,要更改状态为deinstall的所有包以安装使用 –

 dpkg --get-selections | sed -n 's/\ 

好的,我只需要这样做。 谢谢@sarowar的命令。 脚本为所有已安装的包执行此操作的步骤:

 export IFS=' ' for i in $(dpkg -l |egrep '^[az]i.*' |awk '{print $2" install"}') ; do echo $i|dpkg --set-selections ; done unset IFS