Desde hace unos dias en el trabajo debo editar ficheros situados en un servidor antiguo, en concreto la máquina corre una RedHat de 2002 con un Kernel viejuno atrasado unas cuantas versiones… y sin vim instalado.
Ya está, la hemos liado. ¿Como voy a trabajar bien con ficheros
remotos sin vim?
Si, lo sé, está vi, pero una vez acostumbrado a la buena vida (que
si macros, el modo visual, indentación, plugin aquí, autocompletado
allá…) aquello es, digamos, poco atractivo, sobre todo al
trabajar con html antiguo y susio generado con Frontpage, que si
no lo coloreas e indentas, no hay Dios que lea ná.
Tablas y bloques sin cerrar, atributos de estilo ad infinitum,
identación nula, elementos repetidos, frases cortadas a mitad de
párrafo del tipo
code-block::html
<p>Esto es un párrafo</p><p>cortado por la mitad</p>
<p>por un editor automático de html</p>
<strong>Yo te maldigo</strong>
Entonces que hago ¿Me bajo todos esos html y los subo continuamente via scp a cada edición? Que coñazo.
Una opción mucho mejor sería instalar vim… aunque sin privilegios de administrador, tendría que poner el runtime en el home. Y a ello fuí.
Se va uno a vim.org, se descarga el código de vim72 y hala a compilarlo:
code-block::bash
$ tar -zvjf vim72.tar.bz2
$ cd vim72
$ ./configure && make
Nah, ni para atrás, el configure
me echaba por tierra la
compilación quejándose de una versión antigua del gcc. Bueno, pues
lo intentamos con la 6.4, que para eso están todas las versiones
disponibles en la página.
code-block::bash
$ tar -xjvf vim64.tar.bz2
$ cd vim64
$ ./configure && make
Y vualá, aunque el configure decia que no a muchas cosas, supongo
que ninguna sería vital, pues compiló y acabé con un ejecutable en
vim64/src/vim
.
Añadimos el ejecutable al PATH en nuestro ~/.bashrc
:
code-block::bash
PATH:=${PATH}:/home/arl/vim64/src/vim
Recargamos el ficero .bashrc con:
code-block::bash
$ bash
Listo. Está todo de medio ganchete y no tiene ni la mitad de funcionalidades, pero oye… lo básico funciona.
Aún así no estaba contento. No me hayaba en plenitud. Quería editar
ese código con MI vim
, con MI .vimrc
, mis alias, mis
plugins y manías.
Y me dije, estaría bien poder montar el sistema de ficheros del servidor en el mio propio, y así editar los archivos como si estuviesen en local, con mis propias herramientas.
Dicho y Googleado, la maravilla se llama sshfs
y sirve para…
(¡TACHAN!) montar un sistema de ficheros remoto sobre ssh.
La sintaxis es:
code-block::bash
sshfs user@servidor:/ruta-a-montar carpeta
De manera que en mi sistema creo la carpeta servidor, y monto allí la ruta remota en la que tengo que trabajar. Así la tengo directamente en mi sistema y hago con los ficheros lo que me da la gana, que transparentemente por debajo se transmiten via ssh.
Ojo que hay que tener en mente que las operaciones con ficheros y directorios implican comunicación por red, y por ejemplo un grep recursivo puede tardar cierto tiempo ya que tiene que transmitir el contenido de TODO por la red. Para ese tipo de tareas sigo accediendo por el prompt ssh. También me resulta un poco confuso el modo en que se manejan los permisos, ya que el servidor web está basado en grupos, y esos grupos como no existen en mi sistema se simulan de una manera extraña.
Para desmontar podemos usar:
code-block::bash
fusermount -u carpeta
Y, como es un coñazo montar y desmontar todo el rato, nos marcamos unas funciones para nuestro .bashrc:
code-block::bash
function mservidor () { mkdir -p carpeta && sshfs user@servidor:/ruta-servidor carpeta }
y para desmontar:
code-block::bash
function uservidor () { fusermount -u carpeta && rmdir carpeta }
Totalmente recomendado, oigan, edito ficheros antiguos en un servidor antiguo más a gusto que un arbusto.