Для сервера в автономной среде, как мне загрузить пакет из http://pkg.openindiana.org/dev? (или более известный http://pkg.oracle.com)
Ссылка для установки загружает p5i
файл с машиночитаемой информацией о загрузке, но отсутствует URL-адрес http для загружаемого файла (-ов) пакета или списка файлов.
Клиенты IPS могут устанавливать пакеты только из репозиториев IPS. Итак, если вы не заинтересованы в добавлении удаленного репозитория в качестве издателя, к счастью, есть еще один вариант - создать архив IPS (p5p).
Имейте в виду, что архив IPS - это не RPM Linux. Например, вы не можете установить программное обеспечение непосредственно из архива IPS. Но вы можете скопировать файл в другие системы, например, в несетевую систему. Думайте об архиве IPS как о переносном репозитории, потому что именно так вы будете его использовать. Только после того, как вы создадите локальный репозиторий из архивного файла IPS, вы сможете использовать пакеты из него.
Архивы IPS позволяют:
Скажем, например, вы хотите протестировать последнюю версию пакета. Затем сделайте что-нибудь вроде этого:
pkgrecv -s http://example.com:10000 -d ~/firefox_test.p5p -a -r pkg://userland/web/browser/firefox@45.3.0-2016.0.0.0:20160817T064143Z
Проверьте содержимое упаковки с помощью: pkgrepo -s ~/firefox_test.p5p list
или вы можете использовать: pkg list -f -g ~/firefox_test.p5p
Добавьте архив IPS как локальный репозиторий с помощью: pkg set-publisher -p ~/firefox_test.p5p
И, наконец, чтобы установить определенную версию firefox, используйте: pkg install firefox@45.3.0-2016.0.0.0:20160817T064143
Манифест доступен напрямую http://pkg.openindiana.org/dev/manifest/0/developer%2Fbuild%2Fmake%400.5.11%2C5.11-0.151.1%3A20110912T022544Z.
Остается только выяснить, как получить эти отдельные файлы, перечисленные таким образом.
file b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7 chash=f3998eb4b0aa99b3c54682f1a765e19215e15622 group=bin mode=0755 owner=root path=usr/bin/sccsdiff pkg.csize=1620 pkg.size=3798
file 9b1eb9d425c9de60eba5759368160e709fb51143 chash=0de4a47b23c1ac5121c9216ec854b197c18bfe24 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/ad pkg.csize=2201 pkg.size=5762
file 0f594094532464eab978e00d4d3e18519538fe7b chash=e6685b5da6534ef06ad4aa51c4655fe72f98a2f1 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/bd pkg.csize=1082 pkg.size=2089
file a0d207452b8fa6dd62661cd8349fe92ae415de10 chash=67fd628d7578b7fd907eb75b973c91aeb7b06fee group=bin mode=0644 owner=root path=usr/lib/help/locale/C/cb pkg.csize=805 pkg.size=1498
file 6267fe29483aaffdd5ca7dadab0866e3c23024f5 chash=d769eee8c86a2aefb0af1abb6d55dd559b26864e group=bin mode=0644 owner=root path=usr/lib/help/locale/C/cm pkg.csize=1581 pkg.size=3341
file 18691bfa26474c1133b6ac55897f15bba8cf669a chash=55a97bca8ce191bae3621ace062f3192bf0def18 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/cmds pkg.csize=2279 pkg.size=6573
file 614eef6da7707fa4c77e5a0c958ec42eb1f7c68c chash=36df818d773e392d585fd58cf65d3dab93466528 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/co pkg.csize=2284 pkg.size=5010
file 50e3e4dd1731dd07e7633afab6da1825527a312d chash=8e98dd2c2a45cc35993e3c373ecace197b65e900 group=bin mode=0644 owner=root path=usr/lib/help/locale/C/de pkg.csize=2108 pkg.size=4651
Редактировать: Отдельные файлы можно загрузить по URL-адресу, как в этом примере: http://pkg.openindiana.org/dev/file/0/b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7
Остается только одно. Как установить эти файлы.
Самый простой способ - использовать pkgrecv
для извлечения пакета из исходного репозитория в локальный репозиторий. IPS - это система сетевых пакетов, поэтому в настоящее время вы не можете устанавливать пакеты из одного файла, как в случае с потоками данных SVr4. Последнее, что я слышал (до поглощения Oracle), это то, что ребята из pkg5 работали над дисковым форматом, но я не думаю, что он был завершен. Я могу посоветоваться с одним из разработчиков, если хотите. Во всяком случае, это кстати.
Создайте локальное репозиторий пакетов:
pkgrepo create /path/to/localrepo
Получите пакеты из удаленного репо:
pkgrecv -s http://pkg.openindiana.org/dev -d /path/to/localrepo <FMRI_or_glob_of_packages>
Прошло некоторое время с тех пор, как я сделал это (последний раз был, когда OpenSolaris был на грани завершения работы, и мы [команда OpenIndiana] получали пакеты из OpenSolaris / dev), но вам может потребоваться установить издателем вашего локального репозитория openindiana. Издатель .org:
pkgrepo set -s publisher/prefix=openindiana.org /path/to/localrepo
Начать pkg.depotd
пример так что pkg
можно использовать:
pkg.depotd -d /path/to/localrepo -p 10000
(Вы, вероятно, захотите настроить это в SMF. Следуйте как в вики OpenIndiana.)
Затем добавьте свое локальное репо в качестве источника openindiana.org:
pkg set-publisher -g http://localhost:10000 openindiana.org
Нет, действительно нет более простого способа сделать это. Это одна из причин, по которой мне не нравится переход на IPS.
Каждый отдельный файл в IPS сжимается с использованием gzip
, поэтому вы можете вручную использовать curl
и gzip -dc
чтобы развернуть и распаковать файл.
Например: получение sccsdiff
(хэш файла sha1 b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7
) как упомянул Джордж Бейли ...
curl http://pkg.openindiana.org/dev/file/0/b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7 | gzip -dc > sccsdiff
Вы также можете проверить хеш sha1 несжатого файла ...
$ sha1sum sccsdiff
b8dac4eaeabc7d41b4bff842a2f6b54cb36449d7 sccsdiff
Дополнительная информация доступна на вики-странице OmniOS: Получение файлов пакетов IPS без pkg (1)
Я создал портативную утилиту для таких вещей:
Пакет в репозитории IPS имеет смысл только в контексте фактической установки пакета с помощью команды pkg (1) по сети. Пакет не представлен как отдельный файл в репозитории IPS; вместо этого файл манифеста для пакета отслеживает различные биты. Насколько я понимаю, это позволяет выполнять эффективные обновления, поскольку необходимо передавать только измененные файлы.
Один из вариантов - отразить репозиторий IPS в локальной системе или в другой доступной системе. Есть инструкция на старом Сайт OpenSolaris и дальше Вики OpenIndiana. Однако прошло некоторое время с тех пор, как я отразил репозиторий IPS, поэтому я не могу комментировать точность инструкций по этим ссылкам.
Вероятно, есть и другие варианты, но я не знаю их с головы до ног.