Если пакет в формате pkg.
Распаковываем пакет в папку test
$ pkgtrans mysql-utilities-commercial-1.6.5-solaris11.pkg test/
Внутри пакета находится папка reloc с иерархическим содержимым файлов пакета, файл pkginfo с описанием пакета и pkgmap – файлом, и манифестом pkgmap.
После правки содержимого, заворачиваем обратно в пакет pkg:
$ pkgtrans -s /path/which/contains/pkg_folder pkg_name
Пример:
# ls test/ mysql-utilities # pkgtrans -s test mysql-utilities.pkg The following packages are available: 1 mysql-utilities MySQL Utilities 1.6.5 (Commercial), Collection of utilities used for maintaining and administering MySQL servers (all) 1.6.5 Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]: Transferring package instance # ls test mysql-utilities mysql-utilities.pkg
Если пакет в репозитории.
Распаковываем пакет в текущую папку:
$ pkgrecv -s /export/pkg/ -d /path/to/extract --raw library/python/tornado-27
Вместо локального пути (в данному случае это /export/pkg) может быть и репозиторий (http://ips.com). Если не указать конкретную версию пакета, то будут скачаны и распакованы все версии данного пакета в такое иерархии: /path/to/extract/pkg_name/version. Правим необходимые файлы и обратно заливаем в репозиторий:
$ pkgsend publish -s /export/pkg -d library%2Fpython%2Fpycurl_27/7.43.0.5%211.4-11.4.46.0.1.119.2%3A20220622T132707Z/ library%2Fpython%2Fpycurl_27/7.43.0.5%211.4-11.4.46.0.1.119.2%3A20220622T132707Z/manifest
то есть, в таком формате:
$ pkgsend publish -s <repo_path> -d <pkg_path> <path_to_pkg_manifest>