Libsass: facepalm: la instalación falla porque $ (PREFIX) / lib ya existe

Creado en 12 nov. 2018  ·  13Comentarios  ·  Fuente: sass/libsass

la instalación falla porque $ (PREFIX) / lib ya existe

[stephan<strong i="6">@host</strong>:~/cvs/libsass]$ m install PREFIX=$HOME
mkdir /home/stephan/lib
mkdir: cannot create directory ‘/home/stephan/lib’: File exists
Makefile:263: recipe for target '/home/stephan/lib' failed
make: *** [/home/stephan/lib] Error 1

La solución es trivial: use mkdir -p lugar de mkdir .

Esto es lo mismo que el # 1992, pero ese ticket está inexplicablemente cerrado.

PD: al intentar usar la compilación generada por autotools, ejecutando autoconf para convertir configure.ac en configure , el ./configure resultante falla porque:

[stephan<strong i="18">@host</strong>:~/cvs/libsass]$ ./configure --prefix=$HOME
configure: error: cannot find install-sh, install.sh, or shtool in script "."/script

Por lo tanto, estoy usando el archivo MAKE que está registrado en el árbol, en lugar del generado por autotools (también conocido como GNU "Auto, my ass!" Tools).

Todos 13 comentarios

El uso de mkdir ha aparecido varias veces y ha sido rechazado porque no es
portátil. Estamos abiertos a soluciones portátiles.

El lunes 12 de noviembre de 2018, a las 6:55 pm, Stephan Beal < [email protected] escribió:

la instalación falla porque $ (PREFIX) / lib ya existe

[ stephan @ host : ~ / cvs / libsass] $ m instalar PREFIX = $ HOME
mkdir / inicio / stephan / lib
mkdir: no se puede crear el directorio '/ home / stephan / lib': el archivo existe
Makefile: 263 : la receta para el destino '/ home / stephan / lib' falló
make: * [/ home / stephan / lib] Error 1

La solución es trivial: use mkdir -p en lugar de mkdir.

Esto es lo mismo que # 1992 https://github.com/sass/libsass/issues/1992 ,
pero ese boleto está inexplicablemente cerrado.

PD: al intentar usar la compilación generada por autotools, ejecutando autoconf
para convertir configure.ac para configurar, el ./configure resultante falla
porque:

[ stephan @ host : ~ / cvs / libsass] $ ./configure --prefix = $ HOME
configure: error: no se puede encontrar install-sh, install.sh o shtool en el script "." / script

Por lo tanto, estoy usando el archivo MAKE que está registrado en el árbol, en lugar de
el generado por autotools (también conocido como GNU "Auto, my ass!" Tools).

-
Estás recibiendo esto porque estás suscrito a este hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/sass/libsass/issues/2727 , o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAjZWC46FJREYZk3iPIdWpGiuKuKlkJ4ks5uuSlkgaJpZM4YZIEz
.

Ciertamente, mkdir -p es más portátil que simplemente no instalarlo en ninguna plataforma.

Aquí hay una solución portátil, extraída del manual de autotools:

Desde el pago de libsass:

autoreconf --install
...
configure.ac:15: installing 'script/install-sh'
...
[stephan<strong i="7">@host</strong>:~/cvs/libsass]$ l ./script/install-sh
-rwxr-xr-x 1 stephan stephan 15155 Nov 12 10:07 ./script/install-sh

Ese script de instalación es lo más portátil posible. (Simplemente deseche todo el resultado de autoreconf aparte de ese archivo, luego regístrelo).

Curiosamente, usa mkdir -p (que aparentemente está especificado por POSIX mkdir), pero también soluciona varios problemas de portabilidad.

Portabilidad a propósito: el código fuente usa C ++ 0x, lo que significa que se está compilando en una plataforma relativamente reciente (menos de 10 años). Apostaría mi testículo izquierdo a que todas estas plataformas son compatibles con mkdir -p .

Todo ha sido explicado en detalle varias veces en todos los anteriores.
cuestiones cerradas. Consideraremos un PR que aborde las preocupaciones que tienen
se ha planteado anteriormente.

El lunes 12 de noviembre de 2018, a las 8:13 pm, Stephan Beal < [email protected] escribió:

Portabilidad a propósito: el código fuente usa C ++ 0x, lo que significa que es
compilando en una plataforma relativamente reciente (menos de 10 años). apostaría
mi testículo izquierdo que todas estas plataformas admiten mkdir -p.

-
Estás recibiendo esto porque hiciste un comentario.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/sass/libsass/issues/2727#issuecomment-437808279 , o silenciar
la amenaza
https://github.com/notifications/unsubscribe-auth/AAjZWDztL9XVhyClKwxTr7QVoEu2Oie3ks5uuTvQgaJpZM4YZIEz
.

@xzyfer ¿Puede vincular al problema cerrado? # 1992 no lo discute.

Me gustaría leer la discusión para comprender las afirmaciones de no portabilidad, porque el soporte de mkdir -p es un requisito de POSIX: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/mkdir.html

¿Qué limitación percibida _no_ se aborda utilizando el script de instalación generado por autoconf (demostrado 4 comentarios desde aquí)? Este proyecto usa autotools y, por lo tanto, tiene una portabilidad limitada a las plataformas que admite el conjunto de herramientas. El uso del script de instalación autotool's es, por lo tanto, la solución más natural y portátil para todas las plataformas en las que se puede construir el proyecto utilizando los archivos MAKE proporcionados.

@sgbeal Si bien todavía no puedo encontrar el problema, mirando más a fondo el Makefile, parece que es compatible con Windows. En Windows, mkdir es un alias de md , que no admite -p .

¿Quizás enviar un PR que establezca MKDIR diferente en Windows y no en Windows?

@glebm ¿qué es una "Windows"?

La compilación usa autotools y "realmente debería" usar install-sh que se distribuye con autotools. Si _ ese_ instalador no es lo suficientemente portátil, entonces usar las herramientas automáticas es una causa perdida.

@sgbeal El

"Windows" en este caso es cuando tiene, por ejemplo, gcc y gmake pero lo está ejecutando desde CMD (a diferencia de, por ejemplo, Cygwin Bash o un entorno POSIX similar).

Independientemente, creo que mi PR # 2728 resuelve este problema, ya que con ese PR make ya no debería intentar crear directorios que ya existen.

@xzyfer ¡Gracias! Parece que adiviné bien que se trata específicamente de la compatibilidad con Windows. Enviado # 2728 que simplemente debería evitar que make intente crear directorios que ya existen.

@glebm mis más sinceras disculpas: 'lo que es un "Windows"' fue intencionado en broma (Windows no ha sido una cosa en mi hogar desde el último milenio), no como una pregunta honesta, y eso no tiene lugar en este foro.

¿Fue útil esta página
0 / 5 - 0 calificaciones