...
Info |
---|
Теперь Вы можете запустить его в формате
|
...
Чтобы нижеприведённый скрипт заработал, Вам нужно создать два файла (текущее содержимое их можно получить по ссылкам ниже):файл list_component
...
list_pkg_sec
- список для построения компонент
Теперь получите зависимости , содержимое которого можно взять отсюда.
Здесь же создайте скрипт для получения исходников и их зависимостей. Для этого скопируйте этот скрипт в файл, например, getmake_depsrepo.sh
или выполните следующую команду:
Code Block | ||
---|---|---|
| ||
cat > getmake_depsrepo.sh <<EOT #!/bin/bash # File create for save temporary values >list_one >list_two >pkg_dep >tmp0 >tmp1 >tmp function get_depends() { ## This function get depends for build component [ -z "\$(grep -f pkg_dep <<< \$1)" ] && apt-get install -s \$1 2>/dev/null | grep Inst | awk '{print \$2}'| sort -u && echo \$pkg >> pkg_dep } function all_dep() { ## This recursion function for get recursion depends for build conmponents for pkg in \$@; do all_dep \$(get_depends \$pkg) done } ## Loop for get depends for build components while read component; do if [[ "" == "\$component" ]]; then continue fi echo -e "\\033[33;1;4m =====> Getting depends for \$component... \\033[0m" apt-get --dry-run build-dep \$component 2>/dev/null | grep Inst | awk '{print \$2}' >> list_one done < list_component while read pkg; do if [[ "" == "\$pkg" ]]; then continue fi echo -e "\\033[32;1;4m =====> Installing \$pkg... \\033[0m" apt-get install -s \$pkg 2>/dev/null | grep Inst | awk '{print \$2}' >> list_two done < list_pkg_sec cat list_one >> tmp0 cat list_two >> tmp0 cat list_component >> tmp0 cat list_pkg_sec >> tmp0 cat tmp0 | sort -u >> tmp1 ## Loop for get depends, use function 'all_dep' while read pkg; do if [[ "" == "\$pkg" ]]; then continue fi echo -e "\\033[36;1;4m =====> Getting depends for \$pkg... \\033[0m" all_dep \$pkg >/dev/null done < tmp1 cat pkg_dep >> tmp1 cat tmp1 | sort -u >> tmp while read pkg; do if [[ "" == "\$pkg" ]]; then continue fi echo -e "\\033[35;1;4m =====> Downloading \$pkg... \\033[0m" sudo apt-get download \$pkg done < tmp EOT |
Сделайте этот файл исполняемым и запустите:
Code Block | ||
---|---|---|
| ||
chmod 777 ./getmake_depsrepo.sh ./get_deps.sh |
4. Создайте зону для локального репозитория
...
Code Block | ||
---|---|---|
| ||
apt-get install reprepro apache2 debhelper dpkg-dev dh-exec apt-rdepends -y
ln -s /data/repo /var/www/html/dilos
svcadm enable http
svcs http |
...
Code Block | ||
---|---|---|
| ||
echo -n "Codename: du2-prebuild Suite: unstableprebuild Version: 2.0 Origin: DilOS Label: DilOS prebuild Description: DilOS Prebuild Repository Architectures: solaris-i386 solaris-sparc source Components: main contrib non-free ##SignWith: default DebIndices: Packages Release . .gz .bz2 .xz DscIndices: Sources Release . .gz .bz2 .xz Contents: . .gz .bz2 .xz " > /data/repo/conf/distributions |
Note |
---|
Workaround : Для создания локального репозитория нужен reprepro версии 5.3 и выше. В настоящее время его пока нет в DU2. До момента его появления там нужно выполнить следующие действия для его установки:
|
Выполните эти команды для добавления пакетов *.deb
в репозиторий:
Code Block | ||
---|---|---|
| ||
cd /data/repo/pkg
reprepro -Vb /data/repo export du2-prebuild
reprepro -b /data/repo -C main includedeb du2-prebuild /data/repo/pkg/*.deb
|
Получите исходные файлы для локального репозитория, для чего создайте файл, например, get_sources.sh
и сделайте его исполняемым:
Code Block | ||
---|---|---|
| ||
cat > get_sources.sh <<EOT
#!/bin/bash
while read component; do
if [[ "" == "\$component" ]]; then
continue
fi
apt-get source --download-only \$component
reprepro -b /data/repo --export=never -C main includedsc du2-prebuild \$component*.dsc
rm -rf \$component*
done < /data/repo/pkg/list_component
reprepro -Vb /data/repo export
EOT
chmod 777 ./get_sources.sh
|
...
|
Выполните эти команды для добавления пакетов и исходных файлов в репозиторий:
Code Block | ||
---|---|---|
| ||
cd /data/repo/pkg ./getmake_sourcesrepo.sh exit |
5. Создайте новую зону для сборки компонент
...
Code Block | ||
---|---|---|
| ||
cat > prepare.sh <<EOT
#!/bin/bash
WORKSPACE=/export/home/admin/du2
apt-get clean
apt-get autoclean
apt-get remove libiconv-dev -y
apt-get install -y acl iputils-ping kbd ksh scheduler system-data-console-fonts
apt-get install -y traceroute gmake build-essential man-db po-debconf po4a debhelper
apt-get install -y libx11-6 libxi6 libxtst6 liblua5.2-dev libnghttp2-dev libjansson-dev
apt-get install -y jdupes libaprutil1-dev libbrotli-dev liblua5.2-dev libxml2-dev
apt-get install -y mawk doxygen graphviz libdb-dev libgdbm-dev libsqlite3-dev libpq-dev
apt-get install -y default-libmysqlclient-dev unixodbc-dev libssl-dev bison lsb-release
apt-get install -y libcurl4-openssl-dev libcurl4-gnutls-dev libcurl4-nss-dev dh-exec
apt-get install -y cmake docbook-xml docbook-xsl libgtest-dev liblz4-dev libbz2-dev
apt-get install -y xsltproc w3m gperf guile-2.0-dev texinfo texlive cm-super-minimal
apt-get install -y libgtk-3-dev libdaemon-dev libdbus-1-dev python-all-dev python-gdbm
apt-get install -y python-dbus python-gi-dev gobject-introspection libgirepository1.0-dev
apt-get install -y xmltoman intltool sgmltools-lite libdebconfclient0-dev texi2html
apt-get install -y sharutils man2html libkrb5-dev libgeoip-dev libpipeline-dev
apt-get install -y python-setuptools python3-all-dev python3-setuptools libbsd-dev liblockfile-dev
/usr/bin/ln -fs libX11.so.6 /usr/lib/64/libX11.so.4
/usr/bin/ln -fs libXi.so.6 /usr/lib/64/libXi.so.5
/usr/bin/ln -fs libXtst.so.6 /usr/lib/64/libXtst.so.1
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "" > /etc/apt/sources.list
echo "deb [trusted=yes] http://192.168.0.2/dilos du2-prebuild main contrib non-free" >> /etc/apt/sources.list
echo "deb-src [trusted=yes] http://192.168.0.2/dilos du2-prebuild main contrib non-free" 2>/dev/null >> /etc/apt/sources.list
cp /etc/apt/sources.list /etc/apt/sources.list.dev
apt-get update -y
test -f /var/lib/dpkg/lock && rm -f /var/lib/dpkg/lock
test -f /var/cache/apt/archives/lock && rm -f /var/cache/apt/archives/lock
dpkg --configure -a
rm -rf \${WORKSPACE} && mkdir -p \${WORKSPACE}
apt-get upgrade -y
env DEBIAN_FRONTEND=noninteractive apt-get install -y -f
env DEBIAN_FRONTEND=noninteractive apt-get install -y git openssh-server
EOT
|
...
Code Block | ||
---|---|---|
| ||
cat > build_all.sh <<EOT
#!/bin/bash
BLD_PARALLEL="4"
WORKSPACE=/export/home/admin/du2
while read COMP; do
if [[ "" == "\$COMP" ]]; then
continue
fi./build_all.sh
BLD_RESULT="/data/repo/du/\$COMP"
test -z "\$COMP" && exit 1
test -d \${BLD_RESULT} && rm -rf \${BLD_RESULT}
if [[ "$COMP" == "bind9" ]]; then
cp /etc/apt/sources.list.dev /etc/apt/sources.list
apt-get update
apt-get install -y libssl1.0-dev
cp /etc/apt/sources.list.bak /etc/apt/sources.list
apt-get update
fi
# apt-get update && apt-get upgrade -y || exit 1
# apt-get install -y build-essential illumos-dev dpkg-dev gmake || exit 1
DEB_BUILD_OPTIONS="nocheck notest parallel=\${BLD_PARALLEL}"
export DEB_BUILD_OPTIONS
test -d \${WORKSPACE}/\$COMP && rm -rf \${WORKSPACE}/\$COMP
mkdir -p \${WORKSPACE}/\$COMP
cd \${WORKSPACE}/\$COMP
apt-get build-dep -y \$COMP || exit 1
#DEB_BUILD_OPTIONS="nocheck notest parallel=4" apt-get source --compile \$COMP || exit 1
apt-get source --compile \$COMP || exit 1
mkdir -p \${BLD_RESULT}
cp -ax *.deb \${BLD_RESULT}/ || exit 1
cp -ax *.changes \${BLD_RESULT}/ || exit 1
cp -ax *.buildinfo \${BLD_RESULT}/ || exit 1
done < /data/repo/pkg/list_component
EOT
|
...