Posso remover o apt com o apt?

45

Eu sei que posso usar apt-get remove <package>para remover um programa.

Mas apté um programa em si. Eu poderia usá apt-get remove apt-lo para removê-lo ou ficaria confuso no meio do caminho?

Tim
fonte
2
Essa é uma pergunta real ou apenas hipotética? No caso 1: Experimente. Senão: acho que deve conseguir se limpar se não tentar iniciar nenhum de seus componentes depois de removê-los. Os arquivos que já estão abertos podem ser removidos sem problemas.
Byte Commander
@ByteCommander São os dois, mas não posso realmente tentar agora.
Tim
13
Você pode, mas provavelmente não deveria . Linux raramente pede por isso que o seu utilizador quer atirar no próprio pé, ele só assume que você tem uma boa razão e permite que você puxar o gatilho ...
Shadur
1
Para ser completo, o DNF de Fedoras não permitirá que você faça isso. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh 18/01/16
Que pergunta interessante é essa! Um acompanhamento lógico é: você pode se recuperar disso ou requer uma reinstalação completa?
precisa saber é o seguinte

Respostas:

78

APT permite simular seus comandos usando a opção -s. Você pode tentar fazer isso sozinho, emitindo o comando apt-get -s remove apt(não é sudonecessário).

Isso produz a seguinte saída:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  apturl-common xul-ext-ubufox
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-properties-common software-properties-gtk ubuntu-desktop
  unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 9 to remove and 0 not upgraded.
Remv ubuntu-desktop [1.341]
Remv nautilus-share [0.7.3-1ubuntu5]
Remv apturl [0.5.2ubuntu9]
Remv software-properties-gtk [0.96.13.1]
Remv software-properties-common [0.96.13.1]
Remv python3-software-properties [0.96.13.1]
Remv unattended-upgrades [0.86.2ubuntu1]
Remv apt-utils [1.0.10.2ubuntu1]
Remv apt [1.0.10.2ubuntu1]

Portanto, a resposta deve ser: sim, você pode.

cauon
fonte
8
Não tenho certeza de que o modo de simulação do apt cubra todas as consequências de algo assim. Certamente, esse seria um caso delicado que o código pode ou não abordar.
Sparhawk 17/01
12
Isso não requer sudo(o -smodo não faz nenhuma alteração), por isso é provavelmente melhor executá-lo sem sudo precaução.
Fake Name
3
O Apt pode muito bem ser capaz de determinar como remover o apt. Mas pode realmente fazê-lo? É fácil imaginar que ele possa excluir um arquivo do qual depende posteriormente, deixando a instalação em um estado inconsistente.
user253751
1
@immibis Eu ficaria mais preocupado com isso para remover o dpkg. O próprio Apt diz ao dpkg o que fazer, o dpkg é o que realmente executa as (des) instalações.
usar o seguinte código
1
Então, se apt diz dpkg o que fazer, o que acontece quando você remove dpkg ... lol
SuperSluether
30

Você pode...

sudo apt-get remove apt
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-center software-properties-common software-properties-gtk
  ubuntu-desktop ubuntu-extras-keyring ubuntu-minimal unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
After this operation, 9,031 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!'
?] Yes, do as I say!
(Reading database ... 179817 files and directories currently installed.)
Removing ubuntu-desktop (1.327) ...
Removing nautilus-share (0.7.3-1ubuntu5) ...
Removing apturl (0.5.2ubuntu4) ...
dpkg: warning: while removing apturl, directory '/usr/lib/python3/dist-packages/AptUrl/gtk/backend' not empty so not removed
Removing software-properties-gtk (0.94) ...
dpkg: warning: while removing software-properties-gtk, directory '/usr/lib/python3/dist-packages/softwareproperties/gtk' not empty so not removed
Removing software-properties-common (0.94) ...
Removing python3-software-properties (0.94) ...
Removing unattended-upgrades (0.82.8) ...
Removing ubuntu-minimal (1.327) ...
Removing apt-utils (1.0.9.2ubuntu2) ...
Removing software-center (13.10-0ubuntu4.1) ...
Removing ubuntu-extras-keyring (2010.09.27) ...
OK
Removing apt (1.0.9.2ubuntu2) ...
Processing triggers for man-db (2.7.0.2-2) ...
Processing triggers for gconf2 (3.2.6-2ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for shared-mime-info (1.2-0ubuntu3) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for bamfdaemon (0.5.1+14.10.20140925-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.55ubuntu1) ...
Processing triggers for dbus (1.8.8-1ubuntu2) ...
Processing triggers for libc-bin (2.19-10ubuntu2) ...

e será avisado que você está prestes a fazer algo muito destrutivo. Devo dizer ... a lista de pacotes parece horrível para uma economia de espaço inferior a 6000kb: D

Ele termina, mas não há como voltar usando o "apt-get". O Ubuntu Software Center não funcionará mais e você precisará usar o "dpkg" para reinstalar um gerenciador de pacotes (e manualmente também precisará instalar todas as dependências).

Rinzwind
fonte
12
precisaria usar o "dpkg" para reinstalar um gerenciador de pacotes (e manualmente também precisará instalar todas as dependências) , portanto, em outras palavras,sudo apt-get remember-what-2002-was-like
user1717828
Você não poderia inicializar em um Live CD, então chroote apt-get, como Arch faz?
Sparhawk 17/01
1
@ Sparhawk Não sabe ao certo o que está buscando; depois de fazer o chroot, você está na raiz do seu sistema normal e procuraria o apt-chegar lá, que você removeu. Eu acho que o apt-get (ou talvez seja o dpkg) permite especificar um diretório raiz alternativo, mas não consigo encontrar rapidamente como você faria isso.
um CVn
Nenhum dos pacotes removidos é particularmente IMO "assustador", exceto, é claro, por si próprio.
precisa saber é o seguinte
@ MichaelKjörling Eu estava pensando que você poderia executar o caminho manual para a apt-getinstalação no novo "root", mas esqueci que também precisaria de todos os arquivos de configuração / cache. Sua sugestão possível certamente seria mais limpa (se houver essa opção).
Sparhawk
12

Uma vez, quando eu executei o CoreUbuntu, instalei um pacote de buggy a partir da fonte, que ficou aptobsoleto apt. Na próxima vez em que corri apt autoremove, não olhei para a lista de softwares a serem removidos e aptestava na lista.

Imagine minha surpresa na próxima vez que digitei apt install <package-name>e recebi The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt.

Felizmente, por algum motivo, autoremovenão remover qualquer um dos apt's dependências então tudo que eu tinha que fazer era wget apt' s .debarquivo e reinstalação usando dpkg -i.


Conforme mostrado nas outras respostas, se você remover apt com apt , estará com mais problemas por causa das dependências que ele tenta resolver.

Eu acho interessante, mas é realmente o caso que (certamente para o Debian, e talvez até o Fedora / openSUSE até certo ponto?) Muitas distribuições modernas são definidas e construídas amplamente sobre a infraestrutura fornecida pelo gerenciador de pacotes de sua escolha.

gato
fonte
5
Aposto que a razão aptnão remover as dependências é que o pacote de buggy de ter instalado listados-los conforme necessário. Faz sentido se esse pacote foi concebido como um substituto.
Dmitry Grigoryev
5

Tecnicamente, o apt não pode remover o apt ... porque o apt não sabe como remover, instalar ou atualizar pacotes. As tarefas de instalação, remoção, atualização, configuração de pacotes são deixadas no dpkg. Embora você possa dizer ao apt para remover o pacote chamado "apt", o que ele faz é verificar as dependências reversas do pacote apt, observe esses pacotes e peça ao dpkg para removê-los. Qual é o que pode ser visto nas outras respostas .

Mesmo sem o apt, você pode usar o dpkg para instalar, remover ou atualizar pacotes, mas será mais difícil rastrear dependências e atualizações necessárias, que é a razão de ser do apt.

Braiam
fonte
Sim, o apt é realmente apenas uma interface mais simples para dpkg, e se você remover dpkg, será mesmo mais o Ubuntu?
gato
@cat Eu acho que ainda será ... desde que você não limpe o pacote ou remova o /var/lib/dpkg/statusarquivo. Você pode recuperar o dpkg se quiser também.
Braiam
1

Claro que você pode. O apt e o dpkg são pacotes, e devem ser atualizados por eles mesmos, portanto, existem provisões para remoção; caso contrário /var/lib/dpkg/info/dpkg.prerme /var/lib/dpkg/info/dpkg.postrmnão teria motivos para existir :)

Se você os removeu acidentalmente de uma maneira que o deixou sem o dpkg, ainda pode descompactar manualmente o arquivo .deb do dpkg, a menos que você também se livre do binutils, tar, gzip / bzip2.

--purgeem qualquer pacote envolvido com a cadeia de ferramentas apt, você pode ter problemas desagradáveis; difícil dizer o que possui certos arquivos /var/lib/dpkg. Se /var/lib/dpkg/statusfosse excluído e não houvesse backup atual, sim, o gerenciador de pacotes estaria além do reparo nesse sistema.

rackandboneman
fonte
-1

Eu juro que vi os aptbinários /usr/local/binem um sistema baseado no Ubuntu não faz muito tempo, mas eles não estão lá no meu atual sistema Ubuntu MATE 15.04 (eles estão /usr/bincom a maioria dos outros binários). Se estivesse /usr/local/bin, provavelmente não seria possível desinstalá-lo aptporque os arquivos /usr/local/bindevem ser ignorados pelo gerenciador de pacotes. Devo admitir que colocar apt(e dpkgtambém) abaixo /usr/local/binseria uma boa ideia.

Uma pergunta mais interessante é: o que acontece se você desinstalar dpkg? Com certeza, dpkgestá listado como um pacote por apt, mas não vou tentar desinstalá-lo agora (não tenho uma máquina virtual configurada no momento). Teoricamente, também se pode desinstalá-lo dpkg. Vou adivinhar que a única maneira de reinstalá-lo seria fazê-lo manualmente, e espero que ele pegue os arquivos de configuração existentes (para que você não precise informar manualmente o sistema novamente quais pacotes estão instalados) e informe que o pacote dpkgestá agora instalado novamente.


(Uma piada :) O equivalente a um usuário Debian é # rm -rf /is # apt-get purge ".*".

Micheal Johnson
fonte
Se algo proveniente de um pacote de distribuição oficial terminar em / usr / local / bin, registre um bug nesse pacote.
rackandboneman
O fato é que não estava vindo de um pacote; foi instalado separadamente do gerenciador de pacotes com o objetivo expresso de evitar os problemas "apt-get remove apt" e "apt-get remove dpkg". Eu acho que era o Linux Mint, que eu costumava usar como meu sistema principal.
Micheal Johnson