elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Duda con Makefile [Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con Makefile [Solucionado]  (Leído 4,542 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Duda con Makefile [Solucionado]
« en: 7 Agosto 2011, 10:24 am »

Estoy creando un Makefile, bueno, ya está todo hecho, funciona y todo, pero tengo un problema, necesito copiar un script a /usr/local/bin, por lo que necesita permisos para ejecutarse, ya saben:

su -
make install

Pero necesito que se copie al usuario actual, cuando hago:
sudo make install
se hace el proceso pero para root, no para el usuario actual...

Saludos, y gracias de antemano.

EDITO:

He pensado en un script configure que edite una linea del Makefile que apunte al usuario actual, pero bueno, no creo que sea la solución correcta, pero bueno, quizá funcione...

Saludos.


« Última modificación: 8 Agosto 2011, 23:36 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Duda con Makefile
« Respuesta #1 en: 7 Agosto 2011, 16:28 pm »

Pensalo en términos de shell scripting ^^
Es un mero condicional usando id ... te ilustro la "lógica" :

Código
  1. if [ $(id -u) != 0 ]; then
  2. echo "No soy root, deberia copiar todo a otro lado";
  3. else
  4. echo "Si soy root, deberia copiar al directorio base";
  5. fi
  6.  

Tendrías que tener una variable UID con el valor que retorne id y a eso, hacerle un ifeq, lee la documentación de gnu para ver cómo hacerlo con su formato de makefiles : http://www.gnu.org/software/automake/manual/make/Conditional-Syntax.html#Conditional-Syntax

Saludos.

P.S: la forma correcta es hacerlo al estilo autotools, con un parámetro o variable llamada "PREFIX" que indique el directorio "base", que puede ser /, /usr/local, /home/algunUsuario ... y sobre eso se copia la estructura de directorios

P.S 2 : no sé si vá a scripting o a programación general, pero acá, no corresponde el hilo ... veré a donde lo mando


« Última modificación: 7 Agosto 2011, 16:38 pm por vertex@Symphony » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Duda con Makefile
« Respuesta #2 en: 7 Agosto 2011, 18:46 pm »

Lo del IF me queda claro, pero bueno, invocando al script de esta manera:

sudo make install

siempre será root, necesito permisos para copiar a /usr/local/bin para que el script se pueda invocar desde donde sea.

Esto se está complicando, siendo que podría editar fácilmente la línea con un comando sed :p
Código:
#!/bin/bash
sed -i "s|^LIBDIR=\(.*\)|LIBDIR=$HOME/.pcmenu|g" ./Makefile
Pero claro, sé que no sería la forma adecuada de hacerlo...

Me interesa lo que pones en el primer "P.S" voy a ver como tratarlo, quizá viendo un ejemplo.

También estoy analizando los permisos que debe llevar el install...

Saludos y gracias.

« Última modificación: 7 Agosto 2011, 21:35 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Duda con Makefile [Solucionado]
« Respuesta #3 en: 8 Agosto 2011, 23:35 pm »

Bueno, al final hice lo siguiente:
Makefile, mandé la libreria al directorio /usr/local/lib y el script lo instale en /usr/local/bin, claro que para instalar se tiene que hacer:

Código:
su - # ó sudo ..... . . . . 
make [-B] install

Y parece que funciona.

Código
  1. LIBDIR=/usr/local/lib
  2. SH_PATH=/usr/local/bin
  3. VERSION=1.0
  4.  
  5. all: test
  6. @echo ""
  7. @echo "If no error, run make -B install as root"
  8.  
  9. help:
  10. @echo ""
  11. @echo "Usage: make [test|install|uninstall]"
  12. @echo ""
  13. @echo "Try make test. If everything is ok, run make -B install as root"
  14. @echo ""
  15. @echo "You can remove installation using make uninstall as root"
  16. @echo ""
  17.  
  18. install:
  19. @echo "Install..."
  20. install -m666 simple_curses.sh $(LIBDIR)/simple_curses.sh
  21. install -m655 paquetes.sh $(SH_PATH)/paquetes.sh || echo -e "Run as root"
  22. @echo ".... done"
  23.  
  24. uninstall:
  25. @echo "Removing library"
  26. rm -rf $(LIBDIR)/simple_curses.sh
  27. rm -rf $(SH_PATH)/paquetes.sh || echo -e "Run as root"
  28. @echo "done"
  29.  
  30. test:
  31. @echo "Check if dmenu,pacman is installed"
  32. which pacman &> /dev/null && echo -e "\033[32mpacman found\033[0m" || echo -e "\033[33mpacman ....... not found\033[0m"
  33. which dmenu &> /dev/null && echo -e "\033[32mdmenu found\033[0m" || echo -e "dmenu ....... not found";
  34. @echo "Done."
  35.  
  36. dist:
  37. mkdir ./pacmenu-$(VERSION)
  38. cp LICENSE README AUTHORS INSTALL simple_curses.sh paquetes.sh Makefile ./pacmenu-$(VERSION)
  39. tar cvfz pacmenu-$(VERSION).tar.gz ./pacmenu-$(VERSION)
  40. rm -rf ./pacmenu-$(VERSION)
  41. @echo "pacmenu-$(VERSION).tar.gz done"
  42.  
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Duda con Makefile [Solucionado]
« Respuesta #4 en: 10 Agosto 2011, 08:55 am »

¿ Era eso ? pensé que querías hacer distinto !  :xD
Igualmente chusmeate esto -> http://www.math.utpa.edu/lf/codes/toolsmanual.html
Después, no te conformes, y andate a cmake (acá toca leer varios CMakeLists.txt, la docu y la wiki), que autotools es un horror (no tanto como mantener Makefiles a mano)

Saludos.
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Duda con Makefile [Solucionado]
« Respuesta #5 en: 10 Agosto 2011, 08:59 am »

¿ Era eso ? pensé que querías hacer distinto !  :xD

Jaja, ¿que querías?, es un script en shell de 400 líneas, todo escrito en shell, solo quería saber lo básico.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA- Could not create a makefile (dev)
Programación C/C++
alexis33de 0 3,478 Último mensaje 22 Diciembre 2010, 01:31 am
por alexis33de
Aprediendo a usar makefile
Programación C/C++
andrewmetal93 1 2,284 Último mensaje 10 Mayo 2012, 03:58 am
por x64core
Problema con makefile en C
Programación General
Kefren 2 2,322 Último mensaje 23 Junio 2013, 17:35 pm
por Kefren
Problema al compilar por makefile
Programación C/C++
t4r0x 2 2,018 Último mensaje 16 Noviembre 2014, 15:06 pm
por Miky Gonzalez
Duda Makefile
Programación C/C++
ace99 4 2,865 Último mensaje 26 Marzo 2020, 22:32 pm
por ace99
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines