65 lines
1.4 KiB
Bash
65 lines
1.4 KiB
Bash
#!/bin/bash
|
|
|
|
#clear env
|
|
unalias -a
|
|
|
|
PWD="$(cd $(dirname $0); pwd)"
|
|
PROJECT_NAME="libobclient"
|
|
|
|
OS_RELEASE="$(grep -Po '(?<=release )\d' /etc/redhat-release)" || exit 1
|
|
OS_ARCH="$(uname -p)" || exit 1
|
|
|
|
OS_TAG="el$OS_RELEASE.$OS_ARCH"
|
|
DEP_FILE="$PROJECT_NAME.${OS_TAG}.deps"
|
|
|
|
echo -e "check dependencies profile for ${OS_TAG}... \c"
|
|
|
|
if [[ ! -f "${DEP_FILE}" ]]; then
|
|
echo "NOT FOUND" 1>&2
|
|
exit 2
|
|
else
|
|
echo "FOUND"
|
|
fi
|
|
|
|
mkdir "${PWD}/pkg" >/dev/null 2>&1
|
|
|
|
echo -e "check repository address in profile... \c"
|
|
REPO="$(grep -Po '(?<=repo=).*' "${DEP_FILE}" 2>/dev/null)"
|
|
if [[ $? -eq 0 ]]; then
|
|
echo "$REPO"
|
|
else
|
|
echo "NOT FOUND" 1>&2
|
|
exit 3
|
|
fi
|
|
|
|
echo "download dependencies..."
|
|
RPMS="$(grep '\.rpm' "${DEP_FILE}" | grep -Pv '^#')"
|
|
|
|
for pkg in $RPMS
|
|
do
|
|
if [[ -f "${PWD}/pkg/${pkg}" ]]; then
|
|
echo "find package <${pkg}> in cache"
|
|
else
|
|
echo -e "download package <${pkg}>... \c"
|
|
TEMP=$(mktemp -p "/" -u ".${pkg}.XXXX")
|
|
wget "$REPO/${pkg}" -q -O "${PWD}/pkg/${TEMP}"
|
|
if [[ $? -eq 0 ]]; then
|
|
mv -f "${PWD}/pkg/$TEMP" "${PWD}/pkg/${pkg}"
|
|
echo "SUCCESS"
|
|
else
|
|
rm -rf "${PWD}/pkg/$TEMP"
|
|
echo "FAILED" 1>&2
|
|
exit 4
|
|
fi
|
|
fi
|
|
echo -e "unpack package <${pkg}>... \c"
|
|
rpm2cpio "${PWD}/pkg/${pkg}" | cpio -di -u --quiet
|
|
|
|
if [[ $? -eq 0 ]]; then
|
|
echo "SUCCESS"
|
|
else
|
|
echo "FAILED" 1>&2
|
|
exit 5
|
|
fi
|
|
done
|