Autor
|
Tema: Duda con Makefile [Solucionado] (Leído 4,537 veces)
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
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
|
|
|
|
Foxy Rider
Desconectado
Mensajes: 2.407
Deprecated
|
Pensalo en términos de shell scripting ^^ Es un mero condicional usando id ... te ilustro la "lógica" : if [ $(id -u) != 0 ]; then echo "No soy root, deberia copiar todo a otro lado"; else echo "Si soy root, deberia copiar al directorio base"; fi
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-SyntaxSaludos. 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
Mensajes: 3.069
/^$/
|
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 #!/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
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
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: su - # ó sudo ..... . . . . make [-B] install
Y parece que funciona. LIBDIR=/usr/local/lib SH_PATH=/usr/local/bin VERSION=1.0 all: test @echo "" @echo "If no error, run make -B install as root" help: @echo "" @echo "Usage: make [test|install|uninstall]" @echo "" @echo "Try make test. If everything is ok, run make -B install as root" @echo "" @echo "You can remove installation using make uninstall as root" @echo "" install: @echo "Install..." install -m666 simple_curses.sh $(LIBDIR)/simple_curses.sh install -m655 paquetes.sh $(SH_PATH)/paquetes.sh || echo -e "Run as root" @echo ".... done" uninstall: @echo "Removing library" rm -rf $(LIBDIR)/simple_curses.sh rm -rf $(SH_PATH)/paquetes.sh || echo -e "Run as root" @echo "done" test: @echo "Check if dmenu,pacman is installed" which pacman &> /dev/null && echo -e "\033[32mpacman found\033[0m" || echo -e "\033[33mpacman ....... not found\033[0m" which dmenu &> /dev/null && echo -e "\033[32mdmenu found\033[0m" || echo -e "dmenu ....... not found"; @echo "Done." dist: mkdir ./pacmenu-$(VERSION) cp LICENSE README AUTHORS INSTALL simple_curses.sh paquetes.sh Makefile ./pacmenu-$(VERSION) tar cvfz pacmenu-$(VERSION).tar.gz ./pacmenu-$(VERSION) rm -rf ./pacmenu-$(VERSION) @echo "pacmenu-$(VERSION).tar.gz done"
|
|
|
En línea
|
|
|
|
Foxy Rider
Desconectado
Mensajes: 2.407
Deprecated
|
¿ Era eso ? pensé que querías hacer distinto ! Igualmente chusmeate esto -> http://www.math.utpa.edu/lf/codes/toolsmanual.htmlDespué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
Mensajes: 3.069
/^$/
|
¿ Era eso ? pensé que querías hacer distinto ! 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
AYUDA- Could not create a makefile (dev)
Programación C/C++
|
alexis33de
|
0
|
3,477
|
22 Diciembre 2010, 01:31 am
por alexis33de
|
|
|
Aprediendo a usar makefile
Programación C/C++
|
andrewmetal93
|
1
|
2,280
|
10 Mayo 2012, 03:58 am
por x64core
|
|
|
Problema con makefile en C
Programación General
|
Kefren
|
2
|
2,319
|
23 Junio 2013, 17:35 pm
por Kefren
|
|
|
Problema al compilar por makefile
Programación C/C++
|
t4r0x
|
2
|
2,013
|
16 Noviembre 2014, 15:06 pm
por Miky Gonzalez
|
|
|
Duda Makefile
Programación C/C++
|
ace99
|
4
|
2,850
|
26 Marzo 2020, 22:32 pm
por ace99
|
|