Возможно вы искали: 'Hokuto de Bon'

May 15 2025 19:12:22
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Создание apt репозитория на дистрибутивном диске SuSE. (suse linux apt rpm)

Создание apt репозитория на дистрибутивном диске SuSE. (suse linux apt rpm)

Ключевые слова: suse, linux, apt, rpm, (найти похожие документы)

From: Алексей Барабанов <alekseybb@mail.ru.>
Newsgroups: http://www.barabanov.ru/
Date: Mon, 12 Jun 2005 18:21:07 +0000 (UTC)
Subject: Создание apt репозитория на дистрибутивном диске SuSE.

Оригинал: http://www.barabanov.ru/arts/how-to-prepare-suse-apt-cd.html

Краткое руководство по созданию apt репозитория на дистрибутивном диске SuSE.

Целью является создание структур apt-индексов на дистрибутивном диске
SuSE Linux. После такой перестройки диском можно пользоваться как
источником обновлений через apt-клиента.

Поскольку дистрибутивный диск представляет собой носитель, доступный
только по чтению, то для модификации его надо буквально пересобрать
заново. Для этого придется сначала скопировать содержимое диска во
временную рабочую директорию на локальном диске. Произвести построение
индексов пакетов. И создать имидж дистрибутивного диска заново. Такие
построения потребуют резервирования рабочего пространства на локальной
файловой системе.

Далее предположим, что все действия производятся в отношении
дистрибутивного dvd от SuSE Linux 9.1. Размер исходного диска почти
4G. Соответственно для работы понадобиться 8G суммарного свободного
пространства, 4G для рабочей директории и 4G для имиджа с результатом,
в том случае, если в качестве исходного диска будет использован dvd, а
не его заранее скопированный имидж. Если же предполагается подобную
сборку выполнять неоднократно, например, производя всякого рода
попутные модификации, то предварительное копирование диска в образ
сильно ускорит процесс пересборки, но потребует для своего размещения
дополнительно еще 4G, т.е. уже всего 12G.

Загрузка и настройка apt.

1. Загрузим пакеты apt.

# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/lua-5.0.2-rb1.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/apt-libs-0.5.15cnc6-rb1.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/apt-0.5.15cnc6-rb1.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/perl-XML-LibXML-Common-0.12-rb1.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/perl-XML-NamespaceSupport-1.08-rb1.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/perl-XML-SAX-0.12-rb2.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/gdome2-0.7.4-rb1.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/perl-XML-GDOME-0.82-rb1.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/perl-XML-LibXML-1.56-rb1.i586.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/apt4rpm-0.67-0.noarch.rpm
# wget ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/9.0/apt-server-0.5.15cnc6-rb1.i586.rpm


Если указанным источником воспользоваться не удается, то
можно поискать новый через RPM Search (http://rpm.pbone.net/).

2. Установим и настроим.

Если загрузка производилась в выделенную директорию и есть
уверенность, что там более нет других rpm, то установить все
пакеты можно одной командой :

# rpm -ivh *.rpm


В противном случае устанавливать надо поочередно в порядке
загрузки или указать все пакеты в одной командной строке.
Поскольку скрипт пересборки использует собственный
конфигурационный файл, то никакой дополнительной настройки
сервера apt не потребуется.


Настройка скрипта для пересборки диска.

Программа (http://www.barabanov.ru/proj/rebuildsusedvd), выполняющая
параметрическую пересборку дистрибутивных дисков, сложна в работе
и во многом несовершенна.

Энтузиасты могут разобраться самостоятельно. Здесь же для
указанного конкретного дистрибутивного диска воспользуемся dryrun
прогоном одной из версий этой программы, т.е. готовым
компилянтом (http://www.barabanov.ru/arts/susedvd2apt).

В начале скрипта расположена секция параметров. Их надо будет
скорректировать согласно требованиям рабочей среды.

1. WTMP="/workingtemporaryplace/mkaptcd-12076"
Переменная WTMP используется далее как имя временной
директории, в которую будет скопировано содержимое
дистрибутивного диска для построения индексов apt. При
настройке этой переменной следует помнить, что объем
размещенных данных предположительно близок к 4G, и после
создания имиджа скрипт уничтожает эту директорию.

2. OSRC="/dev/sr0"
Здесь надо указать устройство, соответствующее приводу dvd, в
котором размещен оригинальный дистрибутивный диск. Если
используется заранее скопированный образ диска, то
рассматриваемую переменную надо проинициализировать примерно
так :
OSRC="-o loop /originaliso/s91.iso"

3. TISO="/targetiso/s91.iso"
В переменной TIOS следует указать место размещения и название
создаваемого образа диска с apt-репозиторием. Здесь тоже не
следует забывать об объеме такого iso-имиджа, в
рассматриваемом случае 4G.


Прогон скрипта и пересборка dvd.

Модифицированный скрипт запускается на выполнение с теми правами,
которые позволяют выполнять монтирование нужных устройств и писать
в рабочие директории.

После копирования содержимого дистрибутивного диска и перед
запуском построителя apt-репозитория скрипт возьмет паузу в работе
и предложит подтвердить продолжение нажатием Enter на клавиатуре.
Можно использовать такую паузу для того, чтобы произвести
дополнительные действия с содержимым дистрибутивного диска.

Например, можно обновить версии исходных пакетов, доложить
дополнительные пакеты, или даже разместить там собственную
директорию с rpm, что позволит далее, после соответствующей
модификации создаваемого aptate.conf - нужно будет добавить
описания для новых компонентов или дистрибуций - сделать
доступными эти rpm в dvd-репозитории через apt.

В последней фазе, после нажатия Enter, происходит построение
индексов пакетов, найденных в корневой директории создаваемого
iso, согласно конфигурации apt-репозитория, записанной в
apt/aptate.conf, и, наконец, генерация полученного имиджа нового
диска. Все парметры mkisofs взяты с конкретного диска SuSE Linux.
Их можно модифицировать по усмотрению.

Полученный в результате работы скрипта susedvd2apt имидж диска записывается на
носитель и используется как обычный установочный диск, так и в
качестве apt-диска.

Вопросы записи полученного образа на dvd носитель не входят в перечень
проблем, рассматриваемых в этом очень кратком руководстве.


Скрипт rebuildsusedvd


#!/bin/sh
#
# Rebuild SuSE DVD, ver. 1.1.1
#
# May-Dec 2004, Aleksey Barabanov <alekseybb@mail.ru.>
# Jan 2005, fix relative path to directories
# Mar 2005, smal fix, thnx Yashar Aslanov <yashar_2003@mail.ru.>
#
# todo
# 1. ImageMagic++ problem ;)
#
# ##################################################### setup

VER="ver. 1.1.1"
PGM=`basename $0`
DEBUG=""
NOCLEAN=""
NOAPTATE=""
NOFRESH=""
DRYRUN=""
PAUSE=""
BOOTABLE=""

# updates dir
UPDATES=""
# linuxrc info file
INFOFILE=""
# working dir
TMP="/tmp"
# mount point
DMNT=/mnt
# devices
CDDEV="/dev/sr0"
NULL=/dev/null
ZERO=/dev/zero

# misc
HOME=`pwd`

# ##################################################### get options

CDAPP="SuSE-Linux-DVD-9.2#0"
CDVOL="SU920.001"
#CDPUB="SuSE DVD remake"
CDPUB="SuSE Linux AG, suse@suse.de"
#CDPRE="RebuildSuSEDVD 1.1.1"
CDPRE="CD-Team, http://www.suse.de/feedback"
CDSYS="LINUX"
CTYME=`date +"%Y%m%d%H%M%S"`

usage()
{
cat <<EOT

Rebuild SuSE DVD, $VER

Usage: $PGM [options] target.iso

Options:
--boot
Force make boot record in iso.
--cdapp <application_id>
ISO header application ID
--cdvol <volume_id>
ISO header volume ID
--cdpub <publicher_id>
ISO header publisher ID
--cdpre <preparer_id>
ISO header preparer ID
--comp <compname>
Use as component base name for repository. Default original.
--compile
Make command list insted executing.
--debug
Make verbose output.
--dev <devname>
Use devname as cd-drive device. Default /dev/sr0.
--iso <filename>
Use filename as original iso image.
--linuxrc <infofile>
Add <infofile> to loadable initrd.
--mount <dirname>
Use dirname as mount point. Default /mnt.
--noaptate
Dont create APT package index.
--noclean
Dont remove temporary files.
--nofresh
Dont recreate SuSE DVD indexes.
--pause
Make pause after copying before building.
--source <dirname>
Use dirname as root of iso repository.
--tmp <dirname>
Use dirname for temporary files. Default /tmp.
--updates <dirlist>
Made autoupdate from list of directories where placed lates packages.

EOT
}

#
OISO=""
TREP=""
TISO=""
CNAME="original"
DVER="9.2"
DNAM="SUSE"

while [ $# -gt 0 ] ; do
case $1 in
--noclean)
NOCLEAN="1"
;;
--noaptate)
NOAPTATE="1"
;;
--nofresh)
NOFRESH="1"
;;
--compile)
DRYRUN="1"
;;
--pause)
PAUSE="1"
;;
--debug)
DEBUG="1"
;;
--boot)
BOOTABLE="1"
;;
--iso)
shift
OISO=$1
;;
--source)
shift
TREP=$1
;;
--tmp)
shift
TMP=$1
;;
--mount)
shift
DMNT=$1
;;
--dev)
shift
CDDEV=$1
;;
--comp)
shift
CNAME=$1
;;
--updates)
shift
UPDATES=$1
;;
--linuxrc)
shift
INFOFILE=$1
;;
--cdapp)
shift
CDAPP=$1
;;
--cdvol)
shift
CDVOL=$1
;;
--cdpub)
shift
CDPUB=$1
;;
--cdpre)
shift
CDPRE=$1
;;
--*)
echo -e "Bad option "$1"."
usage
exit 1
;;
-*)
echo -e "Bad option "$1"."
usage
exit 1
;;
*)
TISO=$1
;;
esac
shift
done

WTMP=$TMP/$PGM-$$
OINFO=$TMP/$PGM-info-$$
ITMP=$TMP/$PGM-initrd-$$
[ -z "$TREP" ] || {
WTMP="$TREP"
[ -z "$OISO" ] || {
echo -e "You must use ISO or Repository. Abort"
usage
exit 1
}
}

[ -n "$DEBUG" ] && [ -z "$DRYRUN" ] && {
echo -en "Tmptt" ; echo "==$TMP=="
echo -en "ISOtt" ; echo "==$OISO=="
echo -en "CDDEVtt" ; echo "==$CDDEV=="
echo -en "DMNTtt" ; echo "==$DMNT=="
echo -en "Targettt" ; echo "==$TISO=="
echo -en "Component namet" ; echo "==$CNAME=="
echo -en "Updatestt" ; echo "==$UPDATES=="
}

[ "$TISO" == "" ] && {
echo -e "Target ISO must applayed. Abort"
usage
exit 1
}

# off nofresh if use autoupdates
[ -n "$UPDATES" ] && NOFRESH=""

# set noclean if use "source"
[ -n "$TREP" ] && NOCLEAN="1"

# ##################################################### setup environment

# utilities
CD=cd
READ=read
ERRMES=""
DD=`which dd` || ERRMES=dd
GREP=`which grep` || ERRMES=grep
CAT=`which cat` || ERRMES=cat
RM=`which rm` || ERRMES=rm
MKDIR=`which mkdir` || ERRMES=mkdir
ECHO=`which echo` || ERRMES=echo
MOUNT=`which mount` || ERRMES=mount
UMOUNT=`which umount` || ERRMES=umount
KILL=`which kill` || ERRMES=kill
CP=`which cp` || ERRMES=cp
FIND=`which find` || ERRMES=find
LN=`which ln` || ERRMES=ln
AWK=`which awk` || ERRMES=awk
SED=`which sed` || ERRMES=sed
STAT=`which stat` || ERRMES=stat
MKISO=`which mkisofs` || ERRMES=mkisofs
MD5=`which md5sum` || ERRMES=md5sum
LS=`which ls` || ERRMES=ls
GZIP=`which gzip` || ERRMES=gzip
ZCAT=`which zcat` || ERRMES=zcat
FILE=`which file` || ERRMES=file
MV=`which mv` || ERRMES=mv
CPDESCR=`which create_package_descr` || ERRMES=create_package_descr

# only for apt-disk
APTATE=`which aptate` || {
[ "$NOAPTATE" != "" ] && ERRMES=aptate
}

if [ "$ERRMES" != "" ]; then
echo -e "Not found "$ERRMES". Abort"
exit 1
fi

oWTMP=$WTMP
oHOME=$HOME
oUPDATES=$UPDATES
oFIND=$FIND
oCD=$CD
oCAT=$CAT
oSED=$SED
oAWK=$AWK
oECHO=$ECHO
oSTAT=$STAT

[ -z "$TREP" ] && {
# ##################################################### get vars from original iso

# choose original source
i="$CDDEV" ; [ -n "$OISO" ] && i="$OISO"

# Read the entire header - actually sector 16 of the disc (2K sectors)
# All character codes in the "control" region (0-31 decimal) are folded
# into the character '.' - these control codes seem to upset bash's
# variable sub-string functions (${var:start:length}) quite badly )-:
$DD if=$i bs=1 skip=32768 count=2048 >$OINFO 2>/dev/null
if [ $? -ne 0 ] ; then
$RM -rf $OINFO
$ECHO "Error: unable to open "$i". Abort"
exit 1
fi
data=`$CAT $OINFO |tr '[\000-\037]' '.*'`
$RM -rf $OINFO

# Define some useful functions for prettifying the output
tidy_print()
{
# Really cheap way of folding whitespace
echo $*
}

[ "${data:1:5}" == "CD001" ] && {
CDVOL=`tidy_print ${data:40:32}`
CDPUB=`tidy_print ${data:318:128}`
CDPRE=`tidy_print ${data:446:128}`
CDAPP=`tidy_print ${data:574:128}`
CDSYS=`tidy_print ${data:8:32}`
}

[ -n "$DEBUG" ] && [ -z "$DRYRUN" ] && {
echo -en "SysIDtt" ; echo "==$CDSYS=="
echo -en "VolNAMEtt" ; echo "==$CDVOL=="
echo -en "PublisherIDt" ; echo "==$CDPUB=="
echo -en "PreparerIDt" ; echo "==$CDPRE=="
echo -en "ApplicationIDt" ; echo "==$CDAPP=="
}
}

# ##################################################### setup compiler

do_cat()
{
T=$1
[ ! -t 0 ] && {
if [ -n "$DRYRUN" ] ; then
## compile
echo "cat >>$T <<EOT"
cat
echo EOT
else
## run
cat >>$T
fi
}
}
SCAT=do_cat

# choose original source
OSRC="$CDDEV" ; [ -n "$OISO" ] && OSRC="-o loop $OISO"
#

[ -n "$DRYRUN" ] && {
echo -e "#!/bin/shn# Rebuild SuSE DVD, $VER"
echo -e "# compiled at `date`n#-----------------------"
echo -e "WTMP="$WTMP""
WTMP="$WTMP"
echo -e "ITMP="$ITMP""
ITMP="$ITMP"
echo -e "OSRC="$OSRC""
OSRC="$OSRC"
echo -e "TISO="$TISO""
TISO="$TISO"
# [ -z "$UPDATES" ] || {
# echo -e "UPDATES="$UPDATES""
# UPDATES="$UPDATES"
# }
[ -n "$INFOFILE" ] && {
echo -e "INFOFILE="$INFOFILE""
INFOFILE="$INFOFILE"
}
echo -e "HOME=`pwd`"
HOME="$HOME"
DD="echo $DD"
LO="echo $LO"
MKDIR="echo $MKDIR"
MOUNT="echo $MOUNT"
CP="echo $CP"
CD="echo $CD"
ECHO="echo -e $ECHO"
CAT="echo $CAT"
UMOUNT="echo $UMOUNT"
MKISO="echo -e $MKISO"
RM="echo $RM"
AWK="echo $AWK"
LN="echo $LN"
APTATE="echo $APTATE"
READ="echo $READ"
CPDESCR="echo $CPDESCR"
FIND="echo $FIND"
LS="echo $LS"
GZIP="echo $GZIP"
MV="echo $MV"
MD5="echo $MD5"
}

# ##################################################### some magic passes
# cleaning up temporary resources
cleanup()
{
[ -n "$NOCLEAN" ] || {
$ECHO "Cleaning up."
$MOUNT | $GREP "on $DMNT" >$NULL && { $ECHO "Unmount image"; $UMOUNT $DMNT; }
[ -z "$TREP" ] && {
( [ -n "$DRYRUN" ] || [ -d $WTMP ] ) && $RM -rf $WTMP
}
( [ -n "$DRYRUN" ] || [ -d $ITMP ] ) && $RM -rf $ITMP
}
}

# make trap for clean
after_error()
{
cleanup
$ECHO "Abort."
exit 1
}
[ -n "$DRYRUN" ] || trap after_error 1 2 3 15

if [ -z "$TREP" ] ; then
# ##################################################### copy cd files
[ -n "$DEBUG" ] && [ -z "$DRYRUN" ] && $ECHO "=======copy cd files========"

#
$MOUNT -t iso9660 $OSRC $DMNT || { echo "Error: cant mount "$i""; $KILL -INT $$;}
[ -d $WTMP ] && $RM -rf $WTMP
$MKDIR -p $WTMP || { $ECHO -e "Error: cant make "$WTMP""; $KILL -INT $$;}
$CD $HOME
$CD $DMNT
i="" ; [ -n "$DEBUG" ] && i="v"
$CP -ax$i . $WTMP || { $ECHO -e "Error: cant copy files"; $KILL -INT $$;}
$CD $HOME
$UMOUNT $DMNT
else
# ##################################################### some fixes

$oCD $oHOME
for i in 2 3 4 5 ; do
[ -d $oWTMP/media.$i ] && $RM -rf $WTMP/media.$i
done

$oCD $oHOME
[ -r $oWTMP/media.1/media ] && {
L1=`$oCAT $oWTMP/media.1/media | $oSED -n '1p'`
L2=`$oCAT $oWTMP/media.1/media | $oSED -n '2p'`
if [ -z "$DRYRUN" ] ; then
$ECHO "$L1" >$WTMP/media.1/media
$ECHO "$L2" >>$WTMP/media.1/media
$ECHO "1" >>$WTMP/media.1/media
else
$ECHO "$L1" >$WTMP/media.1/media
$ECHO "$L2" >>$WTMP/media.1/media
$ECHO "1" >>$WTMP/media.1/media
fi
}

fi

# force suse/i386
$oCD $oHOME
[ -d $oWTMP/suse/i386 ] || {
$CD $HOME
$MKDIR -p $WTMP/suse/i386 || { $ECHO -e "Error: cant make "$WTMP/suse/i386""; $KILL -INT $$;}
}

# force media.1
$oCD $oHOME
[ -d $oWTMP/media.1 ] || {
$CD $HOME
$MKDIR -p $WTMP/media.1 || { $ECHO -e "Error: cant make "$WTMP/media.1""; $KILL -INT $$;}
}

# force media.1/media
$oCD $oHOME
[ -r $oWTMP/media.1/media ] || {
$CD $HOME
if [ -z "$DRYRUN" ] ; then
$ECHO "$CDPUB" > $WTMP/media.1/media || { $ECHO -e "Error: cant write to "$WTMP/media.1/media""; $KILL -INT $$;}
$ECHO "$CTYME" >> $WTMP/media.1/media || { $ECHO -e "Error: cant write to "$WTMP/media.1/media""; $KILL -INT $$;}
$ECHO "1" >> $WTMP/media.1/media || { $ECHO -e "Error: cant write to "$WTMP/media.1/media""; $KILL -INT $$;}
else
$ECHO ""$CDPUB"" > $WTMP/media.1/media
$ECHO ""$CTYME"" >> $WTMP/media.1/media
$ECHO ""1"" >> $WTMP/media.1/media
fi
}

# force media.1/products
$oCD $oHOME
[ -r $oWTMP/media.1/products ] || {
$CD $HOME
if [ -z "$DRYRUN" ] ; then
$ECHO "/ $CDAPP" > $WTMP/media.1/products || { $ECHO -e "Error: cant write to "$WTMP/media.1/media""; $KILL -INT $$;}
else
$ECHO ""/ $CDAPP"" > $WTMP/media.1/products
fi
}

# ##################################################### setup repository

# suse specific tuning
[ -z "$DRYRUN" ] && [ -r $WTMP/content ] && {
DVER=`$CAT $WTMP/content | $GREP -i ^version | $AWK '{print $2}'`
DNAM=`$CAT $WTMP/content | $GREP -i ^product | $AWK '{print $2}'`
}

[ -z "$NOAPTATE" ] && {

[ -n "$DEBUG" ] && [ -z "$DRYRUN" ] && $ECHO "=======setup repository========"

# make apt configuration
$MKDIR -p $WTMP/apt || { $ECHO -e "Error: cant make "$WTMP/apt""; $KILL -INT $$;}
$SCAT $WTMP/apt/aptate.conf <<EOT
<?xml version='1.0' encoding="iso-8859-1"?>
<!DOCTYPE opt SYSTEM "/usr/share/apt4rpm/aptate.dtd">
<opt security-component="no" flat="yes" bloat="yes">
<topdir>$WTMP</topdir>
<distribution id="$DNAM-$CNAME" structure="2">
<name>$DNAM</name>
<version>$DVER</version>
<architecture>i586</architecture>
<component active="yes">
<name>$CNAME-i586</name>
<url>suse/i586</url>
</component>
<component active="yes">
<name>$CNAME-noarch</name>
<url>suse/noarch</url>
</component>
</distribution>
</opt>
EOT
}

# ##################################################### autoupdates
[ -z "$oUPDATES" ] || {

[ -n "$DEBUG" ] && $ECHO "=======autoupdates========"

v="" ; [ -n "$DEBUG" ] && v="-v"

for UPDATES in $oUPDATES ; do
##################################################### updatelist

ooUPDATES=$UPDATES

[ -n "$DRYRUN" ] && {
[ -z "$UPDATES" ] || {
echo -e "UPDATES="$UPDATES""
UPDATES="$UPDATES"
}
}

# updates list, full path $ooUPDATES/$i
## LUPD=`$oFIND $ooUPDATES -regex ".*(noarch|i586).rpm$" -printf "%Pn"`
LUPD=`$oFIND $ooUPDATES -regex ".*(noarch|i586|i386).rpm$" -printf "%Pn"`

for i in $LUPD ; do
# get leader part of basename
bi=`basename $i | $oAWK -F. '{print $1}'`
# find package with equal leader part, full path $oWTMP/suse/$oi
## cbi="$oFIND $oWTMP/suse -regex ".*/$bi.*(noarch|i586).rpm$" -printf "%P\n""
cbi="$oFIND $oWTMP/suse -regex ".*/$bi.[a-z0-9A-Z].*(noarch|i586|i386).rpm$" -printf "%P\n""
oi=`eval $cbi`
# and get first
oi1=`$oECHO "$oi" | $oAWK '{print $1}'`
if [ "$oi1" != "" ] ; then
# compare package age
if [ "`$oSTAT -c "%Y" $ooUPDATES/$i`" -gt "`$oSTAT -c "%Y" $oWTMP/suse/$oi1`" ] ; then
# copy update
if [ -z "$DRYRUN" ] ; then
$CP $v $ooUPDATES/$i $oWTMP/suse/`dirname $oi` || { $ECHO -e "Error: cant copy "$i""; $KILL -INT $$;}
$RM $v -f $oWTMP/suse/$oi || { $ECHO -e "Error: cant erase "$oi""; $KILL -INT $$;}
else
$CP $v $UPDATES/$i $WTMP/suse/`dirname $oi`
$RM $v -f $WTMP/suse/$oi
fi
fi
else
if [ -z "$DRYRUN" ] ; then
$CP $v $ooUPDATES/$i $oWTMP/suse/`dirname $i` || { $ECHO -e "Error: cant copy "$i""; $KILL -INT $$;}
else
$CP $v $UPDATES/$i $WTMP/suse/`dirname $i`
fi
fi
done

#####################################################
done

} # UPDATES

# ##################################################### unzip initrd, add info

FST=""

[ -n "$INFOFILE" ] && {
[ -n "$DEBUG" ] && [ -z "$DRYRUN" ] && $ECHO "=======unzip initrd, add info========"

$MKDIR -p $ITMP || { $ECHO -e "Error: cant make "$ITMP"" ; $KILL -INT $$; }

if [ -n "$DRYRUN" ] ; then
echo "$ZCAT $WTMP/boot/loader/initrd >$ITMP/initrd"
else
$ZCAT $WTMP/boot/loader/initrd >$ITMP/initrd || { $ECHO "Error: cant unzip initrd" ; $KILL -INT $$; }
fi

if [ -z "$DRYRUN" ] ; then
i=`$FILE $ITMP/initrd`
FST=""
[ -n "`$ECHO "$i" | $GREP Minix`" ] && FST="minix"
[ -n "`$ECHO "$i" | $GREP ext2`" ] && FST="ext2"
else
# default Minix
FST="minix"
fi

[ -n $FST ] && {
$MOUNT -o loop,rw -t $FST $ITMP/initrd $DMNT || { $ECHO "Error: cant moun initrd" ; $KILL -INT $$; }
$CP $INFOFILE $DMNT/info || { $ECHO -e "Error: cant copy "$INFOFILE"" ; $KILL -INT $$; }
}

}

# ##################################################### pause

[ -n "$PAUSE" ] && {
$ECHO -e "ISO Root ready for modification. Press "Enter" for continue."
$READ j
}

# ##################################################### zip initrd

[ -n "$INFOFILE" ] && {
[ -n "$DEBUG" ] && [ -z "$DRYRUN" ] && $ECHO "=======zip initrd========"

[ -n $FST ] && {
$UMOUNT $DMNT || { $ECHO -e "Error: cant umount "$DMNT"" ; $KILL -INT $$; }
}
$GZIP -9 $ITMP/initrd || { $ECHO "Error: cant zip initrd" ; $KILL -INT $$; }
$MV -f $ITMP/initrd.gz $WTMP/boot/loader/initrd || { $ECHO "Error: cant return initrd" ; $KILL -INT $$; }
$RM -rf $ITMP || { $ECHO -e "Error: cant remove "$ITMP"" ; $KILL -INT $$; }

}

# ##################################################### fresh SuSE DVD indexes
[ -z "$NOFRESH" ] && {
[ -n "$DEBUG" ] && [ -z "$DRYRUN" ] && $ECHO "=======fresh SuSE DVD indexes========"

# ################################################## remove old indexes

MD5DIR=`$oCD $oHOME ; $oCD $oWTMP ; $oFIND suse -name MD5SUMS`
for i in $MD5DIR ; do
if [ -z "$DRYRUN" ] ; then
$RM -f $WTMP/$i || { $ECHO "Error: cant remove MD5SUMS" ; $KILL -INT $$; }
else
$RM -f $WTMP/$i
fi
done

# ################################################## create new indexes

# create package index
$CD $HOME
$CD $WTMP/suse
if [ -r $oWTMP/suse/setup/descr/EXTRA_PROV ] ; then
i="-x $WTMP/suse/setup/descr/EXTRA_PROV"
$CPDESCR -l czech -l english -l french -l german -l italian -l spanish -l hungarian $i
|| { $ECHO "Error: cant make package index" ; $KILL -INT $$; }
else
# if EXTRA_PROV is needed but it not found - ABORT!
$oECHO "Error: cant find EXTRA_PROV"
$KILL -INT $$;
fi

# create directory.yast
LDIR=`$oCD $oHOME ; $oCD $oWTMP ; $oFIND . -name directory.yast`
for i in $LDIR ; do
if [ -z "$DRYRUN" ] ; then
$CD $HOME
$CD $WTMP/`dirname $i` || { $ECHO "Error: cant walk to "`dirname $i`"" ; $KILL -INT $$; }
$RM -f directory.yast || { $ECHO "Error: cant remove directory.yast" ; $KILL -INT $$; }
$LS -A > directory.yast || { $ECHO "Error: cant make directory.yast" ; $KILL -INT $$; }
else
$CD $HOME
$CD $WTMP/`dirname $i`
$RM -f directory.yast
$LS -A > directory.yast
fi
done

# force directory.yast
$oCD $oHOME
[ -r $oWTMP/directory.yast ] || {
$CD $WTMP
if [ -z "$DRYRUN" ] ; then
$LS -A > directory.yast || { $ECHO "Error: cant make directory.yast" ; $KILL -INT $$; }
else
$LS -A > directory.yast
fi
}
$oCD $oHOME
[ -r $oWTMP/media.1/directory.yast ] || {
$CD $WTMP/media.1
if [ -z "$DRYRUN" ] ; then
$LS -A > directory.yast || { $ECHO "Error: cant make directory.yast" ; $KILL -INT $$; }
else
$LS -A > directory.yast
fi
}

# create main indexes
if [ -z "$DRYRUN" ] ; then
$CD $HOME
$CD $WTMP
$RM -f INDEX.gz ls-lR.gz || { $ECHO "Error: cant remove INDEX.gz ls-lR.gz" ; $KILL -INT $$; }
#
{ unset LANG
$LS -lR >ls-lR || { $ECHO "Error: cant make ls-lR" ; $KILL -INT $$; }
}
$GZIP ls-lR || { $ECHO "Error: cant zip ls-lR" ; $KILL -INT $$; }
#
$FIND . >INDEX || { $ECHO "Error: cant make INDEX" ; $KILL -INT $$; }
$GZIP INDEX || { $ECHO "Error: cant zip INDEX" ; $KILL -INT $$; }
else
$CD $HOME
$CD $WTMP
$RM -f INDEX.gz ls-lR.gz
#
$oECHO "{ unset LANG"
$LS -lR >ls-lR
$oECHO "}"
$GZIP ls-lR
#
$FIND . >INDEX
$GZIP INDEX
fi

# create md5sums
for i in $MD5DIR ; do
if [ -z "$DRYRUN" ] ; then
$CD $HOME
$CD $WTMP/`dirname $i` || { $ECHO -e "Error: cant walk to "`dirname $i`"" ; $KILL -INT $$; }
$MD5 * > MD5SUMS
else
$CD $HOME
$CD $WTMP/`dirname $i`
$MD5 * > MD5SUMS
fi
done
#=#
# force md5sums

$CD $HOME
} # !NOFRESH

# ##################################################### build apt indexes

[ -z "$NOAPTATE" ] && {
i="--quiet qq" ; [ -n "$DEBUG" ] && i="--debug"
$APTATE $i --config-file $WTMP/apt/aptate.conf || { $ECHO "Error: cant buil apt" ; $KILL -INT $$; }
}

# ##################################################### make iso image
[ -n "$DEBUG" ] && [ -z "$DRYRUN" ] && $ECHO "=======make iso image========"

ISOBOOT=""
# looking for isolinux
( [ -r $WTMP/boot/loader/isolinux.bin ] || [ -n "$BOOTABLE" ] ) && {
ISOBOOT="-no-emul-boot -boot-load-size 4 -boot-info-table -b boot/loader/isolinux.bin -c boot/boot.catalog"
ISOBOOT="$ISOBOOT -hide boot/boot.catalog -hide-joliet boot/boot.catalog"
}

# make iso
i="-quiet" ; [ -n "$DEBUG" ] && i="-v"
ISOOPT="$i -r -J -pad -allow-lowercase -allow-multidot -iso-level 3"

i="-A "$CDAPP" -V "$CDVOL" -P "$CDPUB" -p "$CDPRE" -sysid "$CDSYS" $ISOOPT -o $TISO $ISOBOOT $WTMP"
#=#
if [ -n "$DRYRUN" ] ; then
$MKISO $i
else
eval "$MKISO $i" || { $ECHO "Error: cant make iso" ; $KILL -INT $$; }
fi

# ##################################################### finish
[ -n "$DRYRUN" ] || trap 1 2 3 15
cleanup
$ECHO "Done."
exit
# ##################################################### done
# #####################################################




Скрипт susedvd2apt



#!/bin/sh
# Rebuild CD for APT, ver. 0.4.0
# compiled at Wed Jun 2 16:35:10 MSD 2004
#-----------------------
WTMP="/workingtemporaryplace/mkaptcd-12076"
OSRC="/dev/sr0"
TISO="/targetiso/s91.iso"
HOME=`pwd`
/bin/mount -t iso9660 $OSRC /mnt
/bin/mkdir -p $WTMP
cd /mnt
/bin/cp -axv . $WTMP
cd $HOME
/bin/umount /mnt
/bin/mkdir -p $WTMP/apt
cat >>$WTMP/apt/aptate.conf <<EOT
<?xml version='1.0' encoding="iso-8859-1"?>
<!DOCTYPE opt SYSTEM "/usr/share/apt4rpm/aptate.dtd">
<opt security-component="no" flat="yes" bloat="yes">
<topdir>$WTMP</topdir>
<distribution id="SUSE-original" structure="2">
<name>SUSE</name>
<version>9.1</version>
<architecture>i586</architecture>
<component active="yes">
<name>original-i586</name>
<url>suse/i586</url>
</component>
<component active="yes">
<name>original-noarch</name>
<url>suse/noarch</url>
</component>
</distribution>
</opt>
EOT
/bin/echo -e ISO Root ready for modification. Press "Enter" for continue.
read i
/usr/bin/aptate --config-file $WTMP/apt/aptate.conf
/usr/bin/mkisofs -A "SUSE-LINUX-DVD-i386-9.1#0" -V "SU910.001" -P "SuSE Linux AG, suse@suse.de" -p "CD-Team, http://www.suse.de/feedback" -sysid "LINUX" -v -r -J -pad -allow-lowercase -allow-multidot -iso-level 3 -o $TISO -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/loader/isolinux.bin -c boot/boot.catalog -hide boot/boot.catalog -hide-joliet boot/boot.catalog $WTMP
/bin/echo Cleaning up.
/bin/rm -rf $WTMP
/bin/echo Done.
1257 Прочтений •  [Создание apt репозитория на дистрибутивном диске SuSE. (suse linux apt rpm)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Создание apt репозитория на дистриб... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка