O 'sudo apt-get remove [write]' pode destruir meu Ubuntu?

59

Eu queria remover meu aplicativo 'write', então encontrei isso em um site: Para remover um tipo de pacote:

sudo apt-get remove [package_name]

Então eu digitei:

sudo apt-get remove [write]

E depois concordei com o aviso: 'sim, faça o que eu digo!' ou algo assim. E pronto! Meu Ubuntu estava deletando! Alguém pode me dizer por que?

Jesper Joachim Sørensen
fonte
29
Um momento de aprendizado sobre a leitura da saída completa. Muitos de nós já fizemos algo parecido ... uma vez.
user535733
7
Uma boa dica se você não tiver certeza do que acontecerá é usar a bandeira --simulateou -sembaixo aptou apt-getprimeiro - Exemplo: sudo apt -s remove php7.2-pspellna verdade, não remove isso. Apenas mostra o que seria removido / afetado (se instalado). O mesmo para 'instalar'.
bshea
touch wprimeiro a poupar algum sofrimento ;-).
Stephen Kitt
@ B.Tanner Fico feliz em saber que minha resposta realmente ajuda em vez de apenas polarizar. Você é sempre bem-vindo na sala de bate-papo geral da UA, caso tenha outras dúvidas (ou outras) ou apenas queira dizer olá!
dessert
Também é uma boa lição sobre as convenções de notação nas páginas de manual.
chrylis -on strike -

Respostas:

92

O comando correto para remover um pacote chamado writeé:

sudo apt remove write

[write]é um conjunto de caracteres que corresponde aos caracteres "w", "r", "i", "t" e "e" e, como a correspondência é feita por substring por apt. O comando que você executou assim combinava todos os pacotes com um desses personagens nele , o que naturalmente são um monte . Para citar aptos resultados da lista, apenas os essenciais:

WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt adduser (due to apt) gpgv (due to apt) ubuntu-keyring (due to apt) libapt-pkg5.0 (due to apt) libc6 (due to apt) libgcc1 (due to apt) libgnutls30 (due to apt) libseccomp2 (due to apt)
  libstdc++6 (due to apt) base-files base-passwd libdebconfclient0 (due to base-passwd) bash libtinfo5 (due to bash) debianutils (due to bash) bsdutils libsystemd0 (due to bsdutils) coreutils
  libacl1 (due to coreutils) libattr1 (due to coreutils) libselinux1 (due to coreutils) dash dpkg (due to dash) diffutils libbz2-1.0 (due to dpkg) liblzma5 (due to dpkg) libzstd1 (due to dpkg)
  zlib1g (due to dpkg) tar (due to dpkg) e2fsprogs libblkid1 (due to e2fsprogs) libcom-err2 (due to e2fsprogs) libext2fs2 (due to e2fsprogs) libss2 (due to e2fsprogs) libuuid1 (due to e2fsprogs) fdisk
  libfdisk1 (due to fdisk) libmount1 (due to fdisk) libncursesw5 (due to fdisk) libsmartcols1 (due to fdisk) findutils grep libpcre3 (due to grep) install-info (due to grep) gzip hostname init
  systemd-sysv (due to init) init-system-helpers (due to init) perl-base (due to init-system-helpers) libc-bin login libaudit1 (due to login) libpam0g (due to login) libpam-runtime (due to login)
  libpam-modules (due to login) mount util-linux (due to mount) ncurses-base ncurses-bin sed sysvinit-utils libudev1 (due to util-linux)
0 upgraded, 0 newly installed, 2503 to remove and 0 not upgraded.
After this operation, 7238 MB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'

Os vários avisos, bem como a necessidade de digitar literalmente

Sim, faça o que eu digo!

Existem meios de segurança para impedir que você destrua seu sistema, pois o gerenciador de pacotes do sistema apté perfeitamente capaz de fazer isso. Qualquer comando executado sudodeve ser cuidadoso e atencioso, mas não se preocupe: quase todos os usuários experientes do Ubuntu quebraram o sistema pelo menos uma vez, na verdade isso faz parte da diversão, se você me perguntar.

Leitura adicional

sobremesa
fonte
1
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Thomas Ward
15

Para adicionar o que outras pessoas disseram, você verá a sintaxe que o blogueiro usou em suas postagens com bastante frequência.

Existem padrões bastante consistentes que são usados ​​ao escrever documentação sobre como usar comandos. Em todas as páginas de manual, você verá praticamente a mesma estrutura.

Se algo é opcional , geralmente está entre colchetes. ls [folder](você não precisa fornecer ls uma pasta, mas pode. Assim, opcional).

Se algo for um arquivo ou e - mail , você geralmente o verá entre colchetes angulares.<likeThis.php>

Se você tiver uma escolha entre um número finito de coisas (ou seja, Meses), verá isso entre chaves:{September,October,November,December}

Com qualquer um desses, você pode ver o ...que indica que vários deles podem ser dados.

E, finalmente, se algo for absolutamente obrigatório, você verá a documentação listada e provavelmente sublinhada. Por exemplo, man mvo manual do mv diz o seguinte:

mv [OPTION]... [-T] SOURCE DEST

Tecnicamente falando, o nome do pacote (gravação) não é uma parte necessária do comando. Tente. apt-get installou apt-get removeapenas executará e sairá do programa com sucesso. Essa é uma das razões pelas quais ele pode ser apresentado entre colchetes nesse blog.

Nathaniel Pisarski
fonte
9

Antes de fazer um sudo apt-get, é aconselhável fazer uma simulação:

$ apt-get remove [write] -s | wc -l
65280

Existem quase 65.280 pacotes que podem ser removidos se instalados no seu sistema. [write]é um padrão de pesquisa para correspondência com Regex, fazendo com que cada pacote seja selecionado se contiver:

  • A letra wou rou iou toue

A saída é canalizada para o comando Contagem de Palavras com | wc -l. As linhas de saída de apt-getsão suprimidas por wc. A -lopção instrui wca imprimir apenas a contagem de linhas e não a contagem de palavras ou caracteres.

A simulação é especificada com a -sbandeira. Você também pode usar o --simulatesinalizador para maior legibilidade. Outra vantagem de uma simulação é que você não precisa de sudopoderes que muitos de nós aprendemos que podem ser perigosos às vezes.

Para ter uma idéia dos nomes dos pacotes envolvidos, envie a saída para o lesscomando:

$ apt-get remove [write] --simulate | less

NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Also keep in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists...
Building dependency tree...
Reading state information...
Package 'libpam-pin' is not installed, so not removed
Package 'activity-log-manager-common' is not installed, so not removed
Package 'libnet-patricial-perl' is not installed, so not removed
Package 'pe' is not installed, so not removed

   (.... Plus 65,269 more packages ....)
WinEunuuchs2Unix
fonte