Автор Тема: обновление SL по сети  (Прочитано 2968 раз)

Оффлайн AleksM

  • Участник
  • *
  • Сообщений: 47
обновление SL по сети
« : 14.06.2012 17:13:55 »
Доброго времени суток, уважаемые форумчане!

Такая задача: есть два компа с установленными SL6.0.1. На одном регулярно скачиваю и устанавливаю обновления. А так как Интернет-канал медленный и существует лимит по трафику, то хотелось бы на втором компе обновления получать с другого компа по локальной сети. Т.е. хотя бы файлы пакетов получать с Компа1, а обновлять список пакетов можно командой apt-get update через Инет.

Пробовал сделать примерно так:

1. Расшарил на компе1 (который обновляется через Инет) папку /var/cache/apt, запустив Thunar от root'а. Комп2 по сети эту папку видит (smb://комп1/apt)

2. Думал сделать символическую ссылку на "smb://комп1/apt" и разместить ее вместо папки /var/cache/apt командой cp -s smb://linux/apt /var/cache/apt, но при этом выводит сообщение cp: не удалось выполнить stat для «smb://linux/apt/»: Нет такого файла или каталога
Куда дальше думать не знаю. Прошу помочь, кто в теме.
Заранее благодарю.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: обновление SL по сети
« Ответ #1 : 14.06.2012 20:49:41 »
В теории можно, даже не заморачиваясь на сетевом администрировании, и почти при нулевом познании, но структурно-базовые познания обязательны. Куда-то сюда смотреть:
# ls -laR /etc/apt/
# ls -laR /var/lib/apt/
/var/lib/apt/:
итого 20
drwxr-xr-x  4 root root 4096 Окт  7  2011 .
drwxr-xr-x 53 root root 4096 Июн  5 23:41 ..
-rw-r--r--  1 root root  233 Июн  5 17:23 cdroms.list
drwxr-xr-x  3 root root 4096 Июн  7 11:08 lists
drwxr-xr-x  2 root root 4096 Окт  7  2011 prefetch

/var/lib/apt/lists:
итого 73488
drwxr-xr-x 3 root root     4096 Июн  7 11:08 .
drwxr-xr-x 4 root root     4096 Окт  7  2011 ..
-rw-r--r-- 1 root root 51991912 Июн  6 23:16 ftp.altlinux.org_pub_distributions_ALTLinux_p6_branch_i586_base_pkglist.classic
-rw-r--r-- 1 root root      918 Июн  6 23:16 ftp.altlinux.org_pub_distributions_ALTLinux_p6_branch_i586_base_release
-rw-r--r-- 1 root root      133 Июн  6 23:16 ftp.altlinux.org_pub_distributions_ALTLinux_p6_branch_i586_base_release.classic
-rw-r--r-- 1 root root 23227684 Июн  6 23:15 ftp.altlinux.org_pub_distributions_ALTLinux_p6_branch_noarch_base_pkglist.classic
-rw-r--r-- 1 root root      642 Июн  6 23:16 ftp.altlinux.org_pub_distributions_ALTLinux_p6_branch_noarch_base_release
-rw-r--r-- 1 root root      135 Июн  6 23:16 ftp.altlinux.org_pub_distributions_ALTLinux_p6_branch_noarch_base_release.classic
-rw-r----- 1 root root        0 Июн  7 11:07 lock
drwxr-xr-x 2 root root     4096 Июн  7 11:08 partial

/var/lib/apt/lists/partial:
итого 8
drwxr-xr-x 2 root root 4096 Июн  7 11:08 .
drwxr-xr-x 3 root root 4096 Июн  7 11:08 ..

/var/lib/apt/prefetch:
итого 8
drwxr-xr-x 2 root root 4096 Окт  7  2011 .
drwxr-xr-x 4 root root 4096 Окт  7  2011 ..
# ls -laR /var/cache/apt/
/var/cache/apt/:
итого 62116
drwxrws---  3 root rpm      4096 Июн 14 04:00 .
drwxr-xr-x 11 root root     4096 Июн 13 16:22 ..
drwxrws---  3 root rpm     53248 Июн 14 03:44 archives
-rw-r--r--  1 root rpm  31812190 Июн 14 04:00 pkgcache.bin
-rw-r--r--  1 root rpm  31780560 Июн 14 04:00 srcpkgcache.bin

/var/cache/apt/archives:
итого 821816
drwxrws--- 3 root rpm      53248 Июн 14 03:44 .
drwxrws--- 3 root rpm       4096 Июн 14 04:00 ..
-rw-r--r-- 1 root rpm     511858 Апр 10 12:18 akonadi_1.7.2-alt0.M60P.1_i586.rpm
-rw-r--r-- 1 root rpm       7472 Апр 10 12:18 akonadi-common_1.7.2-alt0.M60P.1_i586.rpm
... чиниво себе пакетов!
drwxrws--- 2 root rpm       4096 Июн 14 03:44 partial
...
-rw-r--r-- 1 root rpm     233614 Май 15 14:24 zip_30000000%3a3.0-alt0.M60P.1_i586.rpm
-rw-r--r-- 1 root rpm     109595 Июл 19  2011 zlib-devel_1.2.5-alt3_i586.rpm

/var/cache/apt/archives/partial:
итого 56
drwxrws--- 2 root rpm  4096 Июн 14 03:44 .
drwxrws--- 3 root rpm 53248 Июн 14 03:44 ..
$ man apt-getна предмет --no-download

Ну
$ man cpещё.
http://lists.altlinux.org/pipermail/community/2010-June/663957.html
Или/и
$ man rsync
$ man sudo
Суть в следующем:
Синхронизировать файлы локальной базы пакетов
* пакетов в кеше


Внимание!
При непонимании сути и внутренних механизмов, разломать систему вдребезги можно одним махом.


Ну как-то так можно по-простому и на скорую руку.
Другие варианты тоже наверное предложат.
NFS можно покурить.
« Последнее редактирование: 14.06.2012 21:47:02 от Speccyfighter »

Оффлайн fce

  • Участник
  • *
  • Сообщений: 249
  • ALT Linux, XBMC live, Ubuntu, Kubuntu, Android
    • Dansguardian+
Re: обновление SL по сети
« Ответ #2 : 14.06.2012 21:56:33 »
Собственно вариантов несколько
1. http://www.altlinux.org/Apt/NginxAsCache
2. Способ описанный здесь http://linformatika.ru/content/kakim_dolzhen_byt_kompyuternyi_klass
3. Можно использовать прокси-сервер SQUID, с измененными правилами кэширования для RPM-пакетов.
Безвыходных ситуаций не бывает, есть ситуации в которые нет входа. На каждого компьютерного гения найдётся свой хакер с винтом.

Оффлайн AleksM

  • Участник
  • *
  • Сообщений: 47
Re: обновление SL по сети
« Ответ #3 : 19.06.2012 22:44:53 »
Собственно вариантов несколько
1. http://www.altlinux.org/Apt/NginxAsCache
2. Способ описанный здесь http://linformatika.ru/content/kakim_dolzhen_byt_kompyuternyi_klass
3. Можно использовать прокси-сервер SQUID, с измененными правилами кэширования для RPM-пакетов.


по первому варианту проделал следующие действия:
1. поставил пакет nginx-apt-cache
результат:
[a@linux ~]$ rpm -qa | grep nginx-apt-cache
nginx-apt-cache-1.0-alt2
2. изменил файлы "/etc/nginx/sites-enabled.d/01-altrepo.conf" и "/etc/apt/sources.list" в соответствии с "Более умная конфигурация nginx ".
Кстати, я так понял, что в /etc/apt/sources.list:

rpm http://**NGINXHOST**/altlinux/4.0/branch/ i586 classic
rpm http://**NGINXHOST**/altlinux/4.0/branch/ noarch classic

**NGINXHOST** нужно заменить на ip-адрес того компьютера, с которого будут ставиться обновления напр. 192.168.1.11, а 4.0 нужно заменить на 6.0, т.к. SL 6.0.

3. далее ... запускаем:

# service nginx restart
Checking configuration sanity for nginx:  nginx: [emerg] duplicate location "/fetch/altlinux/" in /etc/nginx/sites-enabled.d/01-altrepo.conf:12
nginx: configuration file /etc/nginx/nginx.conf test failed
                                                                        [FAILED]

сервис nginx не запускается... Что делать дальше?

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Re: обновление SL по сети
« Ответ #4 : 20.06.2012 08:07:16 »
Удалите один из дублирующихся location'ов (точнее, блок с этим location'ом) либо закомментируйте этот блок.

Оффлайн AleksM

  • Участник
  • *
  • Сообщений: 47
Re: обновление SL по сети
« Ответ #5 : 20.06.2012 11:11:16 »
Удалите один из дублирующихся location'ов (точнее, блок с этим location'ом) либо закомментируйте этот блок.

изменил /etc/nginx/sites-enabled.d/01-altrepo.conf
осталось:
server {
    listen 80;
    location /altlinux/ {
        root /var/www/;
        error_page 404 = /fetch$uri;
    }
    location /fetch/altlinux/ {
        internal;
        proxy_pass http://ftp.altlinux.org/pub/distributions/ALTLinux/;
        proxy_store /var/www/$request_uri;
    }

}

сервис запустился:

# service nginx restart
Checking configuration sanity for nginx:                                [ DONE ]
Service nginx is not running.                                           [PASSED]
Starting nginx service:                                                 [ DONE ]

Опробовал работу web-сервера nginx: скопировал в директорию "/var/www/altlinux/" некоторый htm-файл "files.html"(чисто для проверки работы сервера nginx)  запустил с соседнего комьютера браузер и ввел в строке адреса http://192.168.1.11/altlinux/files.html - заработало (файл files.html - открылся). Следовательно Web-сервер nginx - работает.

Следующие мои действия:

1. копирую .rpm  файлы дистрибутивов, которые нужно обновить или установить  из "/var/cache/apt/archives/" в "/var/www/altlinux/"
2. изменяю пути к репозиториям на компе, который нужно обновить на  http://192.168.1.11/altlinux/





Оффлайн AleksM

  • Участник
  • *
  • Сообщений: 47
Re: обновление SL по сети
« Ответ #6 : 20.06.2012 11:32:10 »
далее на компе, который нужно обновить по локальной сети запускаю:
[root@comp-celeron-cpu-5405a5 ~]# apt-get update
Ошибка http://192.168.1.11 i586 release
  404 Not Found
Ошибка http://192.168.1.11 noarch release
  404 Not Found
Невозможно получить http://192.168.1.11/altlinux/i586/base/release  404 Not Found
Невозможно получить http://192.168.1.11/altlinux/noarch/base/release  404 Not Found
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
W: Невозможно получить или проверить файлы описания некоторых репозиториев. Эти репозитории будут игнорироваться.
W: Возможно, Вам потребуется запустить `apt-get update' для исправления.
E: Некоторые индексные файлы не удалось скачать, они либо были проигнорированы, либо вместо них были использованы старые версии.

Оффлайн AleksM

  • Участник
  • *
  • Сообщений: 47
Re: обновление SL по сети
« Ответ #7 : 20.06.2012 11:34:41 »
т.е нужно в папке /var/www/altlinux/ на сервере обновлений сгенерировать файлы описания локального репозитория?
вопрос: как это сделать?

Оффлайн AleksM

  • Участник
  • *
  • Сообщений: 47
Re: обновление SL по сети
« Ответ #8 : 20.06.2012 12:41:20 »
разбираюсь далее...

отсюда http://www.altlinux.org/APT_%D0%B2_ALT_Linux/CreateRepository взял образцы скриптов для создания локального репозитория:

1.Создание «скелета» репозитория :

#!/bin/sh
REPO_DIR="/var/www/altlinux"
REPO_NAME="local"
for i in i586 i686 x86_64 noarch; do
  mkdir -p "$REPO_DIR/$i/base" "$REPO_DIR/$i/RPMS.$REPO_NAME"
done

скопировал в папку  "/var/www/altlinux/i586/base/" файл "thunderbird_10.0.3-alt0.M60P.1_i586.rpm",
а в папку "/var/www/altlinux/noarch/base/" файл "thunderbird-ru_10.0.3-alt0.M60P.1_noarch.rpm" для целью обновления на другом локальном компьютере почтового клиента

2.Создание/обновление метаинформации

#!/bin/sh
REPO_DIR="/var/www/altlinux/"
REPO_NAME="local"

for arch in i586 i686 x86_64 noarch; do
  genbasedir --bloat --progress --topdir=$REPO_DIR $arch $REPO_NAME
done

перед запуском последнего скрипта установил пакет "apt-repo-tools"

На компе, который нужно обновить запускаю:

[root@comp-celeron-cpu-5405a5 ~]# apt-get update
Получено: 1 http://192.168.1.11 i586 release [410B]
Получено: 2 http://192.168.1.11 noarch release [410B]
Ошибка http://192.168.1.11 i586 release
  no signatures in file /var/lib/apt/lists/partial/192.168.1.11_altlinux_i586_base_release
Ошибка http://192.168.1.11 noarch release
  no signatures in file /var/lib/apt/lists/partial/192.168.1.11_altlinux_noarch_base_release
Получено 2B за 0s (25B/s).
Невозможно получить http://192.168.1.11/altlinux/i586/base/release  no signatures in file /var/lib/apt/lists/partial/192.168.1.11_altlinux_i586_base_release
Невозможно получить http://192.168.1.11/altlinux/noarch/base/release  no signatures in file /var/lib/apt/lists/partial/192.168.1.11_altlinux_noarch_base_release
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
W: Невозможно получить или проверить файлы описания некоторых репозиториев. Эти репозитории будут игнорироваться.
W: Возможно, Вам потребуется запустить `apt-get update' для исправления.
E: Некоторые индексные файлы не удалось скачать, они либо были проигнорированы, либо вместо них были использованы старые версии.

... опять не слава богу... думаю дальше...

Оффлайн vavs

  • Участник
  • *
  • Сообщений: 8
Re: обновление SL по сети
« Ответ #9 : 20.06.2012 17:39:34 »
Можно просто скопировать скаченные обновления с одного компьютера на другой из папки var/cache/apt в такую же папку на другом компе.
Потом обновить список пакетов. Это уже через инет.
apt-get update
apt-get dist-upgrade
Обновление пройдет