apt-get install'-'(减号/连字符)删除软件包


22

我正在寻找一些软件包(nautilus-terminal),并且偶然地这样做了:

$ sudo apt-get install nautilus-
Reading package lists... Done                                                                                                                                                                                                 
Building dependency tree                                                                                                                                                                                                      
Reading state information... Done                                                                                                                                                                                             
The following packages were automatically installed and are no longer required:                                                                                                                                               
  apturl apturl-common libgail-3-0 linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic                                                                      
Use 'sudo apt autoremove' to remove them.                                                                                                                                                                                     
The following packages will be REMOVED:                                                                                                                                                                                       
  gnome-session-flashback nautilus nautilus-sendto nautilus-share ubuntu-desktop                                                                                                                                              
0 upgraded, 0 newly installed, 5 to remove and 69 not upgraded.                                                                                                                                                               
After this operation, 2 031 kB disk space will be freed.                                                                                                                                                                      
Do you want to continue? [Y/n] ^[[^C                                                                                                                                                                                          

这是非常危险的,因为与自动完成失败后的简单破折号相比,remove键入错误要困难得多。

等于apt-get remove吗?我找不到任何文档。编辑:除了可以忽略手册页...


1
为什么比这更危险apt-get remove?Apt-get甚至会告诉您它将要做什么,并要求您确认。
marcelm

3
@marcelm,因为remove与自动完成失败后的简单破折号相比,更难键入错误。
stebu92

@ stebu92完美的措辞,如果您不介意,我要补充一点。
Ondra参观Žižka

我认为至少在Y / N时应该被改变到y / N -被使用。
Ondra参观Žižka

也许我误解了,但这似乎更像是一个抱怨/抱怨而不是一个问题。发布此结果后您希望得到什么问题?
thomasrutter

Answers:


28

来自man apt-get

安装
   安装后需要一个或多个所需的软件包
   安装或升级。每个软件包都是一个软件包名称,而不是
   完全限定的文件名(例如,在Debian系统中,
   apt-utils将是提供的参数,而不是
   apt-utils_1.2.10_amd64.deb)。所需的所有软件包
   指定安装的软件包也将被检索并
   已安装。/etc/apt/sources.list文件用于查找
   所需的软件包。如果在包名称后附加了连字符(带有
   中间没有空格),如果识别出的包裹被移除,
   已安装。同样,加号可用于指定
   软件包安装。这些后面的功能可用于覆盖
   apt-get的冲突解决系统做出的决定。

因此,OP应该做的是:sudo apt install nautilus && sudo apt install nautilus-terminalOP在哪里remove执行了其他命令:sudo apt install nautilus-terminal是否选择了NO
George Udosen'2

3
此功能的基本原理是,有时您想安装与已安装的软件包有冲突的软件包,但是其他软件包则需要其中一个软件包,因此这两个操作必须同时运行。例如apt install sysvinit-core systemd-sysv-Essential init程序包必需)或apt install msmtp postfix-(很多程序包取决于MTA)。
西蒙·里希特

1
尝试apt -s install upstart-sysv在16.04上使用@SimonRichter 表示apt将自动删除systemd-sysv(因为它们发生冲突)。msmtp-mta与和同上postifx。可能需要一个更复杂的示例,在apt该示例中选择要删除的错误软件包。
muru

感谢您修理我的双眼。注意apt-get remove foo+安装foo。
OndraŽižka'2

这是一个很好的功能。:D
Andrea Lazzarotto

0

以下两个含义相同:

# apt-get remove nautilus
# apt-get install nautilus-

因此,如果您仅安装或卸下一件东西,那么实际上没有理由选择一件东西,那么也remove可以使用该命令。

如果您要删除一个软件包并以相同的操作安装另一个软件包,那么“负号”运算符会派上用场:

# apt-get install php5-cgi libapache2-mod-php5- 

我想不出更好的示例,但是在某些情况下,在单独的操作中删除一个并添加另一个可能会触发其他不必要的安装或删除,而同时在单个操作中执行它们会立即满足一些相互依赖性并使其整体上更简单的操作。

至于添加减号是否可以更容易地无意间意外删除某些东西,我首先要向您介绍无论如何在命令行上无意间对系统造成损害是多么容易。它并不是为了保护您自己而设计的,甚至有数十亿甚至更简单的命令可以使您的系统崩溃。但是其次,在这种情况下,它会告诉您确切的操作并确认您确实要执行此操作。这是低风险。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.