Как установить пакет, созданный с помощью Cygport, на Cygwin (чтобы я мог удалить его позже)? - PullRequest
0 голосов
/ 21 марта 2020

Я собрал пакет из https://github.com/fd00/yacp, используя cygport; однако я только что заметил, что команда cygport [packagename.cygport] install НЕ устанавливается в файловой системе cygwin, а находится в подкаталоге исходного каталога сборки; как таковые, исполняемые файлы не находятся в пути cygwin, и вы не можете назвать их по имени.

Я видел:

http://cygwin.1069669.n5.nabble.com/Manual-installation-of-cygport-packages-td132812.html

Так что в большинстве случаев он работает просто отлично, просто распаковывая архив в файловую систему root, чтобы проверить его.

https://cygwin-ports-general.narkive.com/RrfmRgr6/how-to-install-a-package-build-with-cygport

Вы можете установить самостоятельно или перейдя в каталог сборки и выполнив 'make install' или просто запустив его из каталога сборки: -)

Итак, теперь у меня есть packagename.tar.xz и packaganame.hint - нельзя ли использовать их с программой Cygwin setup-x86_64.exe (чтобы при поиске имени пакета в настройке у меня была отмеченная запись)?

Если я «установлю», просто распаковав packagename.tar.xz в файловую систему Cygwin root, как мне тогда «удалить»?

Меняет ли * 1034 пути установки относительно make install пакета? Если нет, то я думаю, make install вариант, потому что тогда у меня тоже должно быть make uninstall ...

Ответы [ 2 ]

1 голос
/ 21 марта 2020

cygport - это инструмент для сборки пакетов, который может быть установлен с установкой Cygwin setup-$ARCH.exe.

Вы можете создать локальную структуру установки и использовать пакет calm для создания необходимого файл setup.ini.

$ cygcheck -f /usr/bin/mksetupini
calm-20200220-1

Создайте каталог веб-сайта, аналогичный кешу, который вы загружаете, создайте каталог ARCH/release и скопируйте содержимое dist для пакетов, которые вас интересуют.
Я использую такой сценарий, чтобы подготовить каталог к ​​настройке

#!/bin/bash
cd /pub/altervista/

rm x86/setup.ini x86_64/setup.ini

for i in  x86 x86_64
do
  mksetupini --arch ${i} --inifile=${i}/setup.ini --releasearea=. --disable-check=missing-required-package,missing-depended-package
  bzip2 <${i}/setup.ini >${i}/setup.bz2
  xz -6e <${i}/setup.ini >${i}/setup.xz
done

В данный момент его структура выглядит следующим образом:

$ cd http%3a%2f%2fmatzeri.altervista.org%2f
$ find x86_64/ -type f 

x86_64/release/perl-Cairo/perl-Cairo-1.107-1-src.tar.xz
x86_64/release/perl-Cairo/perl-Cairo-1.107-1.hint
x86_64/release/perl-Cairo/perl-Cairo-1.107-1.tar.xz
x86_64/release/perl-Cairo/perl-Cairo-debuginfo/perl-Cairo-debuginfo-1.107-1.hint
x86_64/release/perl-Cairo/perl-Cairo-debuginfo/perl-Cairo-debuginfo-1.107-1.tar.xz
x86_64/release/perl-Glib/perl-Glib-1.3292-1-src.tar.xz
x86_64/release/perl-Glib/perl-Glib-1.3292-1.hint
x86_64/release/perl-Glib/perl-Glib-1.3292-1.tar.xz
x86_64/release/perl-Glib/perl-Glib-debuginfo
x86_64/release/perl-Glib/perl-Glib-debuginfo/perl-Glib-debuginfo-1.3292-1.hint
x86_64/release/perl-Glib/perl-Glib-debuginfo/perl-Glib-debuginfo-1.3292-1.tar.xz
x86_64/setup.bz2
x86_64/setup.ini
x86_64/setup.xz

, чем вы можете просто установить из локального каталога этого Веб-сайта. A fake Сайт работает нормально.

0 голосов
/ 21 марта 2020

Хорошо, нашел и следовал инструкциям здесь: 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!

Не так уж плохо в процессе, но может немного вмешаться, если вы не можете найди нужную документацию ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...