为什么 apt 在清除包时提示我输入完整短语?

Avi*_*Raj 4 apt dpkg

不要尝试这个命令。

当我试图清除包时login,终端要求我输入整个文本而不是 [Y/n].

avinash@avinash-VirtualBox:~$ sudo apt-get purge login
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  login*
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  login
0 upgraded, 0 newly installed, 1 to remove and 303 not upgraded.
After this operation, 1,212 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
 ?] 
Run Code Online (Sandbox Code Playgroud)

为什么它提示我输入整个Yes, do as I say!文本?如果我输入Y或会发生什么Yes

Avi*_*Raj 7

login软件包由诸如loginnewgrp和等程序组成su。这些程序也称为系统登录工具。这些工具是能够登录和使用您的系统所必需的。

  • 登录程序调用您的用户 shell 并启用命令执行。

  • newgrp 程序用于更改您的有效组 ID(对于工作组类型的情况很有用)。

  • su 程序允许更改您的有效用户 ID(能够以另一个用户身份执行命令很有用)。

这是一个必不可少的系统包。因此,当您尝试清除包时,会出现如下警告消息(除非您确切知道自己在做什么!否则不应这样做!)并要求您输入整个短语Yes, do as I say!login

This should NOT be done unless you know exactly what you are doing!
      login
0 upgraded, 0 newly installed, 1 to remove and 303 not upgraded.
After this operation, 1,212 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] 
Run Code Online (Sandbox Code Playgroud)

如果我输入Y或会发生什么Yes

您必须输入正确的短语Yes, do as I say!,以便login删除包。如果您输入YYes,它将中止清除包的过程。即使是感叹号,空格,大写和小写字母也被严格考虑。

Yes  -  Abort
Yes, do as I say  -  Abort
yes, do as I say  -  Abort
Yes, do as I say  -  Abort
Yes,do as I say!  -  Abort
Yes, do as I say! -  Success
Run Code Online (Sandbox Code Playgroud)

成功输入短语后,dpkg 删除login启用 force 选项的包,

To continue type in the phrase 'Yes, do as I say!'
 ?] Yes, do as I say!
dpkg: warning: overriding problem because --force enabled:
 This is an essential package - it should not be removed.
(Reading database ... 162860 files and directories currently installed.)
Removing login ...
Purging configuration files for login ...
Processing triggers for man-db ...
Run Code Online (Sandbox Code Playgroud)

  • 没那么奇怪。`apt-get` 旨在作为“dpkg 的全面覆盖,实现更安全的前端”。其目的是保护您免受此类错误的影响。大多数其他程序的目的是按照您的指示执行而不打扰您。您需要了解如何使用程序并小心谨慎。另外,如果您选择使用它们,许多像“rm”这样的程序都包含更安全的选项。直接使用 dpkg 进行此清除,您将不会看到如此严格的检查。 (3认同)

Oli*_*Oli 5

线索在提示中

以下基本包将被删除

apt对被认为非常重要的包有一个特殊的分类,如果没有它们,你的系统就会被破坏。您可以删除它们,但apt要加倍确保您之后不会责怪它。

您可以看到已安装的基本软件包aptitude search '~E~i',当前(在 13.10 机器上)提供以下软件包:

apt base-files base-passwd bash bsdutils coreutils dash debianutils diffutils dpkg e2fsprogs findutils grep gzip hostname libc-bin login mount ncurses-base ncurses-bin perl-base sed tar util-linux

我很好奇这些命令可能包含哪些命令(我知道coreutils相当庞大),因此构建了以下怪物查询 for f in $(aptitude search '~E~i' | awk '{print $2}' | xargs dpkg -L); do [[ $(type -P "${f##*/}") == "$f" ]] && echo ${f##*/}; done

[ addpart add-shell agetty apt-cache apt-cdrom apt-config apt-get apt-key apt-mark arch badblocks base64 basename bash bashbug blkid blockdev captoinfo cat catchsegv cfdisk chattr chcon chgrp chkdupexe chmod chown chroot chrt cksum clear clear_console cmp comm cp csplit ctrlaltdel cut cytune dash date dd ddate debugfs delpart df diff diff3 dir dircolors dirname dmesg dnsdomainname domainname dpkg dpkg-deb dpkg-divert dpkg-maintscript-helper dpkg-query dpkg-split dpkg-statoverride dpkg-trigger du dumpe2fs e2freefrag e2fsck e2image e2label e2undo e4defrag echo egrep env expand expr factor faillog fallocate false fdformat fdisk fgrep filefrag find findfs findmnt flock fmt fold fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.ext4 fsck.ext4dev fsck.minix fsfreeze fstrim getconf getent getopt getty grep groups gunzip gzexe gzip head hostid hostname hwclock i386 iconv iconvconfig id infocmp infotocap install install-info installkernel ionice ipcmk ipcrm ipcs ischroot isosize join lastlog ldattach ldconfig ldconfig.real ldd line link linux32 linux64 ln locale localedef logger login logname logsave losetup ls lsattr lsblk lscpu mcookie md5sum md5sum.textutils mkdir mke2fs mkfifo mkfs mkfs.bfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.minix mklost+found mknod mkswap mktemp more mount mv namei ncurses5-config ncursesw5-config newgrp nice nisdomainname nl nohup nologin nproc od oldfind partx paste pathchk perl perl5.14.2 pg pinky pivot_root pldd pr printenv printf ptx pwd raw rbash readlink readprofile remove-shell rename.ul renice reset resize2fs resizepart rev rgrep rm rmdir rmt-tar rtcwake runcon run-parts savelog script scriptreplay sdiff sed seq setarch setsid setterm sfdisk sg sh sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf sleep sort split start-stop-daemon stat stdbuf stty su sum swaplabel swapoff swapon switch_root sync tabs tac tail tailf tar tarcat taskset tee tempfile test tic timeout toe touch tput tr true truncate tset tsort tty tune2fs tunelp tzselect umount uname uncompress unexpand uniq unlink unshare update-alternatives update-locale update-passwd users validlocale vdir wall wc whereis which who whoami wipefs x86_64 xargs yes ypdomainname zcat zcmp zdiff zdump zegrep zfgrep zforce zgrep zic zless zmore znew