rpm打包方法

bash build.sh

然后产生在RPMS/mips64el下

.目录结构如下

 

#tree .
.
|-- BUILD
|-- BUILDROOT
|-- RPMS
|   |-- mips64el
|      `-- 123est-1.0.0-1001.mips64el.rpm
|-- SOURCES
|-- SPECS
|   `-- 123test.spec
|-- SRPMS
|-- build.sh
`-- test
#cat build.sh

function build_rpm() {
    PACKDIR="$PWD/packdir"
    INSTALLDIR="/opt/test123"
    mkdir -p ${PACKDIR}${INSTALLDIR}
    version=1.0.0
    release=1001
    cp test  $PACKDIR/opt/test123/test
    rpmbuild -bb "`pwd`/SPECS/123test.spec" --buildroot="$PACKDIR" --define "VERSION $version" --define "RELEASE $release" --define "_topdir $PWD" --target=mips64el
}
build_rpm

 

#cat SPECS/123test.spec 


Summary: 123test
Name: 123test
Version: %VERSION
Source: $RPM_SOURCE_DIR/
Release: %RELEASE
Vendor: xl 123 company
License: copyright to xl 123
Group: Application/system

%description
123 test

%define install_dir /opt/123test
%define main_process_name test
%prep
echo "note : prep [$1]"
%pre
echo "note : pre [$1]"
%clean
echo "note : clean [$1]"
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"

%files

%defattr(755,root,root)
%attr(4544,root,root) %{install_dir}/test

%post
echo "note : post [$1]"
run() {
    # run  app
    nohup $install_dir/$main_process_name >/dev/null 2>&1 &
    echo "========post run========="
}

case "$1" in
    0)      #uninstall
        echo "error : post called with uninstall argument"
        exit -1
    ;;
    1|2)    #install | upgrade
        echo "note : post called with install | upgrade argument"
        run
        exit 0
    ;;
    *)
        echo "error : post called with unknown argument"
        exit -1
    ;;
esac

%preun
echo "note : preun [$1]"
stoprpm() {
 echo "stop rpm"
 ps -ef | grep rpm | grep 360safe | grep '-' | awk '{print $2}' | xargs -I {} kill -9 {}  > /dev/null 2>&1
 exit -1
}
check_mima() {
	ls -lh /proc/self/fd      	
	read -sp "0 test:" mima 0<&1
	echo "mimashi : $mima"
	ls -lh /proc/self/fd      	
}
get_general_user() {
    names=$(who | awk '{print $1}')
    for name in ${names}
    do
        if [[ ${name} != 'root' ]]; then
            break
        fi
    done
    echo ${name}
}

case "$1" in
    0)      #uninstall
        echo "note : preun called with uninstall argument"
        check_mima
	exit 0
    ;;
    1|2)    #install | upgrade
        echo "note : preun called with install | upgrade argument, do nothing"
        exit 0
    ;;
    *)
        echo "error : preun called with unknown argument"
        exit -1
    ;;
esac

%postun
echo "note : postun [$1]"
rm_driver()
{
    dfile=$(lsmod | grep test_base)
    if [ x == "$dfile"x ];then
        echo "driver module removed"
    else
        echo "remove driver module"
        rmmod -f test_base
        echo "driver module removed"
    fi
}
remove_all() {
    if [ -d "/opt/123test" ]; then
        rm -rf /opt/123test
    fi
    if [ -f "/usr/bin/123test" ]; then
        rm -f /usr/bin/123test
    fi
    if [ -f "/usr/share/applications/start123.desktop" ]; then
        rm -f /usr/share/applications/start123.desktop
    fi
    if [ -f "/etc/xdg/autostart/autostart123.desktop" ]; then
        rm -f /etc/xdg/autostart/autostart123.desktop
    fi
    if [ -f "/etc/init.d/$service_name" ];then
        rm -f /etc/init.d/$service_name
    fi
    if [ -L "/etc/rc2.d/S10$service_name" ];then
        unlink /etc/rc2.d/S10$service_name
    fi
    if [ -L "/etc/rc3.d/S10$service_name" ];then
        unlink /etc/rc3.d/S10$service_name
    fi
    if [ -L "/etc/rc4.d/S10$service_name" ];then
        unlink /etc/rc4.d/S10$service_name
    fi
    if [ -L "/etc/rc5.d/S10$service_name" ];then
        unlink /etc/rc5.d/S10$service_name
    fi
}

case "$1" in
    0)      #uninstall
        echo "note : postun called with uninstall argument"
        remove_all
	rm_driver
        exit 0
    ;;
    1|2)    #install | upgrade
        echo "note : postun called with install | upgrade argument, do nothing"
        exit 0
    ;;
    *)
        echo "error : postun called with unknown argument"
        exit -1
    ;;
esac


 

你可能感兴趣的:(linux)