AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1475499
Accepted
João Pimentel Ferreira
João Pimentel Ferreira
Asked: 2023-06-30 21:36:05 +0800 CST2023-06-30 21:36:05 +0800 CST 2023-06-30 21:36:05 +0800 CST

O APT purga os pacotes disponíveis mesmo quando algum pacote não está disponível

  • 772

Eu tenho uma ação do github com uma etapa para liberar espaço e possui um comando apt purge seguido por centenas de pacotes. Mas se um pacote não estiver disponível, todo o processo falhará

Se você apt limpar ou remover uma lista enorme de vários pacotes de uma vez, como forçar a limpeza dos pacotes instalados existentes?

Exemplo:

sudo apt purge pack1 pack2 pack3 -y

se pack1 e pack2 existirem, mas pack3 não existir, o processo falhará

E: Unable to locate package 'pack3'

e pack1 e pack2 não são eliminados.

Como forçar a remoção de pack1 e pack2 mesmo que um dos restantes não exista?

apt
  • 3 3 respostas
  • 97 Views

3 respostas

  • Voted
  1. Best Answer
    Raffa
    2023-06-30T23:13:00+08:002023-06-30T23:13:00+08:00

    Ao ponto

    Agulhas para dizer que:

    1. Limpar centenas de pacotes instalados de uma só vez é uma má ideia, independentemente do motivo.

    2. Usar a opção do APT -ypara responder automaticamente sim é uma ideia ainda pior.

    Você provavelmente sabe disso, mas eu tive que anotar ... Vamos à sua pergunta:

    AFAIK APT não pode fazer isso ... O APT faz mais do que as ações básicas de apenas tentar instalar, remover, purgar ... etc. ... Ele resolve dependências, evita e avisa sobre conflitos, substitui alguns pacotes removidos .. ... Assim, ele tem que analisar/verificar todos os pacotes passados ​​em seu banco de dados de pacotes disponíveis em cache antes de começar a cometer qualquer ação especificada pelo usuário neles.

    Portanto, sua melhor aposta nessa situação é passar esses pacotes um de cada vez para o APT usando xargscomo:

    echo "pack1 pack2 pack3" | xargs -n 1 apt purge
    

    ou usando um loop de shell como:

    for p in "pack1" "pack2" "pack3"
      do
        apt purge "$p"
        done
    

    ou soluções semelhantes.

    Por outro lado, se usar o APT não é obrigatório para você, então dpkgdeve fazer o trabalho sem sair desses pacotes " Unable to locate packages" e pode ser usado assim:

    dpkg --purge pack1 pack2 pack3
    

    Ao redor do ponto

    Demonstração:

    $ apt -s purge -y vlc golang
    NOTE: This is only a simulation!
          apt needs root privileges for real execution.
          Keep also in mind that locking is deactivated,
          so don't depend on the relevance to the real current situation!
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    Package 'golang' is not installed, so not removed
    The following packages will be REMOVED:
      vlc*
    0 to upgrade, 0 to newly install, 1 to remove and 5 not to upgrade.
    Purg vlc [3.0.16-1build7]
    

    Observe as três etapas antes de cometer a purgeação:

    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    

    Estes são auto-explicativos e, embora o pacote golangnão esteja instalado:

    Package 'golang' is not installed, ...
    

    Mas, o APT pode localizá-lo em sua lista de pacotes em cache e, portanto, pode tomar uma decisão a respeito:

    ... so not removed 
    

    e:

    The following packages will be REMOVED:
      vlc*
    ...
    

    Isso é normal e o APT continuará removendo o(s) pacote(s) instalado(s)

    Mas no caso de um pacote que o APT não consegue localizar em suas listas de pacotes em cache:

    $ apt -s purge -y vlc non-locatable-package
    NOTE: This is only a simulation!
          apt needs root privileges for real execution.
          Keep also in mind that locking is deactivated,
          so don't depend on the relevance to the real current situation!
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    E: Unable to locate package non-locatable-package
    

    O APT não pode tomar a decisão e sai após imprimir um erro:

    E: Unable to locate package non-locatable-package
    

    Notícia importante:

    Como visto na demonstração acima, o APT verifica suas listas de pacotes em cache obtidas por meio da updateação e, portanto, uma lista de pacotes atualizada(s) é vital para corrigir a funcionalidade do APT e fazer purge/ removeou mesmo installações com uma lista de pacotes desatualizada(s) pode resultar em um resultado inesperado removendo pacotes indesejados ... Veja, por exemplo, apt-get install Firefox removido inesperadamente ... Portanto, certifique-se de que a lista de pacotes esteja atualizada executando:

    sudo apt update
    

    primeiro.

    • 2
  2. fku
    2023-07-01T17:27:07+08:002023-07-01T17:27:07+08:00

    O apt purgecomando falhará se algum dos pacotes especificados não existir. Isso ocorre porque apt purgeremove todos os arquivos associados a um pacote, incluindo arquivos de configuração. Se um pacote não existir, não haverá arquivos a serem removidos, portanto, o apt purgecomando falhará.

    Para forçar a limpeza de pacotes instalados existentes, mesmo que um dos pacotes não exista, você pode usar a --force-removeopção. Por exemplo, o seguinte comando limpará os pacotes pack1, pack2e pack3, mesmo que pack3não existam:

    sudo apt purge --force-remove pack1 pack2 pack3
    

    A --force-removeopção informa apt purgepara ignorar quaisquer erros que ocorram ao tentar remover um pacote que não existe. Isso significa que o apt purgecomando ainda será bem-sucedido, mesmo que um dos pacotes especificados não exista.

    Aqui está um detalhamento do comando:

    • sudo- Isso diz ao comando para ser executado como root.
    • apt purge- Este é o comando para limpar um pacote.
    • --force-remove- Esta opção informa apt purgepara ignorar quaisquer erros que ocorram ao tentar remover um pacote que não existe.
    • pack1 pack2 pack3- Estes são os pacotes que você deseja limpar.
    • -1
  3. mmp
    2023-07-01T18:03:29+08:002023-07-01T18:03:29+08:00

    Se você está enfrentando o problema em que todo o processo falha devido a um pacote ausente ao tentar limpar ou remover vários pacotes de uma vez, existe uma maneira de garantir a remoção dos pacotes instalados existentes sem ser prejudicado pela ausência de um único pacote.

    Para conseguir isso, você pode usar um comando bash chamado "apt-get --ignore-missing". Este comando permite continuar com o processo de remoção mesmo que alguns pacotes não sejam encontrados.

    Aqui está um exemplo de como você pode modificar sua etapa de ação do GitHub para incluir este comando:

    sudo apt-get --ignore-missing purge pack1 pack2 pack3 -y
    

    Ao usar o sinalizador "--ignore-missing", o apt-get desconsiderará todos os pacotes que não puder encontrar e prosseguirá com a eliminação dos pacotes restantes. Isso garante que pack1 e pack2, se presentes, ainda serão eliminados, mesmo que pack3 não seja encontrado.

    Dessa forma, você pode limpar com confiança os pacotes instalados existentes sem que o processo falhe devido à ausência de um único pacote.

    Espero que esta solução ajude você a alcançar o resultado desejado em sua ação GitHub!

    • -1

relate perguntas

  • Como posso ver todas as versões de um pacote que estão disponíveis no arquivo?

  • Como os PPAs podem ser removidos?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve