Como permitir que o vinho acesse os compartilhamentos de rede?

1

Acabei de instalar o 14.04 do zero e fiz o MS Word funcionar graças ao vinho (1.7.17 do ppa).

O problema é que não consigo acessar os compartilhamentos de unidade de rede por meio do wine (estou em uma LAN do Office).

Com o antigo Ubuntu 11.10 eu acabei de abrir arquivos .doc no MS Word e editado, agora parece que o wine não pode acessar os compartilhamentos do samba que já estão montados no nautilus.

O problema parece estar relacionado a mudanças recentes no modo de montar os compartilhamentos de rede do Ubuntu:

o diretório antigo: /home/*username*/.gvfs
foi substituído por: /run/user/1000/gvfs

Os nomes dos compartilhamentos montados não são legíveis do vinho (por isso, ele está tentando abrir a pasta diretamente da palavra MS)

    
por Francesco 24.04.2014 / 12:04

2 respostas

1

Eu encontrei uma solução alternativa.
Eu uso 13.04 mas acho que é o mesmo.
A solução é vincular a pasta GVFS a outro nome.

Crie este arquivo (gvfs-patch) em /usr/share/playonlinux/bash :

sudo -H gedit /usr/share/playonlinux/bash/gvfs-patch  
#!/bin/bash

LOGFILE=/dev/null

GVFS_HOME=/run/user/$USER/gvfs

# Create BASE folder
BASE=/tmp/POL-$USER-gvfs
if [ ! -d "$BASE" ]; then
   echo "Create BASE folder : $BASE" >> $LOGFILE
   rm -fr $BASE
   mkdir $BASE
else
   echo "BASE folder exists : $BASE" >> $LOGFILE
fi

# Clean old symbolic link
for SHARE in $(ls "$BASE"); do
   if [[ ! -e "$BASE/$SHARE" && -h "$BASE/$SHARE" ]]; then
      echo "Remove OLD share folder : $SHARE" >> /tmp/diego.txt
      rm -f "$BASE/$SHARE"
   else
      echo "Share folder valid : $SHARE" >> $LOGFILE
   fi
done

# Create symbolic link for ALL share
for SHARE in $(ls "$GVFS_HOME"); do
   NSHARE=$(echo $SHARE | sed 's/:/-/g')
   if [ ! -e "$BASE/$NSHARE" ]; then
      echo "Create share folder : $NSHARE" >> $LOGFILE
      ln -s "$GVFS_HOME/$SHARE" "$BASE/$NSHARE"
   else
      echo "Share folder valid : $BASE/$NSHARE" >> $LOGFILE
   fi
done

echo $1 | sed "s|$GVFS_HOME|$BASE|g" | sed 's/:/-/g'

Torne-o executável

sudo chmod +x /usr/share/playonlinux/bash/gvfs-patch  
sudo chown root.root /usr/share/playonlinux/bash/gvfs-patch  

Corrigir este arquivo: /usr/share/playonlinux/bash/document_reader

sudo -H gedit /usr/share/playonlinux/bash/document_reader

Na linha 43 (antes do caminho real = ...) adicione isto:

doc=$($PLAYONLINUX/bash/gvfs-patch "$doc")
    
por Diego Vicentini 23.05.2014 / 15:25
1

Com base na resposta de Diego, eu integrei isso em um invólucro de vinho que pode ser usado para instalações clássicas de vinho. Eu direcionei apenas a instância específica em que o wine é executado como "wine start", onde o caminho é o quarto argumento, mas isso pode ser expandido para percorrer todos os argumentos que testam os caminhos.

Também para mim, a pasta em /run/user não era meu nome de usuário do UID.

Crie este arquivo (wine) em /usr/local/bin

sudo -H gedit /usr/local/bin/wine

adicione estes conteúdos:

#!/bin/bash

LOGFILE=/dev/null
GVFS_HOME=/run/user/'id -u $USERID'/gvfs
BASE=/tmp/POL-$USER-gvfs

setupgvfstmp() {
  # Create BASE folder
  if [ ! -d "$BASE" ]; then
     echo "Create BASE folder : $BASE" >> $LOGFILE
     rm -fr $BASE
     mkdir $BASE
  else
     echo "BASE folder exists : $BASE" >> $LOGFILE
  fi

  # Clean old symbolic link
  for SHARE in $(ls "$BASE"); do
     if [[ ! -e "$BASE/$SHARE" && -h "$BASE/$SHARE" ]]; then
        echo "Remove OLD share folder : $SHARE" >> /tmp/diego.txt
        rm -f "$BASE/$SHARE"
     else
        echo "Share folder valid : $SHARE" >> $LOGFILE
     fi
  done

  # Create symbolic link for ALL share
  for SHARE in $(ls "$GVFS_HOME"); do
     NSHARE=$(echo $SHARE | sed 's/:/-/g')
     if [ ! -e "$BASE/$NSHARE" ]; then
        echo "Create share folder : $NSHARE" >> $LOGFILE
        ln -s "$GVFS_HOME/$SHARE" "$BASE/$NSHARE"
     else
        echo "Share folder valid : $BASE/$NSHARE" >> $LOGFILE
     fi
  done
}

if [ "$1" = "start" ] &&  [ -e "$4" ]; then
  # This only fiddles with stuff if the path is in $4, cos thats what my desktop shortcuts seem to do
  #env WINEPREFIX="/home/phil/.wine" wine start /ProgIDOpen Excel.Sheet.12 %f
  START=$1
  WHAT=$2
  FLAG=$3
  TARGET=$4
  shift 4
  echo "$TARGET" | grep $GVFS_HOME > /dev/null 2>&1
  if [ "$?" == 0 ]; then
    # Because gvfs sometimes hangs for me, only do this if the path is in gvfs
    setupgvfstmp
    TARGET='echo $TARGET | sed "s|$GVFS_HOME|$BASE|g" | sed 's/:/-/g''
  fi
  /usr/bin/wine "$START" "$WHAT" "$FLAG" "$TARGET" "$@"
else
  /usr/bin/wine "$@"
fi

Torne-o executável

sudo chmod +x /usr/local/bin/wine 

Verifique se /usr/local/bin está em seu $ PATH e vem antes de /usr/bin .

    
por Phil Hallows 10.12.2014 / 11:13