rpm パッケージのビルドについて質問があります。コンピューターにいくつかのファイルをコピーする rpm パッケージをビルドします。PC に openssl がない場合は、それもインストールします。最後に、Java プログラムを起動して、インストールが成功したことを確認します。
%post セクションから Java クラス datei を呼び出すことができないのはなぜですか。私は何を間違えましたか?rpm内から呼び出すことさえ可能ですか?
また、$HOME 変数は %post セクションで解決されません。対応するファイルに書き込むにはどうすればよいですか?
また、改善のアイデアも受け入れます。これは私の最初の rpm パッケージです。
ご助力ありがとうございます
これは、対応する SPEC ファイルです。
### PI JDBC Driver Spec-File
Summary: Installs the PIJDBC Driver
Name: pijdbcdriver_installer
Version: 1.0
Release: 1
License: Probably not
Source: PI-JDBC_2012-x86-x64_.tar.gz
Source1: openssl-0.9.8k-3.4_3.8.1.x86_64.delta.rpm
Source2: lib
Source3: openssl-1.0.0k-34.20.1.x86_64.rpm
Source4: test.sh
%description
pijdbcdriver_installer installs
%prep
rm -rf Build/*
%setup -c pijdbcdriver_installer-1.0
cp -p %SOURCE1 .
cp -pr %SOURCE2 .
cp -pr %SOURCE3 .
cp -p %SOURCE4 .
%build
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/opt
mkdir -p $RPM_BUILD_ROOT/etc
mkdir -p $RPM_BUILD_ROOT/usr
mkdir -p $RPM_BUILD_ROOT/tmp
mkdir -p $RPM_BUILD_ROOT/usr/lib
cp -r $RPM_BUILD_DIR/pijdbcdriver_installer-1.0/pipc $RPM_BUILD_ROOT/opt/pipc
cp -r $RPM_BUILD_DIR/pijdbcdriver_installer-1.0/openssl-0.9.8k-3.4_3.8.1.x86_64.delta.rpm $RPM_BUILD_ROOT/tmp/openssl-0.9.8k-3.4_3.8.1.x86_64.delta.rpm
cp -r $RPM_BUILD_DIR/pijdbcdriver_installer-1.0/openssl-1.0.0k-34.20.1.x86_64.rpm $RPM_BUILD_ROOT/tmp/openssl-1.0.0k-34.20.1.x86_64.rpm
cp -pr $RPM_BUILD_DIR/pijdbcdriver_installer-1.0/lib/* $RPM_BUILD_ROOT/usr/lib
cp $RPM_BUILD_DIR/pijdbcdriver_installer-1.0/test.sh $RPM_BUILD_ROOT
versionsnummerVonOpenSSL=`openssl version -v`
openssslVersionIs_1_0=`echo $versionsnummerVonOpenSSL | awk '{print index($versionsnummerVonOpenSSL, 1.0)}'`
openssslVersionIs_0_9_8=`echo $versionsnummerVonOpenSSL | awk '{print index($versionsnummerVonOpenSSL, 0.9.8)}'`
openssslVersion_Exists=`echo $versionsnummerVonOpenSSL | awk '{print length($versionsnummerVonOpenSSL)}'`
if [ openssslVersionIs_1_0 > 0 ]
then
rm $RPM_BUILD_ROOT/opt/pipc/jdbc/lib/libRdsaWrapper-1.3.0a.so
rm $RPM_BUILD_ROOT/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0a.so
elif [ openssslVersionIs_0_9_8 > 0 ]
then
rm $RPM_BUILD_ROOT/opt/jdbc/lib/libRdsaWrapper-1.3.0b.so
rm $RPM_BUILD_ROOT/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0b.so
elif [ openssslVersion_Exists = 0 ]
then
sudo rpm -i tmp/openssl-1.0.0k-34.20.1.x86_64.rpm
rm $RPM_BUILD_ROOT/opt/pipc/jdbc/lib/libRdsaWrapper-1.3.0a.so
rm $RPM_BUILD_ROOT/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0a.so
else
fi
export DISPLAY=:0
cd /opt/pipc/jdbc/Samples/getSnap/bin
java getSnap koernersnb FRADEV-T6-PI1 sin%
%post
rm -r tmp/openssl-0.9.8k-3.4_3.8.1.x86_64.delta.rpm
rm -r tmp/openssl-1.0.0k-34.20.1.x86_64.rpm
sudo sed -i '/PIJDBCDriver/d' /etc/profile
sudo sed -i '/PI_RDSA_LIB/d' /etc/profile
if [ openssslVersionIs_1_0 > 0 ]
then
echo "export PI_RDSA_LIB=/opt/pipc/jdbc/lib/libRdsaWrapper-1.3.0b.so" >> etc/profile
echo "export PI_RDSA_LIB64=/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0b.so" >> /etc/profile
echo "export PI_RDSA_LIB=/opt/pipc/jdbc/lib/libRdsaWrapper-1.3.0b.so" >> $HOME/.bashrc
echo "export PI_RDSA_LIB64=/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0b.so" >> $HOME/.bashrc
elif [ openssslVersionIs_0_9_8 > 0 ]
then
echo "export PI_RDSA_LIB=/opt/pipc/jdbc/lib/libRdsaWrapper-1.3.0a.so" >> /etc/profile
echo "export PI_RDSA_LIB64=/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0a.so" >> /etc/profile
echo "export PI_RDSA_LIB=/opt/pipc/jdbc/lib/libRdsaWrapper-1.3.0a.so" >> **$HOME**/.bashrc
echo "export PI_RDSA_LIB64=/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0a.so" >> **$HOME**/.bashrc
else
echo "export PI_RDSA_LIB=/opt/pipc/jdbc/lib/libRdsaWrapper-1.3.0b.so" >> /etc/profile
echo "export PI_RDSA_LIB64=/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0b.so" >> /etc/profile
echo "export PI_RDSA_LIB=/opt/pipc/jdbc/lib/libRdsaWrapper-1.3.0b.so" >> $HOME/.bashrc
echo "export PI_RDSA_LIB64=/opt/pipc/jdbc/lib/libRdsaWrapper64-1.3.0b.so" >> $HOME/.bashrc
fi
echo "export CLASSPATH=$CLASSPATH:/opt/pipc/jdbc/PIJDBCDriver.jar:." >> /etc/profile
**%files**
/opt/pipc
/tmp/openssl-0.9.8k-3.4_3.8.1.x86_64.delta.rpm
/tmp/openssl-1.0.0k-34.20.1.x86_64.rpm
/usr/lib
/test.sh