Хорошо, нашел и следовал инструкциям здесь: https://cygwin.com/package-server.html
Первая установка calm
через Cygwin's setup.exe
(для меня setup-x86_64.exe
):
Install calm 20200220-1
Install python36-setuptools 41.2.0-1 (automatically added)
Затем у меня есть:
$ which mksetupini
/usr/bin/mksetupini
Обратите внимание, у меня уже есть: /cygdrive/d/Downloads/cygwin_packages/http%3a%2f%2fcygwin.mirror.constant.com%2f/x86_64
где Cygwin хранит загруженные пакеты; в этом каталоге есть release
subdir и setup.ini
file.
Итак, теперь я могу создать каталог для своих пользовательских пакетов:
$ mkdir /cygdrive/d/Downloads/cygwin_packages/cygwin-custom
$ mkdir -p /cygdrive/d/Downloads/cygwin_packages/cygwin-custom/x86_64/release
Обратите внимание, что в папке с исходными файлами сборки я есть подпапка dist
, которая содержит упаковку:
$ ls -la [packagename]-[version]-1bl1.x86_64/dist/[packagename]/
total 2557
drwxr-xr-x 1 user None 0 Mar 21 18:26 .
drwxr-xr-x 1 user None 0 Mar 21 18:26 ..
-rw-r--r-- 1 user None 373 Mar 21 18:26 [packagename]-[version]-1bl1.hint
-rw-r--r-- 1 user None 177772 Mar 21 18:26 [packagename]-[version]-1bl1.tar.xz
-rw-r--r-- 1 user None 2430900 Mar 21 18:26 [packagename]-[version]-1bl1-src.tar.xz
drwxr-xr-x 1 user None 0 Mar 21 18:26 [packagename]-debuginfo
drwxr-xr-x 1 user None 0 Mar 21 18:26 lib[packagename]0
drwxr-xr-x 1 user None 0 Mar 21 18:26 lib[packagename]-devel
Я могу просто скопировать это в дочерний каталог arch / release cygwin-custom
, а затем изменить каталог на cygwin-custom
:
$ cp -a [packagename]-[version]-1bl1.x86_64/dist/[packagename] /cygdrive/d/Downloads/cygwin_packages/cygwin-custom/x86_64/release/
$ pushd /cygdrive/d/Downloads/cygwin_packages/cygwin-custom
Теперь обратите внимание, что если я просто позвоню mksetupini
, как на приведенной выше веб-странице, произойдет сбой:
$ mksetupini --arch x86_64 --inifile=x86_64/setup.ini --releasearea=.
mksetupini: package '[packagename]' version '[version]-1bl1' requires nonexistent or errored package 'cygwin'
mksetupini: package '[packagename]' version '[version]-1bl1' requires nonexistent or errored package 'libgcc1'
mksetupini: package '[packagename]' version '[version]-1bl1' requires nonexistent or errored package 'libreadline7'
...
... и файл setup.ini
не будет создан!
Тогда я подумал, что должен использовать символическую ссылку, как на приведенной выше веб-странице:
$ for ARCH in x86_64 noarch ; do
mkdir -p ${ARCH}/release
cd ${ARCH}/release
ln -s /cygdrive/d/Downloads/cygwin_packages/http%3a%2f%2fcygwin.mirror.constant.com%2f/${ARCH}/release/* .
cd ../..
done
$ mksetupini --arch x86_64 --inifile=x86_64/setup.ini --releasearea=.
mksetupini: no .hint files in ./noarch/release/adwaita-icon-theme but has files: adwaita-icon-theme-3.26.1-1.tar.xz
mksetupini: no .hint files in ./noarch/release/base-cygwin but has files: base-cygwin-3.8-1.tar.xz
mksetupini: no .hint files in ./noarch/release/base-files but has files: base-files-4.3-2.tar.xz
...
mksetupini: package '[packagename]' version '[version]-1bl1' requires nonexistent or errored package 'cygwin'
mksetupini: package '[packagename]' version '[version]-1bl1' requires nonexistent or errored package 'libgcc1'
mksetupini: package '[packagename]' version '[version]-1bl1' requires nonexistent or errored package 'libreadline7'
mksetupini: package '[packagename]' version '[version]-1bl1' depends nonexistent or errored package 'cygwin'
...
... и это тоже не создает setup.ini
.
Наконец я нашел https://github.com/cascent/neovim-cygwin/issues/7, в котором упоминается переключатель --okmissing required-package
- наконец, эта команда:
$ mksetupini --arch x86_64 --inifile=x86_64/setup.ini --releasearea=. --okmissing required-package
... в итоге создаст setup.ini
- которая будет содержать только наши пользовательские пакеты, поскольку они единственные, у которых есть файл .hint
(у меня нет файлов .hint
в каталоге http%3a%2f%2fcygwin.mirror.constant.com%2f
, куда cygwin обычно загружает пакеты ):
$ cat x86_64/setup.ini
# This file was automatically generated at 2020-03-21 19:42:00 CET.
#
# If you edit it, your edits will be discarded next time the file is
# generated.
#
# See https://sourceware.org/cygwin-apps/setup.ini.html for a description
# of the format.
release: cygwin
arch: x86_64
setup-timestamp: 1584816120
@ [packagename]
sdesc: "Blah blah ..."
...
Теперь запустите Cygwin setup.exe
, и когда появится экран выбора: «Настройка Cygwin - Выбрать тип установки»; здесь переключиться с «Установить из Inte rnet (...)» на «Установить из локального каталога»; далее> сохранить каталог Root прежним; Далее> Выбрать локальный каталог пакетов: я выбрал D:\Downloads\cygwin_packages\cygwin-custom
- Далее>: Выберите пакеты: Показать полный, затем там будет указано [имя_пакета] ... и его можно установить - и зависимости также разрешены:
Install [packagename] [version]-1bl1
Install lib[packagename]0 [version]-1bl1 (automatically added)
И, наконец, после установки я могу вызвать [packagename].exe
по имени непосредственно в оболочке Cygwin bash!
Не так уж плохо в процессе, но может немного вмешаться, если вы не можете найди нужную документацию ...