Я устанавливаю Cygwin на новую машину с локальных дисков, выпущенных в 2015 году. Я использую старый набор пакетов, потому что процесс утверждения новых файлов чрезвычайно обременителен. Папки пакета расположены в

C:\cygwinV2015install\http%3a%2f%2fcygwin.parentingamerica.com%2f\x86_64\release

Я начинаю установку, используя:

setup-x86_64.exe --no-admin

Исполняемый файл установки и папки с пакетами - единственные файлы, которые я сохранил с 2015 года.

Root Install Directory - C:\cygwin64 . Я выбрал установку для Just Me а не для All Users . Local Package Directory указан как C:\cygwinV2015install\http%3a%2f%2fcygwin.parentingamerica.com%2f .

На экране Select Packages я выбираю Curr , что означает Globally select the version that is currently considered the most stable. (RECOMMENDED) . Флажок для Hide obsolete packages включен.

Проблема заключается в том, что я не могу выбрать множество пакетов одновременно , используя Category по View

  • Если View is Category , единственное, что отображается No packages found , независимо от фильтра (по Default , Install , Reinstall , Uninstall)

  • Если View is Full , я вижу длинный список пакетов, где каждая запись в 1-м столбце (озаглавленная New) говорит Skip . Я могу нажать Skip одной строке за раз, и между версией пакета и Skip .

  • Если View is Pending , я вижу пакеты, которые были переключены с Skip в Full View

  • Если View Up To Date единственное показ Nothing to Install/Update

  • Если View Not Installed , я вижу то же самое, что и при View Full (что имеет смысл, поскольку ничего не установлено).

Я действительно не хочу работать за пределами Category View потому что я уверен, что что-то упущу. Чего мне не хватает в плане настройки, чтобы она работала как обычно? Я хочу использовать Category View и увидеть больше, чем No Packages found .

ЗАМЕЧАНИЕ: после экспериментов на другом компьютере кажется, что независимо от того, какой путь я укажу для Local Package Directory , пакеты отображаются в списке Select Packages разделе Category View . Это означает, что программа установки хранит путь пакетов в другом месте. Кто-нибудь знает где? Если я смогу получить доступ к этому параметру, я смогу заставить программу установки работать на новом компьютере должным образом.

ПЕРВОЕ ИСПЫТАННОЕ РЕШЕНИЕ: Благодаря Matzeri я проследовал за этой страницей, чтобы создать файл * .bat, в котором были указаны все пакеты:

setup-x86_64.exe --no-admin --local-package-dir C:\cygwinV2015install -P _autorebase,_autorebase,_update-info-dir,a2ps,...,zip,zlib0
 pause

Файл * .bat был создан на компьютере с установленным cygwin и выполнен на компьютере, на котором я хочу установить Cygwin. Я добавил --no-admin самостоятельно, потому что у меня нет прав администратора. Я поместил его в C:\cygwinV2015install , который также содержит зеркальную папку http%3a%2f%2fcygwin.parentingamerica.com%2f . Однако, когда я запускаю файл * .bat, он запускает тот же графический интерфейс установки, как если бы я непосредственно запустил setup-x86_64.exe . Панель « Select Packages не распознает какие-либо пакеты. Вот что показывает, в зависимости от View:

  • Full View: Nothing to Install/Update
  • Pending View: Nothing to Install/Update
  • Up To Dat View: Nothing to Install/Update
  • Not Installed: нечего устанавливать Nothing to Install/Update
  • Category View: No packages Found

Для Category View не имеет значения, буду ли я фильтровать по Default , Install , Reinstall или Uninstall .

В файле * .bat я также указал --local-package-dir C:\cygwinV2015install\http%%3a%%2f%%2fcygwin.parentingamerica.com%%2f с тем же результатом. (Двойные знаки «%» действуют как один «%» в файле * .bat).

Обратите внимание, что я удалил все файлы * .ini в поддереве с корнем в C:\cygwinV2015install . Текст в нем говорит, что они генерируются автоматически.

Есть ли что-то еще, что может привести к тому, что пакеты останутся нераспознанными?

НОВАЯ ИНФОРМАЦИЯ: Если я создаю новую папку c:\cygwinV2015install5 и помещаю в нее исполняемый файл установки, папку зеркала и файл * .bat, я могу запустить setup-x86_64.exe --no-admin и посмотреть (пропущено) пакеты в Full View - если в качестве зеркальной папки указана --local-package-dir . не c:\cygwinV2015install5 . Тем не менее, существует слишком много пакетов для ручного переключения с Skip . Поскольку пакеты я вижу только при создании первичной папки c:\cygwinV2015install5 , это означает, что setup хранит свои знания о пакетах в другом месте, и setup снова ищет пакеты только при создании нового локального каталога пакетов. Я попытался воспользоваться этим, используя файл * .bat в новой папке c:\cygwinV2015install6 , но, увы, не повезло. Тем не менее получите те же результаты, что и FIRST ATTEMPTED SOLUTION выше. Обратите внимание , что я добавил --local-install опцию в * .bat файл, и я также пытался --no-verify нет разницы.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Я начинаю подозревать следующий режим отказа:

  • setup распознает пакеты только тогда, когда к локальному каталогу пакетов обращаются через графический интерфейс setup , НЕ, если это указано с помощью параметра командной строки --local-package-dir

  • Доказательством этого является то, что список « Select Packages пуст, независимо от того, указываю ли я локальный каталог пакетов как c:\cygwinV2015install* или c:\cygwinV2015install*\http%%3a%%2f%%2fcygwin.parentingamerica.com%%2f (звездочка - это любое целое число, гарантирующее, что я работаю с целым каталогом)

  • В тот момент я просматриваю в локальный каталог пакета с помощью графического интерфейса, я могу видеть пакеты в Full View но не в Category View

  • Однако я подозреваю, что при этом я теряю все спецификации пакета, указанные с помощью опции -P в файле * .bat.

  • Доказательством этого является то, что все пакеты отображаются как Skip (строго говоря, однако, я не уверен, если бы они отображались в противном случае, если бы они были правильно видны при setup без просмотра через GUI)

  • Есть слишком много пакетов , чтобы переключаться от Skip вручную

  • С иерархическим организом из Category View может быть каким - то шанс выбора пакетов высокого уровня и с функцией обеспечения зависимости выбора пакетов низкого уровня и библиотеки

Если я прав, то проблему можно решить, установив исполняемый файл установки для распознавания пакетов на основе --local-package-dir , без необходимости просматривать папку в графическом интерфейсе. Если это не удастся, мне понадобится способ массового переключения выбора Skip для пакетов.

Главная тайна топала меня почему пакеты не признается, и когда они, почему они не отображаются в Category View в типичном иерархическом виде. Требуется ли какой-либо файл конфигурации в одной из папок для корректной работы этой функции?

1 ответ1

1

Я нашел проблему и решение. Исполняемый файл программы установки использует файл .../http%3a%2f%2fcygwin.parentingamerica.com%2f/x86_64/setup‌​.ini который создается при загрузке файлов пакета. Мне повезло, что у меня все еще был этот файл на компьютере, на котором создавались установочные компакт-диски. Поместив этот файл в указанный выше путь на целевом компьютере, можно было запустить нормально выполняемый установочный файл и повторить установку cygwin на исходном компьютере. Мне не нужно было создавать или запускать любые пользовательские * .bat файлы.

Просто имейте в виду, что если вы объединили все пакеты в один (или два) zip-файлы, встроенная в Windows 7 обработка больших zip-файлов будет глючной и приведет к повреждению файлов (я не уверен, что это сжатие или извлечение). Используйте WinZip явно, чтобы извлечь различные папки пакета. Это может сэкономить вам как минимум несколько дней на устранение неполадок. Несмотря на то, что я знал об этой ошибке Windows из прошлых лет, я не ожидал, что она будет существовать по сей день, и, следовательно, не стал ее искать. Ошибка особенно коварна, потому что нет никаких признаков того, что файлы повреждены. Они могут оказаться нулевой длины или меньше, чем они должны быть.

Те, кто сталкивается с этой проблемой, сразу не узнают, что файлы имеют неправильный размер. Я видел сообщения об установке Cygwin об отсутствующих DLL. Однако неправильный размер файла очень четко задокументирован в c:/cygwin64/var/log/setup.log.full. Записывается конкретный путь, а также, какой размер должен быть в соответствии с файлом * .ini, и, наоборот, какой размер на диске. К сожалению, setup.log.full создается только в конце процесса установки cygwin.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .