Я только что скачал и установил Cygwin на Windows 7. Кажется, он успешно установился, с папкой, C:\Cygwin64
содержащей 1,2 ГБ данных, когда папка установки, из которой я его установил, была чуть меньше 300 МБ. Однако, при нажатии на ярлык на рабочем столе открывается mintty.exe
, который затем отображает ошибку:
Не удалось запустить '/bin/bash': такого файла или каталога нет
И это несмотря на то, что я установил все базовые файлы, которые bash
предположительно были частью - и даже если бы это не было так, установщик позже показал это как обязательный пакет и установил его сам. Так что кто-нибудь знает, что здесь происходит? Это, возможно, моя четвертая попытка за последний день успешно установить Cygwin; я начинаю думать, что мне просто не суждено это сделать.
решение1
Мне удалось решить эту проблему с помощью еще одной установки - на этот раз я выбрал загрузку и установку из сети (вариант 1 в установщике), вместо того, чтобы загружать файлы по отдельности и устанавливать из локально сохраненной папки (варианты 2 и 3). Я не могу быть уверен, почему выбор этих параметров привел к неполной установке, но теперь я могу работать bash
без ошибок.
решение2
У меня возникла та же проблема после стандартной установки прямо из Интернета.
Я решил эту проблему, перейдя в «C:\cygwin64\bin», скопировав «ash.exe» и переименовав копию в «bash.exe».
(Я попробовал это по чистой случайности, просто потому что bash отсутствовал, и я нашел этот зловещий файл ash)
решение3
Проблема
Если хотите, можете перейти к двум решениям, особенно ко второму, которое сработало у меня.
Я только что столкнулся с этой проблемой после восстановления поврежденной части моего компьютера (после того, как каталог System32
был поврежден - фу!). Подобное уже случалось раньше (из-за других обстоятельств), когда у меня все еще был каталог C:\cygwin64
с папками и, по крайней мере, некоторые другие файлы.
Раньше я всегда мог просто переустановить, запустив setup-x86_64.exe
(я вставил свой в C:\cygwin64
). После этого bash
я бы вернулся. Я всегда запускаю это с помощью опции онлайн, https://mirrors.kernel.org
но даже если я выбираю только bash
в графическом интерфейсе установки, я сталкивался с этой проблемой, хотя моя ошибка появлялась как
/bin/bash: Exit 126.
Failed to run '/bin/bash': No such file or directory
Проверка моего bin
каталога показала, что, действительно, bash
его не было. Из командной строки ( 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>
Обратите внимание, что я обычно запускаю Cygwin одним из следующих способов:
- с помощью ярлыка на рабочем столе, что эквивалентно запуску следующей команды из командной строки (Windows)
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -
или
- Использование
Cygwin.bat
файла. Сначала я покажу содержимое файла, а затем результаты моих попыток его запустить.
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>
Первая (неудачная попытка) решения
Нахождениеbash-<version>.tar.xz
Я уже скачивал раньше с https://mirrors.kernel.org
, поэтому у меня была папка,
C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f
Покопавшись немного дальше, я нашел tarball под bash-4.4.12-3.tar.xz
названием
C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f\x86_64\release\bash
прохождение полного пути
C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f\x86_64\release\bash\bash-4.4.12-3.tar.xz
Я в итоге открыл это с помощью7zip
, хотя вы могли бы использоватьWinRAR
или что-то еще подобное.
(Я немного порассуждал о том, что tar
теперь доступно в Windows, но его использование не помогло извлечь данные. Вы можете увидеть тирадуздесьесли вы хотите узнать больше о tar
и curl
нативно в Windows 10) Я скопировал/вставил tarball на рабочий стол, затем щелкнул правой кнопкой мыши и выбрал «Раскрыть в `» дважды, чтобы увидеть, что было внутри. Я скопировал все это в
C:\Users\bballdave025\Desktop\bash-4.4.12-3\
в этот момент я смог посмотреть, что было внутри.Затем я сравнил расположение файлов внутри с расположением файлов на машине, где у меня работал Cygwin.Мне удалось найти все файлы, после чего я решил просто переместить их в соответствующие места.
Для некоторых других людей, возможно, приехавших изgit bash
(нравитьсяэтот постер)(архив) или mingw
/ msys2
(какэтот постер)(архив), обратите внимание, что моя ошибка говорит о том, что система не может найти /bin/bash
- это отличается от того, как могут ссылаться ваши ошибки /usr/bin/bash
, поэтому будут некоторые различия.
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> /
/
Да, я надеюсь вернуться, но мне хочется сохранить часть этого ответа.
Второе решение
У меня такое было с подругой. Администратор создал ее учетную запись и оставил в ней "свои крючки", то есть он владел каким-то правом собственности. Поскольку этот администратор больше не работал там, где работали мы, нам пришлось искать способ все исправить.
Сначала мы попытались удалить все, но всегда оставалось несколько файлов и папок, от которых мы не могли избавиться — они принадлежали тому администратору (который, кстати, очень хороший парень). Мы даже не могли удалить, если запускали удаление от имени администратора ( File Manager -> C -> Windows -> explorer.exe
, щелкните правой кнопкой мыши, затем «Запуск от имени администратора», перейдите в C:\cygwin64
каталог и попробуйте удалить... безрезультатно. )
Чтобы все наконец заработало, нам пришлось войти как администратор, чтобы изменить разрешения для базового каталога и всех других каталогов, после чего мы могли удалить каталог C:\cygwin
, создать его заново, поместить setup-86_64.exe
в новый cygwin64
каталог, а затем запустить установку. Выможетпопробуйте просто изменить права доступа для всего каталога, а затем переустановить bash
с помощью setup-x86_64.exe
графического интерфейса, но когда я попробовал это, а затем зашел в терминал Cygwin, я получил что-то вроде этого.
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.
Кстати, это также chmod -R u+w /
привело к множеству ошибок.Permission denied
ЕСЛИ У ВАС ЕСТЬ ФАЙЛЫ, КОТОРЫЕ НУЖНО ВОССТАНОВИТЬ, У ВАС, ВОЗМОЖНО, ВТОРОЙ ПО ВОЗМОЖНОСТИ ШАНС СДЕЛАТЬ ЭТО СЕЙЧАС.
Один из способов сделать удаление — следовать инструкциямэто приложение учебник(архивировано). Для работы от имени администратора вам понадобятся права CMD
администратора.
Вы также можете сделать это с помощью Windows Explorer, но вам, вероятно, понадобится запустить explorer как администратор. Я также пробовал менять разрешения таким образом, но безуспешно.
В меню «Тип» найдите cmd
, затем запустите от имени администратора. Смотрите скриншот ниже.
Взять на себя ответственность
takeown /r /d y /f C:\cygwin64
Обратите внимание, что два слова, составляющие команду, это «TAKE OWN», а не «TAKE DOWN». Также обратите внимание, что эта команда, вероятно, займет много времени, порядка 5-20 минут для моегопочти полная установка(архивировано).
Далее мы даём всем полные разрешения.
icacls C:\cygwin64 /t /grant Everyone:F
Мы могли бы еще раз попытаться вернуться и установить/переустановить bash
, но мне не нравятся последствия для безопасности того, что было сделано.
ЕСЛИ У ВАС ЕСТЬ ФАЙЛЫ ДЛЯ ВОССТАНОВЛЕНИЯ, У ВАС, ВОЗМОЖНО, ВТОРОЙ ПО ВОЗМОЖНОСТИ ШАНС СДЕЛАТЬ ЭТО СЕЙЧАС. Я имею в виду, что если вы устанавливаете или переустанавливаете bash
с помощью setup-x86_64
графического интерфейса на данном этапе, или даже если вы просто используете проводник Windows, это ваш лучший шанс.
Я бы лучше просто удалил этот Cygwin и получил новую установку. ЕСЛИ ВЫ ПОПЫТАЛИСЬ ВОССТАНОВИТЬ КАКИЕ-ЛИБО ФАЙЛЫ, ТО МОЖЕТЕ, продолжайте и выполните следующую команду.
rmdir /s /q C:\cygwin64
После этого удаления и перед повторной установкой убедитесь, что вы используете
Windows+ Rи затем regedit
, затем удалите все в Software\Cygwin
папке в HKEY_LOCAL_MACHINE
и HKEY-CURRENT-USER
.
решение4
Запустите Cygwin:настройка-x86_64.exe
Выбирать:Скачать без установки
Это загрузит файлы терминала Cygwin в папку назначения.http://cygwin.mirror.constant.com/
пример:C:\папка назначения>http://cygwin.mirror.constant.com/>
БегатьсноваCygwin:настройка-x86_64.exe. Теперь выберите:Установить локальный каталог, нажмите Следующий, нажмитеСледующий, нажмитеСледующий, затемЗаканчивать.
Идти к:http://cygwin.mirror.constant.com/папка, в ней есть две подпапки:
ноарх x86_64
Открытьx86_64папка
Открытьвыпускатьпапка
ОткрытьБашпапка (есть сжатый файл, пример: **bash-4.4.12-
файл tar.xz**
Извлеките сжатый файл bash, и появятся две папки (и т. д.иуср).
Открытьи т. д.папку и копироватьbash.shфайл и вставьте его вC:\cygwin64\binпапка