`
IvanLi
  • 浏览: 602737 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

创建solaris package step by step

阅读更多
原文地址:http://www.ibiblio.org/pub/packages/solaris/sparc/html/creating.solaris.packages.html

介绍:
solaris 软件包可以使软件很容易的安装到solaris系统中。软件的所有部分都被一个目录文件描述。借助包管理工具您可以在solaris系统中很方便得安装,更新,删除软件,而不用担心“恶意文件”存留,或者错误的配置,或者软件的未完全安装。
软件包的创建过程大体上是安装一次软件,然后把软件组织成一个软件安装包,这个软件安装包可以被快速的安装到其他solaris系统,同时可以很容易的在本机卸载。
本文档将使用GNU bison 1.24 作为示例程序。

软件包的创建:
创建软件包,首先要知道软件包包含那些文件。如果您是软件作者,通常这个很简单,否这您就需要先把软件安装到一个独立的目录中,来查看到底那些文件将被包含到软件包中。GNU 软件很容易做到这一点,只需要通过命令`configure --prefix=/dir`,这个dir就是我们临时安装软件的目录,例如我们可以制定软件目录为/usr/local/pkg.
编译后使用`make install`命令来把软件安装到我们指定的目录中(/usr/local/pkg)。通过命令`find /usr/local/pkg -print > /tmp/files`来得到该软件包需要哪些文件,现在我们已经知道我们都需要哪些文件了。

创建软件包配置文件
软件安装完成后,你需要创建一个目录文件提供给软件包创建工具使用。首先需要清理/tmp/files里的文件路径(/usr/local/pkg还在那),编辑文件,并修复文件路径错误,在运行:
%cat /tmp/files | pkgproto > /tmp/Prototype
这将创建文件/tmp/Prototype,内容如下
    d none /usr/local 0755 root root
    d none /usr/local/bin 0755 root root
    d none /usr/local/man 0755 root root
    d none /usr/local/man/man1 0755 root root
    d none /usr/local/lib 0755 root root
    d none /usr/local/etc 0755 root root
    d none /usr/local/info 0755 root root
    d none /usr/local/share 0755 root root
    f none /usr/local/bin/bison 0755 root root
    f none /usr/local/man/man1/bison.1 0644 root root
    f none /usr/local/info/bison.info 0644 root root
    f none /usr/local/info/bison.info-1 0644 root root
    f none /usr/local/info/bison.info-2 0644 root root
    f none /usr/local/info/bison.info-3 0644 root root
    f none /usr/local/info/bison.info-4 0644 root root
    f none /usr/local/info/bison.info-5 0644 root root
    f none /usr/local/share/bison.simple 0644 root root
    f none /usr/local/share/bison.hairy 0644 root root

检查文件/tmp/Prototype你可能会发现某些权限不是我想要的,我们可以手工编辑每一个文件的权限。
现在你必须在/tmp/Prototype文件中添加指向pkginfo的语句,pkginfo文件将描述pkgmk命令我们要创建的软件包的细节。
在Prototype文件的前端添加一行
i pkginfo
如果你向包含checkinstall, preinstall和postinstall脚本,仅仅需要在Prototype文件头加上就可以。
checkinstall是一个在安装是被运行的的文件,运行的用户是"nobody",通过这个脚本,你可以检查依赖,处理问题,很自然得退出pkgadd程序,唯一需要注意的是当构建软件包时,要保证用户"nobody"有权限读取这个脚本。pkgadd程序不会询问你是否执行checkinstall脚本。
preinstall是在软包正真安装时执行的脚本,运行的用户是"root",在这里产生中断会要求用户使用pkgrm来删除半安装的软件包,pkgadd程序会询问你是否执行preinstall脚本
postinstall是一个软件包安装完成后执行的脚本,运行的用户是"root",通过这个脚本,你可以为刚刚安装的软件做一些额外的事情,例如安装内核驱动,创建设备或者其他后安装过程,pkgadd程序会询问你是否执行preinstall脚本。
添加一下文字到Prototype
    i preinstall
    i postinstall
    i checkinstall

这些脚本会在软件安装开始后执行,如果出错,这些脚本要以非0退出,会要求pkgrm来清理这些半安装的软件。
最后,我们的Prototype文件如下所示:
    i pkginfo
    d none /usr/local/bin 0755 root root
    d none /usr/local/man 0755 root root
    d none /usr/local/man/man1 0755 root root
    d none /usr/local/lib 0755 root root
    d none /usr/local/etc 0755 root root
    d none /usr/local/info 0755 root root
    d none /usr/local/share 0755 root root
    f none /usr/local/bin/bison 0755 root root
    f none /usr/local/man/man1/bison.1 0644 root root
    f none /usr/local/info/bison.info 0644 root root
    f none /usr/local/info/bison.info-1 0644 root root
    f none /usr/local/info/bison.info-2 0644 root root
    f none /usr/local/info/bison.info-3 0644 root root
    f none /usr/local/info/bison.info-4 0644 root root
    f none /usr/local/info/bison.info-5 0644 root root
    f none /usr/local/share/bison.simple 0644 root root
    f none /usr/local/share/bison.hairy 0644 root root

可以查看prototype的帮助文件来获取更多的信息
下一步,我们需要创建pkginfo文件,来告诉pkgmk命令需要调用哪些文件。下边是我们创建的pkginfo文件内容
    PKG="GNUbison"
    NAME="GNU bison 1.24"
    VERSION="1.24"
    ARCH="sparc"
    CLASSES="none"
    CATEGORY="utility"
    VENDOR="GNU"
    PSTAMP="4thSep95"
    EMAIL="request@gnu.ai.mit.edu"
    ISTATES="S s 1 2 3"
    RSTATES="S s 1 2 3"
    BASEDIR="/"

创建软件包
软件包配置文件创建后,你就可以在包含软件配置文件的目录(/tmp)来运行软件包创建命令来创建软件包了。
pkgmk -o -r / -d /tmp -f Prototype
这个命令表示创建软件包,覆盖所有以前的尝试,使用'/'作为根目录来查找文件,在/tmp目录构建软件包,从Prototype文件里来读取构建软件包的配置。
命令的输出是
    ## Processing pkginfo file.
    ## Attempting to volumize 19 entries in pkgmap.
    part  1 -- 990 blocks, 21 entries
    ## Packaging one part.
    /tmp/GNUbison/pkgmap
    /tmp/GNUbison/pkginfo
    /tmp/GNUbison/root/usr/local/bin/bison
    /tmp/GNUbison/root/usr/local/info/bison.info
    /tmp/GNUbison/root/usr/local/info/bison.info-1
    /tmp/GNUbison/root/usr/local/info/bison.info-2
    /tmp/GNUbison/root/usr/local/info/bison.info-3
    /tmp/GNUbison/root/usr/local/info/bison.info-4
    /tmp/GNUbison/root/usr/local/info/bison.info-5
    /tmp/GNUbison/root/usr/local/man/man1/bison.1
    /tmp/GNUbison/root/usr/local/share/bison.hairy
    /tmp/GNUbison/root/usr/local/share/bison.simple
    ## Packaging complete.
这将在/tmp下建立目录GNUbison.在GNUbison目录中包含两个文件 pkgmap和pkginfo.pkgmap包含了所有文件的路径,权限,还有每个文件的校验和。pkginfo的内容跟你刚才在/tmp目录下创建的pkginfo文件内容相同,在GNUbison目录中包含一个目录名为"root",这里面包含了将要被安装的软件的文件,如果你包含了checkinstall(preinstall,postinstall)脚本,他们将出现在文件夹install中,你不用担心在最顶层目录中包含了那些文件,除非你需要修复一些bug.
为了存储,传输方便,我们需要创建一个.tar.gz的压缩包
cd /tmp
tar czvf GNUbison.1.25.SPARC.pkg.tar.gz GNUbison

解压并安装软件包
tar zxvf GNUbison.1.25.SPARC.pkg.tar.gz
su -
pkgadd -d $PWD
你将被提示是否安装GNUbison软件包,确认并安装。

有用的文件
pkginfo

PKG="GNUbison"
NAME="GNU bison 1.24 SPARC Solaris 2.6"
VERSION="1.24"
ARCH="sparc"
CLASSES="none"
CATEGORY="utility"
VENDOR="GNU"
PSTAMP="12thAugust2004"
EMAIL="request@gnu.ai.mit.edu"
ISTATES="S s 1 2 3"
RSTATES="S s 1 2 3"
BASEDIR="/"


Prototype

i pkginfo
i checkinstall
d none /usr/local/bin 0755 root root
d none /usr/local/man 0755 root root
d none /usr/local/man/man1 0755 root root
d none /usr/local/lib 0755 root root
d none /usr/local/etc 0755 root root
d none /usr/local/info 0755 root root
d none /usr/local/share 0755 root root
f none /usr/local/bin/bison 0755 root root
f none /usr/local/man/man1/bison.1 0644 root root
f none /usr/local/info/bison.info 0644 root root
f none /usr/local/info/bison.info-1 0644 root root
f none /usr/local/info/bison.info-2 0644 root root
f none /usr/local/info/bison.info-3 0644 root root
f none /usr/local/info/bison.info-4 0644 root root
f none /usr/local/info/bison.info-5 0644 root root
f none /usr/local/share/bison.simple 0644 root root
f none /usr/local/share/bison.hairy 0644 root root


mkpkg

#!/bin/sh
pkg=GNUbison
pkgfile=GNUbison.1.24.SPARC.Solaris.2.6.pkg.tgz
pkgmk -o -r / -d /tmp -f Prototype
echo "Setting file permissions in /tmp/${pkg} tree to 644."
find /tmp/${pkg} -type f -print | xargs chmod a+r
find /tmp/${pkg} -type f -print | xargs chmod u+w
echo "Setting directory permissions in /tmp/${pkg} tree to 755."
find /tmp/${pkg} -type d -print | xargs chmod 755
if [ -f /tmp/${pkg}/install/preinstall ]; then
    chmod 755 /tmp/${pkg}/install/preinstall
fi
if [ -f /tmp/${pkg}/install/postinstall ]; then
    chmod 755 /tmp/${pkg}/install/postinstall
fi
if [ -f /tmp/${pkg}/install/preremove ]; then
    chmod 755 /tmp/${pkg}/install/preremove
fi
if [ -f /tmp/${pkg}/install/postremove ]; then
    chmod 755 /tmp/${pkg}/install/postremove
fi
if [ -f /tmp/${pkg}/install/request ]; then
    chmod 755 /tmp/${pkg}/install/request
fi
if [ -f /tmp/${pkg}/install/checkinstall ]; then
    chmod 755 /tmp/${pkg}/install/checkinstall
fi
cd /tmp
echo Gzipping /tmp/$pkg into /tmp/$pkgfile...
/usr/bin/tar -cf - $pkg | gzip -9c > /tmp/$pkgfile


checkinstall

#!/bin/sh
#
# expected_release="5.6"
expected_platform="sparc"
#
release=`uname -r`
platform=`uname -p`
#
if [ ${platform} != ${expected_platform} ]; then
    echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n"
    echo "\tAborting installation.\n\n\n"
    exit 1
fi
# if [ ${release} != ${expected_release} ]; then
#     echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n"
#     echo "\tAborting installation.\n\n\n"
#     exit 1
# fi

exit 0

分享到:
评论

相关推荐

    Step by Step Solaris 10 to Solaris 11 migration for ISVs

    - **Solaris 10 Zone**:可以在 Solaris 11 上创建 Solaris 10 Zone,保护现有环境不受干扰。 #### 三、Solaris 10 Zone 在 Solaris 11 上的应用 - **业务投资保护**:通过在 Solaris 11 上部署 Solaris 10 Zone...

    Oracle Solaris 9 - Solaris 9 Package List-58

    Oracle Solaris 9 - Solaris 9 Package List-58

    solaris下如何创建用户以及新建文件

    ### Solaris 下创建用户及管理文件操作指南 #### 一、创建用户及其权限分配 在 Solaris 操作系统中,创建用户是一项基本但非常重要的任务。通过正确的步骤创建用户,并为其分配适当的权限,可以确保系统的安全性与...

    Oracle Solaris 11 Copying and Creating Oracle Solaris11 Package

    在Oracle Solaris 11中,软件包管理是系统维护和部署的重要组成部分,而复制和创建Oracle Solaris 11包仓库是确保系统能够获取最新软件和更新的关键步骤。 一、Oracle Solaris 11包管理系统 Oracle Solaris 11引入...

    Oracle Solaris 11.1 Package Lists-62

    1. **Package Management System**: Oracle Solaris 11 引入了 IPS (Image Packaging System) 包管理系统,它提供了一种高效、安全的方式来安装、更新和管理软件包。IPS 使用元数据来描述软件包的依赖关系,使得安装...

    UNIX step by step

    《UNIX Step by Step》中文第三版是一本深入浅出的UNIX操作系统教程,旨在引导读者逐步掌握这个历史悠久且功能强大的系统。这本书以PDF格式提供,包含了丰富的实用命令介绍,非常适合初学者和有一定经验的用户深入...

    Oracle Solaris 11.2 Package Group Lists-48

    Package Group Lists是Oracle Solaris 11.2系统中的一个重要概念,它指的是预定义的一组软件包,这些软件包按照功能或用途被组织在一起,便于用户一次性安装一组相关软件,从而简化系统配置和管理。 在Oracle ...

    Step-by-Step Setup of Oracle GoldenGate MA 12.3 for Oracle.pdf

    本文档《Step-by-Step Setup of Oracle GoldenGate MA 12.3 for Oracle.pdf》是一份详细的安装和配置指南,旨在通过真实业务环境的实践案例,引导用户完成Oracle数据库在不同平台和版本间的实时数据复制设置。...

    Solaris8,Solaris9,Solaris10,Solaris11

    Solaris8,Solaris9,Solaris10,Solaris 11 iso镜像下载

    Solaris Package System-开源

    Solaris Package System 是 Makefile “recipes”的框架和存储库,可用于从软件源 tarball 构建 Solaris 软件包。 它提供了广泛可用的源代码和 Solaris 二进制文件之间缺失的链接。

    solaris教程 solaris安装

    3. 系统分区:规划硬盘空间,为Solaris创建合适的分区,包括根分区(/)、用户分区(/usr)、交换分区(swap)等。 三、安装步骤 1. 引导安装:使用安装媒介启动计算机,进入Solaris安装界面。 2. 语言选择:根据需求选择...

    Oracle Solaris 11.3 Package Group Lists-52

    Package Group Lists是Oracle Solaris 11.3系统中的一个重要概念,它指的是预定义的一组软件包,这些软件包按照功能或用途被组织在一起,便于用户安装和管理。在Oracle Solaris 11.3中,这些包组提供了系统的基本...

    Oracle Solaris 11.2 Copying and Creating Package Repositories in

    在Oracle Solaris 11.2中,复制和创建软件包仓库(Package Repositories)是系统管理和维护的重要环节,这允许系统管理员有效地分发、更新和管理软件包。 复制软件包仓库通常是出于备份目的或为了在网络中的多台...

    Oracle Solaris 11.3 Copying and Creating Package Repositories in

    Oracle Solaris 11.3 Copying and Creating Package Repositories in Oracle Solaris 11.3-104

    Oracle Solaris 9 -Solaris 9 12/02 Package List-100

    该软件包列表(Package List)详细列出了在Solaris 9 12/02发行版中包含的所有软件包,这些软件包覆盖了操作系统的核心组件、开发工具、网络服务、图形用户界面以及各种实用工具。 Solaris 9的主要特点包括: 1. *...

    Solaris资料Solaris资料Solaris资料Solaris资料

    这份资料时用来学写Solaris资料 德,可以让人们清楚地认识Solaris资料

    Oracle Solaris10 8/11安装指南:Solaris Flash归档文件(创建和安装)-92

    在本文中,我们将深入探讨如何创建和安装 Solaris Flash 归档文件,这是 Oracle Solaris 提供的一项重要功能,用于快速、可靠的系统部署和恢复。 Solaris Flash 归档文件是一个包含操作系统映像、软件包、配置文件...

    在solaris上安装samba

    通常,这可以通过 Solaris Package Manager 或从 Samba 官方网站获取。确保你下载的是与你的 Solaris 版本兼容的版本。 2. **安装依赖项**: Samba 可能依赖于一些库和工具,例如 C 编译器、开发库等。在安装 ...

    Oracle Solaris 9 -Solaris 9 4/03 Package List-102

    Oracle Solaris 9是Sun Microsystems开发的一个操作系统版本,发布于2003年4月,是Solaris操作系统家族的一部分。这个版本(Solaris 9 4/03)包含了丰富的软件包列表,这些包提供了系统的基本功能和服务,同时也支持...

    Solaris 系统管理指南

    ### Solaris系统管理指南知识点详解 #### 一、Solaris系统管理工具概述 - **工具新增功能**:Solaris系统管理工具不断更新迭代,引入了一系列新功能以满足日益增长的系统管理需求。例如,增强的安全特性、改进的...

Global site tag (gtag.js) - Google Analytics