我正在使用 Ubuntu 18.04。我有一个条件,即使用命令安装apt-get install package_name
软件包及其所有依赖项。
当我尝试使用命令卸载同一个软件包时,apt-get autoremove --purge package_name
它会卸载大部分依赖项,但不是全部。另一方面,当我尝试使用 aptitude 卸载软件包时,它工作正常,例如使用卸载apt-get autoremove
卸载 55 个依赖项(未删除所有依赖项),但使用 aptitude 卸载卸载 61 个依赖项(这是正确的)。
您是否知道我的命令是否错误apt-get autoremove
,或者您是否有助于理解为什么apt-get autoremove
卸载的软件包比 aptitude 少?
sudo apt-get autoremove --purge package_name
和的输出sudo aptitude purge package_name
:
$sudo apt-get autoremove --purge 软件包名称 正在读取软件包列表...完成 构建依赖关系树 正在读取状态信息...完成 下列软件包将被删除: 软件包名称* 依赖项1* 依赖项2* 依赖项3* 依赖项4* 依赖项5* 依赖项6* 依赖项7* 依赖项8* 依赖项9* 依赖项10* 依赖项11* 依赖项12* 依赖项13* 依赖项14* 依赖项15* 依赖项16* 依赖项17* 依赖项18* 依赖项19* 依赖项20* 依赖项21* 依赖项22* 依赖项23* 依赖项24* 依赖项25* 依赖项26* 依赖项27* 依赖项28* 依赖项29* 依赖项30* 依赖项31* 依赖项32* 依赖项33* 依赖项34* 依赖项35* 依赖项36* 依赖项37* 依赖项38* 依赖项39* 依赖项40* 依赖项41* 依赖项42* 依赖项43* 依赖项44* 依赖项45* 依赖46* 依赖47* 依赖48* 依赖49* 依赖50* 依赖项51* 依赖项52* 依赖项53* 依赖项54* 依赖项55* 升级了 0 个,新安装了 0 个,删除了 55 个,还有 222 个没有升级。 此操作完成后,将释放727 MB的磁盘空间。
$sudo aptitude purge 软件包名称 下列软件包将被删除: 软件包名称{p} 依赖项1{u} 依赖项2{u} 依赖项4{u} 依赖项5{u} 依赖项6{u} 依赖项8{u} 依赖项9{u} 依赖项10{u} 依赖项11{u} 依赖项12{u} 依赖项13{u} 依赖项14{u} 依赖项15{u} 依赖项16{u} 依赖项17{u} 依赖项18{u} 依赖项19{u} 依赖项21{u} 依赖项22{u} 依赖项23{u} 依赖项24{u} 依赖项25{u} 依赖项26{u} 依赖项27{u} 依赖项28{u} 依赖项30{u} dependency31{u} dependency32{u} dependency33{u} dependency34{u} dependency35{u} 依赖项36{u} 依赖项38{u} 依赖项39{u} 依赖项40{u} dependency41{u} dependency42{u} dependency43{u} dependency44{u} dependency45{u} 依赖项46{u} 依赖项47{u} 依赖项48{u} 依赖项49{u} 依赖项50{u} dependency51{u} dependency52{u} dependency53{u} dependency54{u} dependency55{u} 依赖项56{u} 依赖项57{u} 依赖项58{u} 依赖项59{u} 依赖项60{u} 依赖项61{u} 升级了 0 个软件包,新安装了 0 个软件包,删除了 61 个软件包,还有 222 个软件包未被升级。 需要获取 0 B 的档案。解压后将释放 1,133 MB。
答案1
aptitude 在解决软件包依赖关系方面比 apt-get 更积极。aptitude 会记住哪些软件包是明确请求的,哪些软件包只是由于依赖关系而安装的。当不再需要未明确请求的软件包时,它会自动卸载这些软件包。
apt-get 会以相同方式处理明确请求的软件包及其依赖项。apt-get autoremove
它不会删除仅作为依赖项安装的软件包,而是删除孤立的依赖项。它无法判断剩余的软件包是故意安装的还是作为依赖项安装的,因此会保留它,而 aptitude 会知道并删除它。
来源:修订自https://unix.stackexchange.com/questions/767/apt-get-and-aptitude-how-about-wajig 之间有什么区别/772#772