Автор Тема: Скрипт для работы с локальным репозитарием  (Прочитано 5424 раз)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 932
    • Домашняя страница
    • Email
Прога по сабжу - ценная!
Когда её в официальные репы добавят?
Когда она появится в виде пакета. Другого способа попасть в репозиторий нет.
Андрей Черепанов (cas@)

kostyalamer

  • Гость
Надоело усложнять скрипт, поэтому поступил проще в тупую заменил mkisofs на genisoimage. Проверил, наконец- то все нормально работает и под p5.(какой умный человек занимается переименованием пакетов, думаю с ним бы и мантейнеры были непрочь побеседовать  >:(  )
Итак:
Первый листинг скрипта в теме работает на 4.0 , 4.1 , 5.0.

То что Вы видите ниже работает на p5 , 5.1 , Сизифе :


#!/bin/sh
# RPM_On_Disk v0.1 beta kostyalamer 08/2009
#------------------------------
function proverka ()
{
if [ `rpm -qa | grep -c $1` -eq 0 ]; then echo '<--- установите пакет ' $1 ' !!! --->'; read ; exit 1 ;
fi
}
#------------------------------
function create_dir ()
{
mkdir -p ~/Repa_Local/local/i586/ 2>/dev/null
mkdir ~/Repa_Local/local/.disk 2>/dev/null
 
cd ~/Repa_Local/local/i586/
mkdir base RPMS.local SRPMS.local 2>/dev/null
}
#------------------------------
function pause ()
{
echo "



"
echo -e "\033[1m   Нажмите Enter !!!   \033[0m"
read bred

}
#------------------------------
function statistic ()
{
a=`ls $HOME/Repa_Local/local/i586/RPMS.local/ *.rpm 2>/dev/null | wc -l`
b=`ls $HOME/Repa_Local/local/i586/SRPMS.local/ *.rpm 2>/dev/null | wc -l`
c=`expr $a + $b - 2`
cd $HOME/Repa_Local/local/i586/
echo " В вашем репозитарии " $c " RPM "
echo -n " Занимаемый объем на винте: ";du -s -h
echo ""
}
#------------------------------
function genbase ()
{
rm -f $HOME/Repa_Local/local/i586/base/*;
a=`ls $HOME/Repa_Local/local/i586/RPMS.local/ *.rpm 2>/dev/null | wc -l`
b=`ls $HOME/Repa_Local/local/i586/SRPMS.local/ *.rpm 2>/dev/null | wc -l`
c=`expr $a + $b`
if [ `expr $c` -gt 2 ]; then
echo "Alt Repa `date +%d/%m/%y_%H:%M`" >~/Repa_Local/local/.disk/info
echo '
<--- работает genbasedir --->

'
genbasedir --progress --label="Repa `date +%d/%m/%y_%H:%M`" --origin="ALT Linux" --topdir=$HOME/Repa_Local/local/ i586 local

echo $'\a'
echo '
Репозитарий с пакетами успешно создан и находится
в папке /Repa_Local вашего домашнего каталога,теперь
вам осталось записать этот каталог на диск !

'
sleep 2
fi;

}
#------------------------------
function rpm_to_repa ()
{
clear
echo -e "\033[1m


--- Копируем пакеты, введите пароль root-а ---


\033[0m"
su -c 'if [ `ls /var/cache/apt/archives/*.rpm | wc -l` -eq 1 ]; then echo " в кэш-е Apt-а нет скачанных rpm-ов !!! "; pause; exit;
fi;
cp -v /var/cache/apt/archives/*.rpm $HOME/Repa_Local/local/i586/RPMS.local;
cp -v /var/cache/apt/archives/*.src.rpm $HOME/Repa_Local/local/i586/SRPMS.local';
rm -f $HOME/Repa_Local/local/i586/RPMS.local/*.src.rpm;
sleep 1
}
function menu ()
{
clear

statistic
echo ""
echo -e "\033[1m ----- Введите нужную цифру ! ----- \033[0m"
echo ""
echo "1) Копировать rpm-ы из кеша Apt-а."
echo "2) Редактировать репу при помощи mc."
echo "3) Записать репу на диск."
echo "4) Удалить все пакеты из репы."
echo "5) Удалить пакеты из кеша Apt-а."
echo "6) Справка."
echo "7) Выход."
}

# ---------- Программа  ----------
clear
echo " Подождите, комп. думает ! "
proverka "apt-repo-tools"
 if [ $? -eq 1 ]; then
  exit
 fi
 create_dir;
 genbase;
 clear
statistic
echo ""
echo -e "\033[1m ----- Введите нужную цифру ! ----- \033[0m"

echo ""
select punkt in "Копировать rpm-ы из кеша Apt-а." "Редактировать репу при помощи mc." "Записать репу на диск." "Удалить все пакеты из репы." "Удалить пакеты из кеша Apt-а." "Справка." "Выход."
do
case $punkt in
 "Копировать rpm-ы из кеша Apt-а.")
   clear
   rpm_to_repa
   genbase
   menu
;;
 "Редактировать репу при помощи mc.")
   clear
   proverka "mc"
   if [ $? -eq 0 ]; then
    echo "Редактирование репозитария в mc !"
    echo "Можно удалить лишние пакеты или
добавить пакеты вручную из других
источников "
    echo ""
    echo "Выход из mc по F10 "
    pause
    mc -U $HOME/Repa_Local/local/i586/
    genbase
   else echo " Установите пакет mc ! "; pause
   fi
   menu
;;
 "Записать репу на диск.")
   clear
   proverka "genisoimage"
   if [ $? -eq 0 ]; then
    echo "Записываем образ диска."
    sleep 1
    genisoimage -r -v -J -l -o ~/tmp/repa.iso ~/Repa_Local/local
     proverka "k3b"
     if [ $? -eq 0 ]; then
       k3b ~/tmp/repa.iso 2>/dev/null;
       sleep 10
       clear
       echo "После записи удаляем iso-образ диска !!! ";
       pause
       rm ~/tmp/repa.iso
     else clear
     echo -e "\033[1m Установите пакет k3b или запишите
образ диска в другой программе выйдя из скрипта
образ: " ~ "/tmp/repa.iso \033[0m"
     pause
     fi
   else echo -e "\033[1m Установите пакет mkisofs ! \033[0m"; pause
   fi
   menu
;;
 "Удалить все пакеты из репы.")
   clear
   echo "Удалить все пакеты из репы."

   cd $HOME/Repa_Local/local/i586/
   rm -f RPMS.local/* SRPMS.local/* base/*
   
   sleep 1
   menu
;;
 "Удалить пакеты из кеша Apt-а.")
  clear
  echo -e "\033[1m Если вы действительно хотите удалить
все скачанные пакеты введите Y, если нет
просто нажмите на Enter ! \033[0m"
  echo ""
  read l
  if [ $l = "Y" -o $l = "y" ]; then 
  echo -e "\033[1m Для удаления пакетов введите пароль root ! \033[0m"
  su -c 'apt-get clean'
  fi
  menu
;;

 "Справка.")
   clear
   echo "                Справка:"
   echo ""
   echo "           Rpm On Disk v0.1 beta"
   echo ""
   echo '  Эта прога. предназначена для создания локального
репозитария из скачанных пакетов и записи его на диск
и является надстройкой над программой genbasedir.
   Вы можете редактировать репу и добавлять пакеты из
других источников при помощи mc (2-ой пункт меню ) и
записать репу на диск при помощи k3b ( либо взять
образ диска и записать его внешней программой при
отсутствии k3b ). О всех замеченных багах, а так же
пожеланиях по работе программы просьба писать на
kostyalamer@yandex.ru или в гостевую книгу моего сайта
http://kostyalamer.narod.ru , на сайте же планирую
поместить более подробное описание работы с программой.
   Благодарности: автору genbasedir - а ,
Drool-у за его help о том как создавать локальную репу,
Александру за его замечательный скрипт на ту же тему
(скриптом не пользовался но кое-что стибрил )
   Лицензия: ДЧХ - делай что хочешь.
   P.S. Spectrum forever !              '
 
   pause
   menu
;;
 "Выход.")
   break
;;
 *)
  echo " Ошибка выбора !"
  sleep 3
  menu
;;
esac
done

Оба скрипта зажаты в архивы и их можно скачать у меня на сайте:http://kostyalamer.narod.ru/rpmondisk/rpmondisk.html
« Последнее редактирование: 17.02.2010 22:01:18 от kostyalamer »

kostyalamer

  • Гость
Ну вот от нечего делать собрал для этой радости rpm. Я умышленно выкинул из него зависимость на k3b так как можно пользоваться другими писалками. В связи с этим на minimal-е при выборе пункта записать на диск, создается образ диска в ~/tmp, после чего окно программы закрывается ( если не установлена k3b). Спокойно записываем образ в любой диско-писалке.  В общем это не баг, а так задуманно  ;)
Если кто найдет баги и отпишется в эту тему, буду благодарен.

RPM:         http://kostyalamer.narod.ru/rpmondisk/localrepa-1.0-alt1.noarch.rpm
SRC.RPM:  http://kostyalamer.narod.ru/rpmondisk/localrepa-1.0-alt1.src.rpm

PS пожелания и идеи приветствуются  ;)

kostyalamer

  • Гость
Чуть не забыл, это собрано для p5 и 5,1(проверял) ,сильно подозреваю что будет работать и на Сизифе.