Acabo de descargar e instalar Cygwin en Windows 7. Parece que se instaló correctamente, con la C:\Cygwin64
carpeta que comprende 1,2 GB de datos cuando la carpeta de instalación desde la que lo instalé tenía poco menos de 300 MB. Sin embargo, al hacer clic en el acceso directo del escritorio se abre mintty.exe
, que luego muestra el error:
No se pudo ejecutar '/bin/bash': no existe dicho archivo o directorio
Esto a pesar de que instalé todos los archivos base, de los cuales bash
supuestamente formaba parte, e incluso si no lo fuera, el instalador lo mostró más tarde como un paquete requerido y lo instaló él mismo. ¿Alguien tiene alguna idea de lo que está pasando aquí? Este podría ser mi cuarto intento en el último día tratando de lograr que una instalación exitosa de Cygwin funcione; Estoy empezando a pensar que simplemente no estoy destinado a tenerlo.
Respuesta1
Logré solucionar esto con otra instalación más; esta vez opté por descargar e instalar desde la red (opción 1 en el instalador), en lugar de descargar los archivos por separado e instalarlos desde la carpeta almacenada localmente (opciones 2 y 3). No puedo estar seguro de por qué al seleccionar esas opciones la instalación estaba incompleta, pero ahora puedo ejecutarla bash
sin errores.
Respuesta2
Tuve el mismo problema después de una nueva instalación predeterminada directamente desde la web.
Lo resolví yendo a "C:\cygwin64\bin" y duplicando "ash.exe" y cambiando el nombre de la copia a "bash.exe".
(Estaba intentando esto por pura casualidad, solo porque faltaba bash y encontré este siniestro archivo ash)
Respuesta3
El problema
Si lo deseas, puedes saltar hacia abajo para ver las dos soluciones, especialmente la segunda, que funcionó para mí.
Me encontré con este problema después de recuperar una parte dañada de mi computadora (después de que el System32
directorio se corrompió, ¡puaj!). Este tipo de cosas ya habían sucedido antes (debido a otras circunstancias), donde todavía tenía el C:\cygwin64
directorio con las carpetas y al menos Algunos otros archivos todavía están allí.
Antes, siempre podía reinstalar simplemente ejecutando setup-x86_64.exe
(puse el mío en C:\cygwin64
). Después de eso, bash
volvería. Siempre ejecuto esto con la opción en línea, https://mirrors.kernel.org
pero incluso si solo selecciono bash
en la GUI de instalación, me encontré con este problema, aunque mi error apareció como
/bin/bash: Exit 126.
Failed to run '/bin/bash': No such file or directory
Revisar mi bin
directorio mostró que, efectivamente, bash
faltaba. Desde el símbolo del sistema ( CMD
)
C:\Windows\System32>C:\cygwin64\Cygwin
'bash' is not recognized as an internal or external command,
operable program or batch file.
C:\Windows\System32>dir C:\cygwin64\bin\bas*
Volume in drive C is ██████████
Volume Serial Number is ██████████
Directory of C:\cygwin64\bin
File Not Found
C:\cygwin64\bin>
Tenga en cuenta que normalmente ejecuto Cygwin mediante:
- usando el acceso directo del Escritorio, que es lo mismo que ejecutar lo siguiente desde el símbolo del sistema (Windows)
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -
o
- Usando el
Cygwin.bat
archivo. Primero mostraré el contenido del archivo y luego los resultados de mis intentos de ejecutarlo.
C:\Windows\System32>type C:\cygwin64\Cygwin.bat
@echo off
C:
chdir C:\cygwin64\bin
bash --login -i
C:\Windows\System32>C:\cygwin64\Cygwin
'bash' is not recognized as an internal or external command,
operable program or batch file.
C:\cygwin64\bin>
Primer (intento fallido de) solución
Hallazgobash-<version>.tar.xz
Lo había descargado antes de https://mirrors.kernel.org
, así que tenía una carpeta,
C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f
Hurgando un poco más, encontré un tarball bash-4.4.12-3.tar.xz
llamado
C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f\x86_64\release\bash
haciendo el camino completo
C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f\x86_64\release\bash\bash-4.4.12-3.tar.xz
Terminé abriendo esto con7zip
, aunque podrías usarWinRAR
o algo parecido.
(Me enfadé un poco sobre cómo tar
ahora está disponible en Windows, pero usarlo no funcionó para la extracción. Puedes ver el despotricaraquíSi desea obtener más información sobre Windows 10 tar
y curl
de forma nativa), copié y pegué el archivo tar en el escritorio, luego hice clic derecho y seleccioné 'Expandir a' dos veces para acceder a lo que había dentro. Copié todo eso en
C:\Users\bballdave025\Desktop\bash-4.4.12-3\
momento en el que pude mirar lo que había dentro.Luego comparé las ubicaciones de los archivos internos con las ubicaciones de los archivos en una máquina donde tenía a Cygwin trabajando.Pude encontrar todos los archivos y luego planeé simplemente moverlos a sus posiciones apropiadas.
Para algunas otras personas, tal vez algunas provenientes degit bash
(comoeste cartel)(archivado) o mingw
/ msys2
(comoeste cartel) (archivado), tenga en cuenta que mi error decía que el sistema no pudo encontrar /bin/bash
; es diferente de cómo sus errores podrían hacer referencia a /usr/bin/bash
, por lo que habrá algunas diferencias.
C:\Users\bballdave025\Desktop\bash-4.4.12-3>tree /a /f .
Folder PATH listing for volume ██████████ OS
Volume serial number is ██████████ ██████████
C:\USERS\BBALLDAVE025\DESKTOP\BASH-4.4.12-3
|
+---etc \ . On the working computer's version, I found
| \---postinstall }-' C:\cygwin64\etc\postinstall\bash.sh.done
| bash.sh / I'm going to move the file from where you
| see it to _my_ C:\cygwin64\etc\postinstall.sh
| Then I'll run it, and if the tests pass, I'll
| rename it to bash.sh.done . I'll do that after
| moving all the others.
|
\---usr
+---bin
| bash.exe \
| bashbug }--- I'll move these three files into
| sh.exe / _my_ C:\cygwin64\bin FIRST (1)
|
+---include
| \---bash \ . I'll move this bash
| <lots of *.h files> }--' directory and all its
| / constituent header (*.h)
| files to _my_ directory,
| C:\cygwin64\usr\include\
|
+---lib
| libbash.dll.a }- I'll move this one file to _my_
| / C:\cygwin64\lib\
|
|
| \
\---share \
+---doc :
| +---bash \
| | +---<lots of bash doc stuff> :
| | |
| \---Cygwin :
| bash.README | .-I'll put the
| _.-' _/ doc, info,
+---info / _-' locale, and
| bash.info.gz \_/' man directories
| --' in _my_
| / C:\cygdrive64\usr\share\
+---locale `--------...____ directory,
| +---<lots of locales which have the same > : which is
| | <structure underneath; the last locale> / where they
| | <(serving as an example) is below > : were in the
| \---zh_TW / working
| \---LC_MESSAGES / version.
| bash.mo /
| :
\---man /
\---man1 :
<lots of PROGRAM.gz files> /
/
Sí, espero volver, pero quiero obtener y guardar parte de esta respuesta.
Segunda solución
A un amigo le pasó esto. Un administrador había configurado su cuenta y había dejado "sus ganchos" en ella, lo que significa que tenía algún tipo de propiedad. Como ese administrador ya no trabajaba en el lugar donde nosotros lo hacíamos, tuvimos que encontrar una manera de arreglar todo.
Primero, intentamos eliminar todo, pero siempre había algunos archivos y carpetas de los que no podíamos deshacernos; eran propiedad de ese administrador (que, por cierto, es un tipo muy agradable). eliminar si ejecutamos el borrado como administrador ( File Manager -> C -> Windows -> explorer.exe
, clic derecho, luego 'Ejecutar como administrador', vamos al C:\cygwin64
directorio e intentamos eliminar... no dice. )
Para que finalmente todo funcionara, tuvimos que ingresar como administrador para cambiar los permisos en el directorio base y en todos los demás directorios, después de lo cual pudimos eliminar el C:\cygwin
directorio, volver a crearlo, colocar setup-86_64.exe
el nuevo cygwin64
directorio y luego ejecutar el configuración. TúpoderIntente simplemente cambiar los permisos para todo el directorio y luego reinstale bash
con la setup-x86_64.exe
GUI, pero cuando intenté eso y luego entré en la terminal Cygwin, obtuve cosas como esta.
bballdave025@MY_MACHINE ~
$ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
--2020-04-26 13:08:26-- https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.68.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.68.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13765 (13K) [text/plain]
apt-cyg: Permission denied
Cannot write to ‘apt-cyg’ (Permission denied).
bballdave025@MY_MACHINE ~
$ stat .
File: .
Size: 0 Blocks: 24 IO Block: ██████████ directory
Device: ██████████/██████████ Inode: ██████████ Links: 1
Access: (0575/dr-xrwxr-x) Uid: (██████████/ bballdave025) Gid: (██████████/Unknown+Group)
Access: 2020-03-25 06:44:06.256806800 █████
Modify: 2020-03-25 06:44:04.686424000 █████
Change: 2020-04-26 09:23:47.452255300 █████
Birth: 2019-12-26 12:34:40.017177300 █████
bballdave025@MY_MACHINE ~
$ stat /
File: /
Size: 0 Blocks: 4 IO Block: ██████████ directory
Device: ██████████/██████████ Inode: ██████████ Links: 1
Access: (0775/drwxrwxr-x) Uid: (██████████/ bballdave025) Gid: (██████████/Unknown+Group)
Access: 2020-04-26 09:34:23.227577100 █████
Modify: 2020-04-26 09:34:23.227577100 █████
Change: 2020-04-26 12:55:46.658249200 █████
Birth: 2019-06-25 06:49:31.485205900 █████
bballdave025@MY_MACHINE ~
$ chmod u+w .
chmod: changing permissions of '.': Permission denied
bballdave025@MY_MACHINE ~
$ # It's not going to be very useful like this.
Por cierto, también chmod -R u+w /
provocó muchos errores.Permission denied
SI TIENE ARCHIVOS QUE RECUPERAR, PROBABLEMENTE TENGA LA SEGUNDA MEJOR OPORTUNIDAD DE HACERLO AHORA.
Una forma de realizar la eliminación es seguir las instrucciones deeste tutorial de aplicaciones(archivado). Necesitará privilegios de administrador para ejecutarlo CMD
como administrador.
También puedes hacerlo con el Explorador de Windows, pero probablemente necesitarás ejecutar el Explorador como administrador. También intenté cambiar permisos de esta manera, pero no tuve suerte.
Desde el menú tipo, busque cmd
y luego ejecute como administrador. Vea la captura de pantalla a continuación.
Tomar posesión
takeown /r /d y /f C:\cygwin64
Observe que las dos palabras constituyentes del comando son "TOMAR PROPIO" y no "TOMAR". También tenga en cuenta que este comando probablemente llevará mucho tiempo, del orden de 5 a 20 minutos para miinstalación casi completa(archivado).
A continuación, les otorgaremos a todos permisos completos.
icacls C:\cygwin64 /t /grant Everyone:F
Podríamos, una vez más, intentar regresar e instalar/reinstalar bash
, pero no me gustan las implicaciones de seguridad de lo que se acaba de hacer.
SI TIENE ARCHIVOS QUE RECUPERAR, PROBABLEMENTE TENGA LA SEGUNDA MEJOR OPORTUNIDAD DE HACERLO AHORA. Quiero decir que, si instala o reinstala bash
usando la setup-x86_64
GUI en este momento, o incluso si simplemente usa el Explorador de archivos de Windows, esta es su mejor oportunidad.
Prefiero simplemente eliminar este Cygwin y realizar una nueva instalación. SI HA INTENTADO RECUPERAR ALGÚN ARCHIVO QUE PUEDA, continúe y ejecute el siguiente comando.
rmdir /s /q C:\cygwin64
Después de esta eliminación y antes de la reinstalación, asegúrese de utilizar
Windows+ Ry luego regedit
, luego elimina/borra todo lo que hay en la Software\Cygwin
carpeta en HKEY_LOCAL_MACHINE
y HKEY-CURRENT-USER
.
Respuesta4
Ejecute Cygwin:configuración-x86_64.exe
Seleccionar:Descargar sin instalar
Esto descargará los archivos de Cygwin Terminal en su carpeta de destino conhttp://cygwin.mirror.constant.com/
ejemplo:C:\carpeta de destino>http://cygwin.mirror.constant.com/>
Correrde nuevoCygwin:configuración-x86_64.exe. Ahora, seleccione:Instalar directorio local, haga clic Próximo, haga clicPróximo, haga clicPróximo, entoncesFinalizar.
Ir a:http://cygwin.mirror.constant.com/carpeta, hay dos subcarpetas:
noarca x86_64
Abiertox86_64carpeta
Abiertoliberarcarpeta
Abiertointentocarpeta (hay un archivo comprimido, ejemplo: **bash-4.4.12-
archivo tar.xz**
Extraiga el archivo bash comprimido y aparecerán dos carpetas (etc.yusr).
Abiertoetc.carpeta y copiarbash.sharchiva y pegaloC:\cygwin64\bincarpeta