Por que o apt me pede para inserir a frase completa enquanto purga um pacote?

4

Não tente este comando.

Enquanto estou tentando limpar o pacote login , o terminal me pede para inserir o texto inteiro em vez de [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!'
 ?] 

Por que isso me pede para inserir o texto Yes, do as I say! inteiro? O que acontecerá se eu inserir Y ou Yes ?

    
por Avinash Raj 19.03.2014 / 06:25

4 respostas

6
O pacote

login consiste em programas como login , newgrp e su .Estes programas também são chamados de ferramentas de login do sistema .Essas ferramentas são necessárias para fazer login e use seu sistema.

  • O programa de login chama seu shell de usuário e permite a execução de comandos.

  • O programa newgrp é usado para alterar seu ID de grupo efetivo (útil para situações de tipo de grupo de trabalho).

  • O programa su permite alterar a sua eficácia ID do usuário (útil poder executar comandos como outro usuário).

Este é um pacote de sistema essencial. Portanto, a mensagem de Aviso ( Isto NÃO deve ser feito a menos que você saiba exatamente o que está fazendo! ) como abaixo aparece e pede para você inserir a frase inteira Yes, do as I say! , enquanto você tenta limpar o pacote 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!'
?] 
  

O que acontecerá se eu inserir Y ou Yes ?

Você precisa inserir a frase correta Yes, do as I say! , para que o pacote login seja removido. Se você inserir Y ou Yes , o processo de remoção do pacote será abortado. Até a marca de exclamação, espaços, letras maiúsculas e minúsculas são consideradas estritamente.

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

Após inserir a frase com sucesso, o dpkg remove a opção login package com 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 ...
    
por Avinash Raj 19.03.2014 / 06:25
4

A pista está no prompt

  

Os seguintes pacotes essenciais serão removidos

apt tem uma classificação especial para pacotes considerados tão importantes que, sem eles, seu sistema seria quebrado. Você pode removê-los, mas apt quer fazer duplo-certeza de que você não vai culpá-lo depois.

Você pode ver os pacotes essenciais instalados com aptitude search '~E~i' , que atualmente (em uma caixa 13.10) fornece os seguintes pacotes:

  

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

Eu estava curioso para saber quais comandos poderiam incluir (eu sei que coreutils é bastante grande), então construí a seguinte consulta de monstro for f in $(aptitude search '~E~i' | awk '{print }' | 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

    
por Oli 19.03.2014 / 11:09
1

Os pacotes possuem vários campos que são preenchidos com informações, um desses campos indica a importância do pacote, que é chamado de priority . Existem duas prioridades dadas aos pacotes que, sem eles, você não obtém um sistema funcional, que são essential e required .

Estes pacotes são instalados por padrão em todas as instalações do Ubuntu / Debian. Sempre que você tentar removê-los, o instalador pedirá para você soletrar que está certo , para que você entenda as conseqüências de suas ações. Então, se você continuar com a remoção, é altamente provável que alguma parte do sistema fique completamente quebrada e você não possa mais inicializar.

Para obter a lista dos pacotes que têm essas prioridades, recomendo o uso do aptitude:

aptitude search ~prequired
aptitude search ~pimportant

Ou, caso você goste de synaptic, você deve selecionar para mostrar as prioridades dos pacotes.

    
por Braiam 19.03.2014 / 12:52
0

Você está usando apt-get para fazer a limpeza. apt-get é um utilitário de linha de comando fornecido pelo pacote apt .

Seu objetivo declarado (encontrado no código-fonte) é:

apt-get - Cover for dpkg
This is an allout cover for dpkg implementing a safer front end.

Em outras palavras, apt-get implementa verificações de segurança que outros utilitários que interagem com o gerenciador de pacotes podem não fornecer.

Os comandos mais solicitados listarão os pacotes afetados e outras informações relacionadas à transação solicitada e, em seguida, serão seguidos por uma simples mensagem de confirmação:

Do you want to continue [Y/n]?

Mas, se vir que os pacotes definidos no gerenciador de pacotes com essential priority estão prestes a ser removidos, ele segue a lista de pacotes com este aviso:

WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!

Em seguida, ele substitui o prompt de continuação padrão por um prompt mais estrito que não pode ser confirmado acidentalmente, pois a resposta deve corresponder ao caractere de prompt do caractere:

You are about to do something potentially harmful.
To continue type in the phrase "Yes, do as I say!"

apt-get permitirá que a transação passe para apt , que por sua vez interage com dpkg .

É importante observar que o comportamento observado nesta questão é proveniente apenas de apt-get e que, novamente, o propósito declarado de apt-get é fornecer esse tipo de camada de segurança.

É possível limpar pacotes por meio de outros utilitários, como aptitude , synaptic ou dpkg ; mas o nível de proteção fornecido por esses outros serviços provavelmente será diferente.

    
por chaskes 19.03.2014 / 17:07

Tags