Проблема: Alt Linux Junior 5.0.2 некорректно работает на новых компьютерах (core i3, материнская плата с интегрированной графикой Intel).
Задача: Вместо Alt Linux Junior 5.0.2 установить Alt Linux 6.0 Centaurus и уже на него поставить необходимые образовательные программы. Ускорить установку программ на компьютерах аналогичной конфигурации.
Инструментарий:
1) Alt Linux 6.0 Centaurus
2) Скрипт для создания локального репозитория createrep.sh:
# Укажите репозиторий, из которого можно будет установить пакет apt-utils, если пакет не будет найден в системе и/или указанных на текущим момент репозиториях
UseRepo="rpm ftp://ftp.altlinux.org/pub/distributions/ALTLinux/p6/branch i586 classic"
# Вы можете сменить разрешения файловой системы для новых репозиториев. Иначе доступ к файлам репозитория будет иметь только пользователь root. Укажите yes чтобы разрешить доступ всем.
UseALL=yes
# Скрипт может создавать для новых репозиториев скрипты, запуск которых будет автоматически прописывать репозиторий в системе. Укажите yes чтобы использовать эту возможность.
UseNewScript=yes
# Функция вывода справки
function _Help ()
{
echo ""
echo "Скрипт для создания репозиториев из пакетов, взятых из кэша Synaptic-а либо из указанной папки."
echo ""
echo "Скрипт поддерживает пакеты арихитектуры i586 и noarch. После успешного использования скрипта,"
echo "в указанной папке(если такой не существует, она создается автоматически) появляются две папки."
echo "Одна папка будет называться i586 - репозиторий для пакетов архитектуры i586, другая папка будет"
echo "называться noarch - для пакетов noarch. Если в источнике, который вы указали, не будет пакетов"
echo "какой либо архитектуры, соответствующий репозиторий не появиться. После создания репозитория(ев)"
echo "их так-же можно будет прописать в систему. Если у вас уже есть репозиторий(ии), то их тоже можно"
echo "прописать в систему, указав в качестве папки с репозиториями - папку в которой лежит(ат) папка(и)"
echo "i586 и/или noarch."
echo ""
echo ""
echo "Пример запуска скрипта, для создания репозитория:"
echo "./имя_скрипта -c /папка/для/нового/репозитория - в качестве пакетов используется кэш Synaptic-а"
echo ""
echo "Пример запуска скрипта, для создания репозитория c указанием альтернативного источника пакетов:"
echo "./имя_скрипта -c /папка/для/нового/репозитория /папка/в_корне/которой/лежат/пакеты - в качестве пакетов используется альтернативный источник"
echo ""
echo "Пример запуска скрипта, для создания репозитория с удалением пакетов из кэша Synaptic-а:"
echo "./имя_скрипта -cr /папка/для/нового/репозитория - в качестве пакетов используется кэш Synaptic-а"
echo ""
echo "Пример запуска скрипта, для создания репозитория с удалением пакетов из кэша Synaptic-а:"
echo "./имя_скрипта -cr /папка/для/нового/репозитория /папка/в_корне/которой/лежат/пакеты - в качестве пакетов используется альтернативный источник"
echo ""
echo "Пересоздать уже имеющийся репозиторий, можно так:"
echo "./имя_скрипта -g /папка/где/находятся/репозитории - пересоздает папки base, в указанном репозитории"
echo ""
echo "Если у вас есть репозитории и вы хотите прописать их в системе - это можно сделать так:"
echo "./имя_скрипта -i /папка/где/находятся/репозитории - прописывает из этой папки репозитории в систему"
echo ""
echo "Чтобы удалить из системы все записи о репозиториях, прописанных данным скриптом:"
echo "./имя_скрипта --clean - удалит за каталога /var/cache/apt/archives/ все файлы вида A_create_repo*.list"
echo ""
echo ""
echo ""
}
# Проверяем наличие необходимого пакета и в случае неудачи пытаемся его поставить. Иначе прекращаем работу скрипта.
function _Autoinstalrpm ()
{
echo "";echo -n " > Поиск и установка необходимых пакетов..."
rpm -qa | grep "apt-utils" &> /dev/null || (apt-get update && apt-get install -y apt-utils &> /dev/null)
rpm -qa | grep "apt-utils" &> /dev/null || (echo $UseRepo > /etc/apt/sources.list.d/A-create-repo.list;apt-get update &> /dev/null && apt-get install -y apt-utils &> /dev/null);rm -f /etc/apt/sources.list.d/A-create-repo.list &> /dev/null
sleep 1s;rpm -qa | grep "apt-utils" &> /dev/null && echo " Выполнено." || echo " Неудача" || echo " ! Пакет для создания репозиториев - apt-utils не найден, дальнейшая работа невозможна" || exit
}
# Прописываем указанные репозитории в системе
function _Instal ()
{
echo "";echo "=> Выполняется добавление записи о репозиториях в систему.";echo ""
[[ -e $NewRepo ]] || NewRepo=`echo ~+/`;NewRepo=`echo $NewRepo | sed 's/\/$//'`
RepoFile=/etc/apt/sources.list.d/A_create_repo_`date +%d%m%y.%H%M%S`.list
[[ -e ${NewRepo}/i586/RPMS.classic ]] && if ls ${NewRepo}/i586/RPMS.classic | grep i586 |grep rpm &> /dev/null;then
echo rpm\ file\:\/\/${NewRepo}\/" i586 classic" > $RepoFile;echo " > Запись о репозитории i586 добавлена."
else echo " ! Репозиторий с архитектурой i586 не найден в указанной папке.";fi
[[ -e ${NewRepo}/noarch/RPMS.classic ]] && if ls ${NewRepo}/noarch/RPMS.classic | grep noarch |grep rpm &> /dev/null;then
[[ -f $RepoFile ]] || echo > $RepoFile
echo rpm\ file\:\/\/${NewRepo}\/" noarch classic" >> $RepoFile;echo " > Запись о репозитории noarch добавлена."
else echo " ! Репозиторий с архитектурой noarch не найден в указанной папке.";fi
[[ -f $RepoFile ]] && (echo -n " > Обноляется список пакетов...";apt-get update &> /dev/null && echo " Выполнено." || echo " Неудача" || echo " ! Не удалось обновить список пакетов") || echo " ! Не удалось найти репозитории в указанном каталоге."
}
# Функция пересоздания репозитория
function _Generate ()
{
echo "";echo "=> Выполняется пересоздание репозиториев.";echo ""
# Проверяем наличие указанной папки с репозиториями. В случае ее отсутствия, прекращаем работу скрипта.
NewRepo=`echo $NewRepo | sed 's/\/$//'`
if [[ -e ${NewRepo} ]];then echo >/dev/null;else echo " ! Каталог с репозиториями не найден.";exit;fi
# Создаем репозиторий для i586 архитектуры
[[ -e ${NewRepo}/i586/RPMS.classic ]] && if ls ${NewRepo}/i586/RPMS.classic | grep i586 |grep rpm &> /dev/null;then
find ${NewRepo}/i586/ -maxdepth 1 -name "base" -exec rm -fR {} \; &> /dev/null
echo -n " > Создание i586 репозитория...";genbasedir --progress --create --topdir=${NewRepo} i586 classic >/dev/null;echo " Выполнено.";else echo " Неудача.";echo " ! Репозиторий i586 не найден.";fi
# Создаем репозиторий для noarch архитектуры
[[ -e ${NewRepo}/noarch/RPMS.classic ]] && if ls ${NewRepo}/noarch/RPMS.classic | grep noarch |grep rpm &> /dev/null;then
find ${NewRepo}/noarch/ -maxdepth 1 -name "base" -exec rm -fR {} \; &> /dev/null
echo -n " > Создание noarch репозитория...";genbasedir --progress --create --topdir=${NewRepo} noarch classic &> /dev/null;echo " Выполнено.";else echo " Неудача.";echo " ! Репозиторий noarch не найден.";fi
}
# Создаем репозиторий
function _Create ()
{
echo "";echo "=> Выполняется создание репозиториев.";echo ""
# Проверяем наличие указанного каталога для репозитория и папки источника. В случае отсутствия каталога для репозитория, пытаемся его создать. Иначе прекращаем работу скрипта.
NewRepo=`echo $NewRepo | sed 's/\/$//'`
Sourc=`echo $Sourc | sed 's/\/$//'`;[[ $Sourc == "" ]] && Sourc=/var/cache/apt/archives;mkdir $NewRepo &> /dev/null
[[ -d $NewRepo ]] || echo " ! Невозможно найти либо создать каталог под репозиторий" || exit
# Проверяем факт создания репозитория(ев), в противном случае удаляем заданный каталог для новых репозиториев и завершаем работу скрипта.
find ${NewRepo} -name "*.rpm" | grep -E "i586|noarch" | grep rpm &> /dev/null || echo " ! Не удалось создать репозиторий, т.к. в указанном источнике. Скрипт завершает работу." || rm -fR ${NewRepo} &> /dev/null || exit
}
function _Clean ()
{
echo ""; echo -n " > Удаление информации о репозиториях..."
find /etc/apt/sources.list.d/ -name "A_create_repo*.list" -exec rm -f {} \; &> /dev/null && echo " Выполнено." && (echo -n " > Обноляется список пакетов...";apt-get update &> /dev/null && echo " Выполнено." || echo " Неудача.") || echo " Неудача." || echo " ! Информация о сгенерированый скриптом репозиториях не найдена."
}
# Применяем дополнительные возможности
function _Final ()
{
# Меняем разрешения, если задана такая опция
if [[ $UseALL == yes ]];then
echo -n " > Установка прав доступа к репозиториям..."
[[ -e ${NewRepo}/i586/RPMS.classic ]] && if ls ${NewRepo}/i586/RPMS.classic | grep i586 |grep rpm &> /dev/null;then chmod -f 0777 ${NewRepo} &> /dev/null;chmod -f 0777 ${NewRepo}/i586 &> /dev/null;chmod -f 0777 ${NewRepo}/i586/base &> /dev/null;chmod -f 0777 ${NewRepo}/i586/RPMS.classic &> /dev/null
chmod -fR 0666 ${NewRepo}/i586/base/* &> /dev/null;chmod -fR 0666 ${NewRepo}/i586/RPMS.classic/* &> /dev/null;fi
[[ -e ${NewRepo}/noarch/RPMS.classic ]] && if ls ${NewRepo}/noarch/RPMS.classic | grep noarch |grep rpm &> /dev/null;then chmod -f 0777 ${NewRepo} &> /dev/null;chmod -f 0777 ${NewRepo}/noarch &> /dev/null;chmod -f 0777 ${NewRepo}/noarch/base &> /dev/null;chmod -f 0777 ${NewRepo}/noarch/RPMS.classic &> /dev/null
chmod -fR 0666 ${NewRepo}/noarch/base/* &> /dev/null;chmod -fR 0666 ${NewRepo}/noarch/RPMS.classic/* &> /dev/null;fi
echo " Выполнено."
fi
Примечание: данная инструкция не подходит для Alt Linux 6.0 Centaurus x64
Реализация:
Кратко:
Установить на чистый Alt Linux 6.0 Centaurus необходимые программы и из кэша скачанных пакетов создать локальный репозиторий.
Подробно:
1) Устанавливаем Alt Linux 6.0 Centaurus в конфигурации для домашнего компьютера на виртуальную машину или компьютер, имеющий доступ к Интернет.
2) Открываем программу управления пакетами Synaptic, в главном меню выбираем пункт "Параметры" - "Параметры". В открывшемся окне настроек переходим на вкладку "Файлы" и выбираем вариант "Оставить все загруженные файлы в кэше", жмем "ОК". Устанавливаем через Synaptic необходимые образовательные программы. Он должен качать их из репозитория p6 branch.
3) В домашней папке текущего пользователя создать каталог rep.
4) Запустить терминал, получить права root командой su root, перейти в ту папку, где находится скрипт createrep.sh и выполнить команду:
sh createrep.sh -o /home/user/rep
5) Дождаться окончания работы скрипта.
В каталоге rep должна сформироваться такая структура папок:
rep/i586/RPMS.classic/
rep/i586/base/
rep/noarch/RPMS.classic/
rep/noarch/base/
Также в папке rep должен появиться файл install-repo.sh, который используется для добавления локального репозитория в список репозиториев Synaptic.
Теперь папку rep можно скопировать, например, на флешку.
6) Перейти на компьютер, который уже не имеет доступа к Интернет, установить Alt Linux 6.0 Centaurus в конфигурации для домашнего компьютера.
7) Подключить к компьютеру флешку, запустить терминал, получить права root, войти в папку rep, которая находится на флешке (/media/<имя флешки>/rep) и выполнить скрипт install-repo.sh командой:
sh install-repo.sh
8) Открыть Synaptic, нажать на кнопку "Получить сведения" для обновления списка пакетов в подключенных репозоториях. В левой части окна нажать кнопку "Происхождение". Далее выше выбрать подключенный нами ранее локальный репозоторий "Локальный/Неизвестный". В правой части окна выделить все пакеты из списка и отметить их для установки. Нажать кнопку "Примерить" и дождаться установки всех программ.
Я создавал локальный репозиторий для установки следующих программ:
Комментариев нет:
Отправить комментарий