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 / 1372449
Accepted
N0rbert
N0rbert
Asked: 2021-10-30 13:56:44 +0800 CST2021-10-30 13:56:44 +0800 CST 2021-10-30 13:56:44 +0800 CST

As versões modernas do Meld não podem comparar a pasta local com a pasta remota (em /run/user/1000/gvfs/) - podemos corrigi-lo?

  • 772

Quando uso o Meld 3.20.4-1 no Ubuntu MATE 21.10, não consigo comparar pastas locais e remotas usando as etapas abaixo:

  1. Conecte-se a algum compartilhamento com o Caja - pressione Ctrl+ L, digite sftp://[email protected]na barra de endereços para montar a pasta/run/user/1000/gvfs/sftp:host=hostname.local,user=user/

  2. Abra o terminal e execute o Meld a partir dele para comparar o par de pastas:

    meld /run/user/1000/gvfs/sftp:host=hostname.local,user=user/home/user/Desktop ~/Desktop
    

Como resultado eu recebo

$ meld /run/user/1000/gvfs/sftp:host=hostname.local,user=user/home/user/Desktop ~/Desktop
Usage:
 meld Start with an empty window
 meld <file|folder> Start a version control comparison
 meld <file> <file> [<file>] Start a 2- or 3-way file comparison
 meld <folder> <folder> [<folder>] Start a 2- or 3-way folder comparison

Error: remote folder “/run/user/1000/gvfs/sftp:host=hostname.local,user=user/home/user/Desktop” not supported

Podemos fazer algo com esse problema no nível do usuário?

mount
  • 2 2 respostas
  • 400 Views

2 respostas

  • Voted
  1. Best Answer
    N0rbert
    2021-10-30T13:56:44+08:002021-10-30T13:56:44+08:00

    Realmente essa comparação está quebrada desde 20.04 LTS , então precisamos esperar pela correção upstream .

    A solução temporária é usar SSHFS da seguinte forma:

    1. Instale o sshfspacote por

      sudo apt-get install sshfs
      
    2. Criar ponto de montagem temporário para localização remota

      mkdir ~/sshfs
      sshfs [email protected]:/home/user/Desktop ~/sshfs
      
    3. Compare a pasta local com a remota usando a mesma versão do Meld

      meld ~/sshfs ~/Desktop
      

      Faça alguma sincronização.

    4. Desmonte o local remoto e, opcionalmente, remova o ponto de montagem

      umount ~/sshfs
      # rmdir ~/sshfs
      
    • 0
  2. Evi1M4chine
    2022-04-23T06:19:40+08:002022-04-23T06:19:40+08:00

    A solução alternativa por N0rbert realmente não funciona. Como o Meld usa o GIO do Gnome, que o detecta como um “sistema de arquivos remoto” de qualquer maneira. Uma comparação básica pode funcionar, mas você terá problemas assim que tentar realmente mesclar as coisas. Como excluir um diretório.

    E se você forçar, corrigindo a detecção do Meld, como eu fiz para este teste, ele pede ao GIO para excluir o diretório, e o GIO falha porque “o diretório não está vazio”. Em outras palavras, a função delete aparentemente só funciona recursivamente para sistemas de arquivos locais. O que é insano, já que o VFS do Linux, por padrão, não faz essa distinção entre implementações de sistema de arquivos e esse é o ponto principal.

    Então, aparentemente, o GIO não usa essas interfaces VFS padrão do Linux que já teriam funcionado, mas sua própria solução defeituosa e pelos padrões Linux / Unix (parcialmente em cima do VFS, mas piorando).
    Como um usuário antigo do Linux, posso dizer que isso se deve ao fato de ser executado por desenvolvedores que vieram do Windows e acham que tudo tem que funcionar como o Windows, porque eles são muito jovens ou se recusam a aprender as convenções básicas e ideias de Unix/Linux, e então estão condenados a reinventar o Unix… mal.
    (Mesma razão para os containers, a implementação do systemd [não a ideia geral, o que é bom], a implementação da interface de rede dos kernels, qualquer um pedindo “Linux On The Desktop”, a forma como o Steam é “implementado” no Linux [É apenas um Aplicativo do Windows dentro de uma instância personalizada do Wine, ignorando todas as convenções do Linux], etc.)

    O próprio Meld tem este comentário no código-fonte:

    # TODO: Deleting remote folders involves reimplementing
    # shutil.rmtree for gio, and then calling
    # self.recursively_update().
    

    (Ou… você sabe… apenas use a interface padrão VFS/POSIX como pessoas normais.)

    Portanto, a única solução aqui é usar as ferramentas apropriadas do Linux ou ir até o fim e executar o Windows/MacOS em vez de uma ferramenta em execução no primeiro que deseja ser o último. ;)

    Eu recomendaria o Kdiff3 , mas isso tem seu próprio problema, pois não consegue copiar novos arquivos do local para o remoto, pelo menos no meu caso de comparação de diretórios com sshfs do KDEConnect em um telefone Android.

    Fora isso, rsynce dirdiff( vimdiffou vimcom a DirDiffextensão) et al seriam soluções nativas e mais rápidas, mas é claro que não são tão confortáveis ​​para a fusão manual de diretórios com eles, e é por isso que pessoas como eu são forçadas a usar Meld/Kdiff3 .


    ADENDO: Aqui está o bug principal:

    Permitir a remoção recursiva do diretório (#2258) · Problemas · GNOME / GLib · GitLab

    Um problema adicional que isso mostra é que, se o sistema de arquivos remoto tiver um "Lixeira", g_file_trashpoderia ser usado, pois aparentemente isso funciona recursivamente, mesmo remotamente. … Ainda não tenho ideia de por que eles excluíram ativamente uma implementação de exclusões recursivas, embora, do ponto de vista do espaço do usuário, não haja literalmente nenhuma diferença.

    • 0

relate perguntas

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