APT в ALT Linux/IsoFromRepository: различия между версиями

Материал из ALT Linux Wiki
м Apt/IsoFromRepository» переименована в «APT в ALT Linux/IsoFromRepository»)
 
(не показаны 4 промежуточные версии 3 участников)
Строка 1: Строка 1:
{{MovedFromFreesourceInfo|AltLinux/Apt/IsoFromRepository}}
== Создание образа CD/DVD-диска из локального репозитория ==
== Создание образа CD/DVD-диска из локального репозитория ==


Структура диска с репозиторием, который можно подключить с помощью команды <tt>apt-cdrom</tt>, достаточно проста:
Структура диска с репозиторием, который можно подключить с помощью команды <tt>apt-cdrom</tt>, достаточно проста:


<pre>.disk/
.disk/
    info <- файл с информацией о диске.
    info <- файл с информацией о диске.
ALTLinux/ <- репозиторий
ALTLinux/ <- репозиторий
    base/
    base/
    RPMS...
    RPMS...
    SRPMS...
    SRPMS...
    ...</pre>
    ...


Канонический вариант создания таких дисков - утилита <tt>distribute</tt> из одноимённого пакета (см. [[Apt/Sisyphus/Tools/Distribute|документацию]]).
Канонический вариант создания таких дисков - утилита <tt>distribute</tt> из одноимённого пакета (см. [[Tools/Distribute|документацию]]).


Для простых случаев можно использовать нижеприведённый скрипт, который создаёт iso-файл из локального репозитория (изначально предназначался для создания образов репозиториев updates и backports, и поэтому может требовать небольшого приложения напильника в других случаях).
Для простых случаев можно использовать нижеприведённый скрипт, который создаёт iso-файл из локального репозитория (изначально предназначался для создания образов репозиториев updates и backports, и поэтому может требовать небольшого приложения напильника в других случаях).
Строка 137: Строка 135:
Применять так:
Применять так:
<tt>updates2iso.sh /путь/к/зеркалу/</tt>
<tt>updates2iso.sh /путь/к/зеркалу/</tt>
{{Category navigation|title=APT|category=APT|sortkey={{SUBPAGENAME}}}}

Текущая версия от 16:58, 23 января 2011

Создание образа 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 /путь/к/зеркалу/