APT в ALT Linux/IsoFromRepository
Материал из ALT Linux Wiki
< APT в ALT Linux(Перенаправлено с Apt/IsoFromRepository)
[править] Создание образа CD/DVD-диска из локального репозитория
Структура диска с репозиторием, который можно подключить с помощью команды apt-cdrom, достаточно проста:
.disk/
info <- файл с информацией о диске.
ALTLinux/ <- репозиторий
base/
RPMS...
SRPMS...
...
Канонический вариант создания таких дисков - утилита distribute из одноимённого пакета (см. документацию).
Для простых случаев можно использовать нижеприведённый скрипт, который создаёт iso-файл из локального репозитория (изначально предназначался для создания образов репозиториев updates и backports, и поэтому может требовать небольшого приложения напильника в других случаях).
Внимание: этот скрипт не умеет разбивать репозиторий на несколько CD/DVD-образов!
[править] updates2iso.sh
#!/bin/sh
## Create apt-getable ISO image
## from ALT Linux updates/backports mirror
## Artem Zolochevskiy <az@zolochevskie.net>, 2006
PUBLISHER=""
### ---------------------------------- ###
### -- don't edit below this line -- ###
### ---------------------------------- ###
PROG="$(basename $0)"
VERSION="0.1"
usage() {
echo "usage: $PROG /path/to/mirror/"
}
# check arguments
if [ $# = 0 ]
then
usage
exit 1
fi
for arg in $*; do
case $arg in
--version|-V|-v)
echo "$PROG $VERSION"
exit 0
;;
--help|-h)
usage
exit 0
;;
-*)
echo "$PROG: $arg: unknown option" >&2
exit 1
esac
done
# check path to updates mirror
if [ ! -f $1/i586/base/release ]
then
echo "$PROG: no release file found. wrong path to updates/backports mirror?" >&2
exit 1
fi
# updates or backports
if grep -s -q "^Description: Not Available" $1/i586/base/release
then
DESCRIPTION="ALT Linux $(basename $1) backports"
else
DESCRIPTION="$(grep ^Description: $1/i586/base/release | sed 's/^Description: //')"
fi
# some vars
DATE="$(grep ^Date: $1/i586/base/release | cut -d" " -f3,4,5 | tr " " .)"
DESCRIPRION_PLUS_DATE="$DESCRIPTION ($DATE)"
ISO_IMAGE="$(echo "$DESCRIPTION-$DATE.iso" | tr [:upper:] [:lower:] | tr " " _)"
# display what we are going to do
echo " >>>"
echo " >>> creating \"$DESCRIPRION_PLUS_DATE\" iso"
echo " >>>"
# create temporary .disk/info and README.txt files
TMP_DIR="$(mktemp -d)"
mkdir $TMP_DIR/.disk/
cat <<EOF >$TMP_DIR/.disk/info
$DESCRIPRION_PLUS_DATE
EOF
cat <<EOF >$TMP_DIR/README.txt
$DESCRIPRION_PLUS_DATE
To add this disk do as root:
apt-cdrom add
EOF
# set publisher and preparer for mkisofs
if [ -z "$PUBLISHER" ]
then
PUBLISHER="$(whoami)"
fi
PREPARER="$PUBLISHER"
# create iso image
makeiso() {
mkisofs -J -r -volid "$DESCRIPTION" \
--publisher $PUBLISHER \
--preparer $PREPARER \
--iso-level=4 --joliet-long \
-o $ISO_IMAGE \
$TMP_DIR \
$1
}
# display result
if makeiso $1
then
rm -r -f $TMP_DIR
echo " >>>"
echo " >>> \"$DESCRIPRION_PLUS_DATE\" ISO gotov!"
echo " >>> file: $ISO_IMAGE"
echo " >>>"
else
rm -r -f $TMP_DIR
echo "$PROG: creating \"$DESCRIPRION_PLUS_DATE\" ISO failed!"
exit 1
fi
exit 0
Применять так: updates2iso.sh /путь/к/зеркалу/
