Возможно вы искали: 'Men of War'

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

Статей: 87772
Просмотров: 96161170
Игры
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] 18360
• Обзор The Walking ... 18804
• Обзор DMC: Devil M... 19880
• Обзор на игру Valk... 15878
• Обзор на игру Stars! 17765
• Обзор на Far Cry 3 17950
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17510
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16620
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14723
• Превью Firefall 13481
• Превью Dead Space 3 16335
• Превью о игре SimC... 14732
• Превью к игре Fuse 15443
• Превью Red Orche... 15542
• Превью Gothic 3 16347
• Превью Black & W... 17355
Главная » Статьи » Разное » Добавление CD дисков с RPM но без индексных файлов через apt-cdrom (apt rpm linux cdrom)

Добавление CD дисков с RPM но без индексных файлов через apt-cdrom (apt rpm linux cdrom)

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

From: Max Rembrov <Demimurych@mail.ru.>
Date: Mon, 17 Feb 2005 14:31:37 +0000 (UTC)
Subject: Добавление CD дисков с RPM но без индексных файлов через apt-cdrom

На OpenNet, по согласованию с автором статьи, публикуется переработанный вариант
документа http://www.netpeoples.ru/content.php?review.76


Что делать если apt-cdrom не хочет добавлять диск.


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

Описание принципов работы с APT выходит за рамки данной статьи,
подробнее см. документ http://www.linuxshare.ru/docs/distro/redhat/rh9/APT_RH809.html


Задача.

В apt есть утилита apt-cdrom, назначение которой добавлять в
репозитарии apt индексные файлы с CD, содержащих rpm пакеты, дабы
легко и просто, в случае если нужный пакет есть на CD, поставить его
оттуда. И опять же все наверняка в курсе что если CD создан без этих
индексных файлов, apt-cdrom сообщало, что таких файлов нет и
ничегошеньки добавлять не хотело. (А дистрибутивов созданных без
таких файлов множество - все RedHat-based например).

Решалась эта проблема двумя простыми способами - первый в ручную
переписать все свои CD и добавить туда индексные файлы, и второе -
просто создать репозитарий на жестком диске, куда и переписать пакеты
с CD. В силу моей бедности (как финансовой так и духовной) места на винте,
как и новых болванок, у меня нету, а потому я решил эту задачу другим
способом. И теперь apt принимает любые диски содержащие rpm пакеты.
Как это делается описано ниже.

Скрипт все делающий за меня.

Поздравляю Вас - такой скрипт есть. Проверялось все на apt версии
apt-0.5.15cnc6. Впрочем должно работать, в принципе, и на более ранних
версиях. Точнее даже так - работать будет везде где формат
sources.list совместим с данной версией.

- это apt пакет для третей федоры
http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/3/apt/apt-0.5.15cnc6-1.1.fc3.fr.i386.rpm
- это apt для второй.
http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/2/apt/apt-0.5.15cnc6-1.1.fc2.fr.i386.rpm


Стиль программирования у меня аховый - хотя небольшой бета тестинг,
на нескольких подопытных людях, не выявил серьезных проблем. Потому
пользуйтесь, а если найдете в себе силы поучить меня как можно было
сделать лучше - уж будьте любезны это сделать - я даже настаиваю.
Да - и если вдруг что то у Вас пошло не так - с подробностями
все ж таки ознакомиться придется. Ну и на всякий случай сделайте архивную
копию вашего /etc/apt/sources.list.

Скрипт можно скачать здесь
http://www.netpeoples.ru/files/downloads/aptfakecd.gz


Порядок действий вручную

Итак все пошагово.

Монтируем наш CD

[root@1CSERV apt]# mount /mnt/cdrom (Ну или /media/cdrom)


Определяемся с тем где у нас будет лежать кой-какая служебная
информация. (Я лично предпочел ее засунуть туда же где сам apt держит
свой кеш то есть /var/state/apt)

Создаем там директорию.

[root@1CSERV apt]# mkdir /var/state/apt/apt


Да - именно apt. Не знаю почему, некогда было разбираться, но apt уж
очень хочет чтобы репозитарии на CD лежали именно в папке apt - ну да
бог с ним.

Создаем в этой папке simlink именем RPMS.$name (где $name будет имя
репозитория - например Fedora_CD1) на CD где лежат rpm ки. То есть
если на примере той же fedora это так

[root@1CSERV apt]# ln -s /mnt/cdrom/RedHat/RPMS/ /var/state/apt/apt/RPMS.Fedora_CD1


Сгенерируем теперь индексы:

[root@1CSERV apt]# genbasedir --bloat --flat /var/state/apt/apt Fedora_CD1


В результате операции должна была появиться папка /var/state/apt/apt/base.
В которой создались индексные файлы.

Перенесем руками индексы в кеш apt:

[root@1CSERV apt]# mv /var/state/apt/apt/base/pkglist.Fedora_CD1
/var/state/apt/lists/Fedora%5fCD1_.._.._.._.._var_state_apt_apt_base_pkglist.Fedora%5fCD1
[root@1CSERV apt]# mv /var/state/apt/apt/base/release.Fedora_CD1
/var/state/apt/lists/Fedora%5fCD1_.._.._.._.._var_state_apt_apt_base_release.Fedora%5fCD1


Необходимые пояснения.

Обратите внимание на видоизменения названий.

Во первых все _ были преобразованы в %5f (Это же касается и пробелов -
их менять на %20)

Во вторых все / в названии файла были заменены на _

Зачем все это делает apt я могу только догадываться.

В третьих обратите внимание на то что было добавлено
.._.._.._.._(Зачем так и зачем столько станет ясно позднее. Хотя
наверняка шаманы уже стали догадываться)

Добавляем в /etc/apt/sources.list новый источник

echo "rpm cdrom:[Fedora_CD1]/ ../../../../var/state/apt/apt Fedora_CD1" >> /etc/apt/sources.list


Обратите внимание на два важных факта
Первый - кол-во ../../../../ должно четко совпадать с количеством
заданных ранее таких же краказяблов (см. пункт Перенесем
руками индексы в кеш apt:)

И второй - вообще все названия источника должно быть идентичным
кешевому файлу за исключением тех мутных преобразований / в _,
пробелов в %20 и т.д.

И последнее - необходимо добавить "ident key" вашего CD в APT

Делаем

[root@1CSERV apt]# apt-cdrom ident


Используется точка монтирования CD-ROM /mnt/cdrom/
Монтируется CD-ROM
Распознаётся.. [fcc8845cc52233baf7cbbb8c5fcff136-2]
Сохранённая метка: ''

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

Переписали ?

Набираем теперь строчку в /var/state/apt/cdroms.list

CD::fcc8845cc52233baf7cbbb8c5fcff136-2 "Fedora_CD1";


Набрали? (Хинт: Можно это было сделать не своими руками, а руками
секретарши)

После такой манипуляции если мы нигде не ошиблись при выдаче команды
update вы увидете нечто вроде:

[root@1CSERV apt]# apt-get update


Пропущено cdrom://Fedora_CD1 ../../../../var/state/apt/apt release
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено

Ну и для полного теста:

[root@1CSERV apt]# apt-get install epiphany


Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие НОВЫЕ пакеты будут установлены: epiphany
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 0B/1609kB архивов.
После распаковки потребуется дополнительно 4627kB дискового пространства.
Смена диска: Вставьте, пожалуйста, диск с меткой 'Fedora_CD1'
в устройство '/mnt/cdrom/' и нажмите .
Получено: 1 cdrom://Fedora_CD1 ../../../../../var/state/apt/apt/Fedora_CD1 epiphany 1.0.6-2 [1609kB]
Получено 1609kB за 12s (132kB/s).
Совершаем изменения...
Preparing... ########################################### [100%]
1:epiphany ########################################### [100%]
Done.

А что мне так и не объяснили что это за точечки ../../../../
Тому кто предпочитает не напрягаться поясню суть идеи.
Утилита apt-cdrom все что делает - это ищет по диску папочку apt,
берет оттуда индексы для репозитария, копирует их в кеш и добавляет в
сорц лист ссылку на папку откуда она взяла это все с CD. Более того
все пакеты должны лежать не просто в папочках а в папочках вида
RPMS.bla_bla_bla.

Нам необходимо решить было две задачи - первая это как то впихнуть ему
в кеш новые индексы нашего CD. И сделать так чтобы на
нашем CD появилась папка RPMS.bla_bla_bla (в тех же RedHat-ах папки с
RPM ками называются всегда RPMS. Понимаете не RPMS.bla_bla_bla, а
RPMS). RPMS.bla_bla_bla мы создали как сим-линк указывающий на RPMS на
CD. Поскольку касательно CD apt использует строки из сорцлиста таким
образом что /mnt/cdrom/ наш путь к пакету
то чтобы вернуться и попасть на наш сим линк - который лежит в
/var/state/apt/apt надо сделать /mnt/cdrom/../../var/state/apt/apt

Вот зачем эти точечки.

Наблюдательные спросят - а зачем делать ../../../../ если
достаточно было ../../ ?

А я отвечу, что хоть я и беден духом, но щедр душой потому мне точечек
не жалко.

Ну вот вобщем то и все.

Все эти операции (и некоторые другие полезности) делает мой скрипт - и
точечки считает почти правильно.


Заключение

В перспективе сделать скрипт, который был бы врапером между
оригинальным apt-cdrom и моим монстром. В самого монстра добавить
опцию автосканирования. Нужно это мне затем чтобы из synaptic (фронт
енд для apt) можно было мышкой CD добавлять.


Благодарности

Большое спасибо всем тем людям которые поддерживали меня и наставляли
на пути к просветлению.

Виктор Вислобоков - за его статью о apt и synaptice которая
мне очень, в свое время, помогла.
Randy - бессменного бета тестера и главного редактора моих
изышлизмов.
bloody - за координацию моих действий и помощь.



#!/bin/sh
#
# $Id: apt-fake-cdrom,v 0.01 2005/02/04 22:48:37
#
# This script tries to add your non apt-based CDROM (RedHat like etc...) into apt repository
# http://www.netpeoples.ru/files/downloads/aptfakecd.gz
#
#


usage="

This buggy script tries to add your non apt-based CDROM (RedHat like etc...) into apt repository
v 0.01pre Alfa (C)opyright by Demimurych demimurych@mail.ru. 2005.

Usage: apt-fakecd --name= --path= [--aptstate=] [--data=]n

Options:n
--name Name for CD n
--aptstate Path to apt state directory. Default /var/state/apt
--data Path to folder where apt-fakecd puts our data. Default: data=aptstate/apt n
--path Path to folder on CDROM where are RPMS placedn
-h, --help Display this helpn
n
Examples:n
n
apt-fakecd --name=Fedora_CD2 --path=/mnt/cdrom/RedHat/RPMS/n
apt-fakecd --name=ASP_CD1 --path=/media/cdrom/ASPLinux/RPMS/n
n

"




# bloat is necessary for non-Conectiva distros, at least RH,
# because they use file dependencies with a non-predictable
# heuristic. So we can't strip-off paths that will probably
# never appear in dependencies.
if [ -z "$*" ]; then
echo -e "$usage" 1>&2
exit 1
fi


if [ "$UID" -ne 0 ]
then
echo "Need root "
exit 1
fi

bloat=""
name=
data=
path=
aptstate=
while test $# -gt 0 ; do
case "$1" in
-h | --help)
echo -e "$usage"
exit 0
;;

--name=*)
name=`echo $1 | sed 's/^--name=//'`
;;
--data=*)
data=`echo $1 | sed 's/^--data=//'`
;;
--path=*)
path=`echo $1 | sed 's/^--path=//'`
;;
--aptstate=*)
path=`echo $1 | sed 's/^--aptstate=//'`
;;
-*)
echo -e "$usage" 1>&2
exit 1
;;
*)
break
;;
esac
shift
done
echo -e "E[32mLet's rock ...."
tput sgr0


if [ ! -n "$aptstate" ]; then
#echo -n "aptstate not specified. Tryning default .... "
aptstate=/var/state/apt
if [ ! -d "$aptstate" ]; then
echo "error: invalid aptstate dir : " 1>&2
exit 1
fi
#echo -e 'E[32mOK'
#tput sgr0
fi

if [ ! -n "$data" ]; then
data=$aptstate
fi

if [ ! -n "$name" ]; then
echo "error: name must be specified "
echo -e "$usage" 1>&2
exit 1
fi

if [ ! -n "$path" ]; then
echo "error: path must be specified "
echo -e "$usage" 1>&2
exit 1
fi


data=$data/apt


backsl=`echo $path |sed 's/[^/]*//..//g'`
backsl=`echo $backsl |sed 's//$//g'`
backslstrip=`echo $backsl |sed 's///_/g'`

#echo $backsl
#echo $aptstate/lists/$namesplit_$backslstrip$datasplit_base_pkglist.$namesplit
#exit 1


if cat /etc/apt/sources.list|grep $name >/dev/null; then
echo -n "Name $name alrady in use. Rewrite (y/N)? "
read answer
case "$answer" in
[yY]) rm -f $OF
echo "Ok. Rewrite..."
;;
anekdot)
echo "Со слов менеджера - поломался компьютер. Пришел системный администратор"
echo "- закатил глаза, вознес руки к небу, побормотал что то себе под нос,"
echo "четыре раза крутанул кресло вокруг оси - пхнул ногой системный блок"
echo "- компьютер заработал."
echo "Со слов админа: Вызывают меня - прихожу вижу этот мудило так крутился"
echo "на кресле что наматал на него шнур питания. Матюгаясь раскрутил шнур"
echo "- запихнул системный блок подальше под стол - матюкаясь пошел курить"
exit 1
;;
*) exit 1

;;
esac
fi



if [ ! -d "$data" ]; then
echo "Creating directory apt in $aptstate"
mkdir $data
fi

if [ ! -d "$path" ]; then
echo "Wrong path: $path"
exit 1
fi


echo "The aptstate:"$aptstate
echo "The name is :"$name
echo "The data is :"$data
echo "The path is :"$path

echo -n "Try to "apt-cdrom ident" ...."
if ! apt-cdrom ident > /dev/null ;then
echo "Faile ;("
exit 1
fi

aptident=`apt-cdrom ident`

#отрежим все что справа от матюка
aptident=${aptident#*[}

#отрежем все что слева от матюка
aptident=${aptident%]*}
echo -e 'E[32mOK'
tput sgr0


rm $data/RPMS.$name >/dev/null 2>&1

echo -n "Try to create simlink $data/RPMS.$name on $path ...."
if ! ln -s $path $data/RPMS.$name ; then
echo "Failed :("
exit 1
fi
echo -e 'E[32mOK'
tput sgr0

datasplit=`echo $data | sed 's/_/%5f/g'` # convert _ character to %5f in path
datasplit=`echo $datasplit | sed 's///_/g'` # convert / character to _ in path
datasplit=`echo $datasplit | sed 's/ /%20/g'` # convert space character to %20 in path
namesplit=`echo $name | sed 's/_/%5f/g'` # convert _ character to %5f in name
namesplit=`echo $namesplit | sed 's/ /%20/g'` # convert space character to %20 in name

echo -n "Try to use genbasedir ...."

if ! genbasedir --progress --bloat --flat $data $name ; then
echo "failed :("
exit 1
fi

echo -e 'E[32mOK'
tput sgr0



echo -n "Moving hash files ..."
if ! mv $data/base/pkglist.$name $aptstate/lists/$namesplit_$backslstrip$datasplit_base_pkglist.$namesplit ; then
echo "Failed :("
exit 1
fi


if ! mv $data/base/release.$name $aptstate/lists/$namesplit_$backslstrip$datasplit_base_release.$namesplit ; then
echo "Failed :("
exit 1
fi

echo -e 'E[32mOK'
tput sgr0


if [ ! -f "$aptstate/cdroms.list" ]; then
touch $aptstate/cdroms.list
fi


echo -n "Create backup copy configs $aptstate/cdroms.list.fake and /etc/apt/sources.list.fake..."
cp $aptstate/cdroms.list $aptstate/cdroms.list.fake
cp /etc/apt/sources.list /etc/apt/sources.list.fake
echo -e 'E[32mOK'
tput sgr0


echo -n "Add our CDROM repository..."
cat $aptstate/cdroms.list | grep -v "CD::$aptident "$name";" > $aptstate/cdroms.list
echo "CD::$aptident "$name";">>$aptstate/cdroms.list

#cat /etc/apt/sources.list | grep -v "rpm cdrom:[$name]/ ../../../../..$data $name" > /etc/apt/sources.list
cat /etc/apt/sources.list | grep -v "rpm cdrom:[$name]/ $backsl$data $name" > /etc/apt/sources.list

#echo "rpm cdrom:[$name]/ ../../../../..$data $name" >> /etc/apt/sources.list
echo "rpm cdrom:[$name]/ $backsl$data $name # Adding by apt-fakecd" >> /etc/apt/sources.list
echo -e 'E[32mOK'
tput sgr0

rm $data/base/*
echo -e 'E[32mDone'
tput sgr0
590 Прочтений •  [Добавление CD дисков с RPM но без индексных файлов через apt-cdrom (apt rpm linux cdrom)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Добавление CD дисков с RPM но без и... 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 | Донейт | Статистика | Команда | Техническая поддержка