If ($answer_counter == 1): ?> endif; ?>
* Сделать автономный репозиторий через локальную сеть *
Установить локальный веб-сервер Apache >
# apt-get install apache2
По умолчанию в пакете Apache Apache будет установлен веб-сайт в /var/www в вашей системе. Для наших целей это прекрасно, поэтому нет причин делать что-то еще. Вы можете легко протестировать его, указав свой любимый браузер на http://localhost . Вы должны увидеть веб-страницу после установки по умолчанию, которая фактически хранится в /var/www/index.html
Создайте каталог репозитория пакетов Debian
Выбрал для этого каталог /var/www/debs . Под ним вы должны создать каталоги «архитектуры», по одному для каждой архитектуры, которую необходимо поддерживать. Если вы используете только один компьютер (или тип компьютера), вам понадобится только один - обычно «i386» для 32-разрядных систем или «amd64» для 64 бит. Если вы используете какую-либо другую архитектуру, я предположим, что вы, вероятно, уже знаете об этом. Теперь просто скопируйте файлы пакета «.deb» для данной архитектуры в соответствующие каталоги. Если вы сейчас укажете свой любимый веб-браузер на http://localhost/debs/amd64 (например), вы увидите список пакетов для 64-битных систем.
Создать файл Packages.gz
Теперь нам нужно создать файл каталога для использования APT. Это делается с помощью утилиты, называемой «dpkg-scanpackages». Вот команды, которые я использую для обновления пакетов AMD64 в локальной сети:
# cd /var/www/debs/ # dpkg-scanpackages amd64 | gzip -9c > amd64/Packages.gz
Сделать известный репозиторий APT
Теперь остается только сообщить APT о вашем репозитории. Вы делаете это, обновляя файл /etc/apt/sources.list. Вам понадобится запись, подобная этой:
deb http://localhost/debs/ amd64/
Я использовал фактическое имя хоста моей системы вместо localhost - таким образом, код будет одинаковым для всех компьютеров в моей локальной сети, но localhost будет отлично работать, если вы используете только один компьютер.
Теперь обновите APT:
# apt-get update
Ответ дан user61928 05.09.2012 в 14:43
There are 4 steps to setting up a simple repository for yourself
1.Install dpkg-dev
2.Put the packages in a directory
3.Create a script that will scan the packages and create a file apt-get update can read
4. Add a line to your sources.list pointing at your repositoryInstall dpkg-dev
Type in a terminal
Sudo apt-get install dpkg-dev
Create a directory where you will keep your packages. For this example, we"ll use /usr/local/mydebs.
Sudo mkdir -p /usr/local/mydebs
Now move your packages into the directory you"ve just created.
Previously downloaded Packages are generally stored on your system in the /var/cache/apt/archives directory. If you have installed apt-cacher you will have additional packages stored in its /packages directory.
The Script update-mydebs
It"s a simple three liner:
#! /bin/bash cd /usr/local/mydebs dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
Cut and paste the above into gedit, and save it as update-mydebs in ~/bin. (the tilde "~" means your home directory. If ~/bin does not exist, create it: Ubuntu will put that directory in your PATH. It"s a good place to put personal scripts). Next, make the script executable:
Chmod u+x ~/bin/update-mydebs How the script works:
dpkg-scanpackages looks at all the packages in mydebs, and the output is compressed and written to a file (Packages.gz) that apt-get update can read (see below for a reference that explains this in excruciating detail). /dev/null is an empty file; it is a substitute for an override file which holds some additional information about the packages, which in this case is not really needed. See deb-override(5) if you want to know about it.
Sources.list
Deb file:/usr/local/mydebs ./
to your /etc/apt/sources.list, and you"re done.
CD Option
You can burn the directory containing the debs to a CD and use that as a repository as well (good for sharing between computers). To use the CD as a repository, simply run
Sudo apt-cdrom add
Using the Repository
Whenever you put a new deb in the mydebs directory, run
Sudo update-mydebs sudo apt-get update
Now your local packages can be manipulated with Synaptic, aptitude and the apt commands: apt-get, apt-cache, etc. When you attempt to apt-get install, any dependencies will be resolved for you, as long as they can be met.
Badly made packages will probably fail, but you won"t have endured dpkg hell.
Ответ дан BigSack 16.08.2012 в 13:45
Создание аутентифицированного репозитория
Я рассмотрел ответы здесь и на других сайтах, и большинство из них (недостаток IMHO) - это то, что вы настраиваете не прошедший проверку подлинность репозиторий. Это означает, что вам нужно запустить apt-get с --allow-unauthenticated для установки пакетов из него. Это может представлять угрозу безопасности, особенно в сценариях, в которых пакеты, которые вы устанавливаете, могут быть не все из вашего локального репозитория.
Обратите внимание, что я не рассматривал здесь, как сделать его доступным по локальной сети, но это довольно общая конфигурация с использованием Apache или nginx (см. другие ответы здесь).
Настройка каталога репо
Mkdir /home/srv/packages/local-xenial cd /home/srv/packages/local-xenial
Затем добавьте такую строку в sources.list:
Deb file:/home/srv/packages/local-xenial/ ./
Добавление и удаление пакетов
удалить пакеты
Rm /home/srv/packages/local-xenial/some_package_idont_like
добавить пакеты
Cp /some/dir/apackage.deb /home/srv/packages/local-xenial
теперь запускается следующий скрипт, который генерирует файлы Packages, Release и InRelease и подписывает их с помощью закрытого ключа gpg:
#!/bin/bash if [ -z "$1" ]; then echo -e "usage: "basename $0" DISTRO where DISTRO is the Ubuntu version codename (e.g. 14.04 is trusty)\n The way to use this script is to do the changes to the repo first, i.e. delete or copy in the .deb file to /srv/packages/local-DISTRO, and then run this script\n This script can be run as an unprivileged user - root is not needed so long as your user can write to the local repository directory" else cd /srv/packages/local-"$1" # Generate the Packages file dpkg-scanpackages . /dev/null > Packages gzip --keep --force -9 Packages # Generate the Release file cat conf/distributions > Release # The Date: field has the same format as the Debian package changelog entries, # that is, RFC 2822 with time zone +0000 echo -e "Date: "LANG=C date -Ru"" >> Release # Release must contain MD5 sums of all repository files (in a simple repo just the Packages and Packages.gz files) echo -e "MD5Sum:" >> Release printf " "$(md5sum Packages.gz | cut --delimiter=" " --fields=1)" %16d Packages.gz" $(wc --bytes Packages.gz | cut --delimiter=" " --fields=1) >> Release printf "\n "$(md5sum Packages | cut --delimiter=" " --fields=1)" %16d Packages" $(wc --bytes Packages | cut --delimiter=" " --fields=1) >> Release # Release must contain SHA256 sums of all repository files (in a simple repo just the Packages and Packages.gz files) echo -e "\nSHA256:" >> Release printf " "$(sha256sum Packages.gz | cut --delimiter=" " --fields=1)" %16d Packages.gz" $(wc --bytes Packages.gz | cut --delimiter=" " --fields=1) >> Release printf "\n "$(sha256sum Packages | cut --delimiter=" " --fields=1)" %16d Packages" $(wc --bytes Packages | cut --delimiter=" " --fields=1) >> Release # Clearsign the Release file (that is, sign it without encrypting it) gpg --clearsign --digest-algo SHA512 --local-user $USER -o InRelease Release # Release.gpg only need for older apt versions # gpg -abs --digest-algo SHA512 --local-user $USER -o Release.gpg Release # Get apt to see the changes sudo apt-get update fi
Пример содержимого файла conf / distributions
Origin: My_Local_Repo Label: My_Local_Repo Codename: xenial Architectures: i386 amd64 Components: main Description: My local APT repository SignWith: 12345ABC
Ответ дан happyskeptic 15.05.2016 в 09:33
Вы также можете настроить локальный исходный сервер на nginx и reprepro:
Установить пакеты debian
Sudo apt-get install reprepro nginx
создавать каталоги для reprepro и редактировать его
Sudo mkdir -p /srv/reprepro/ubuntu/{conf,dists,incoming,indices,logs,pool,project,tmp} $ cd /srv/reprepro/ubuntu/ $ sudo chown -R "whoami" . # changes the repository owner to the current user
/ SRV / reprepro / убунту / CONF / распределения
Origin: Your Name Label: Your repository name Codename: karmic Architectures: i386 amd64 source Components: main Description: Description of repository you are creating SignWith: YOUR-KEY-ID
/ SRV / reprepro / убунт / CONF / опции
Ask-passphrase basedir .
Включить его в reprepro, построить его
$ reprepro includedeb karmic /path/to/my-package_0.1-1.deb \ # change /path/to/my-package_0.1-1.deb to the path to your package
Конфигурация nginx:
/etc/nginx/sites-available/vhost-packages.conf
Server { listen 80; server_name packages.internal; access_log /var/log/nginx/packages-access.log; error_log /var/log/nginx/packages-error.log; location / { root /srv/reprepro; index index.html; } location ~ /(.*)/conf { deny all; } location ~ /(.*)/db { deny all; } }
Оптимизируйте размер ковша:
/etc/nginx/conf.d/server_names_hash_bucket_size.conf
Server_names_hash_bucket_size 64;
Ответ дан elprup 03.07.2013 в 11:18
There are several reasons you may want to create a local repository. The first is that you want to save on bandwidth if you have multiple Ubuntu machines to update. For example if you had 25 Ubuntu machines that all needed updating at least once a week, you would significantly save bandwidth because you could do all but the repository locally.
Most organizations have decent bandwidth for their network gateways but this bandwidth is a precious commodity that needs to be used wisely.
Many organizations still have routers with 10MB or 100MB limits at the gateway but 1 GB network connections internally so bandwidth could be better used internally. The second reason for creating your own repository is that you can control what applications are loaded on your internal Ubuntu machines.
You can remove any applications your organization does not want to use on the local network from the repository that updates the machines. Even better, you can create a test box and test applications and versions before you allow them to roll out into your network assuring security and stability.
You first have to setup a mirror, to do that you need to Just press Ctrl + Alt + T on your keyboard to open Terminal. When it opens, run the command below.
Apt-get install apt-mirror
Once you have your set up apt-mirror you can start your download of the repository with this command.
apt-mirror /etc/apt/mirror.list 1
Если вы системный администратор, то вам нужно часто устанавливать новый софт, обновления безопасности и другие патчи в ваших системах. Если бы компьютер был один, то это бы не вызвало проблем, но обычно в сети несколько компьютеров и всем им нужны обновления. Это может снизить пропускную способность сети. В каждой системе приложения будут скачиваться и устанавливаться непосредственно из репозиториев Ubuntu.
Но есть выход, можно сохранить все приложения на сервере в локальной сети, а затем распространять их на другие компьютеры этой сети когда потребуется. Локальный репозиторий Ubuntu - действительно быстрый и эффективный способ развертывания приложений, так как все необходимые приложения будут мгновенно получены с локального сервера на большой скорости. Таким образом, можно снизить трафик интернет и в итоге уменьшить ежегодные расходы на оплату интернета.
В этой инструкции я расскажу как настроить локальный репозиторий Ubuntu 16.04 двумя способами.
В этом способе мы скачаем все пакеты из публичного репозитория на жесткий диск сервера Ubuntu. Сначала нужно установить веб-сервер Apache. Он необходим для распространения пакетов по локальной сети:
sudo apt-get install apache2
Теперь установите apt-mirror:
sudo apt-get install apt-mirror
Создайте директорию куда будут скачиваться все пакеты:
sudo mkdir /myrepo
Теперь откройте файл /etc/apt/mirror.list и добавьте следующую строчку:
sudo vi /etc/apt/mirror.list
############ config ##################
#
# set base_path /var/spool/apt-mirror
set base_path /myrepo
Здесь /myrepo - адрес только что созданной папки. Также в этом конфигурационном файле можете указать репозитории, которые хотите использовать, мы будем использовать стандартные, но вы можете добавить и PPA. Если вы хотите использовать обе архитектуры и x64 и x32, репозитории для них нужно указать в файле отдельно.
Например, для x32 строчка будет начинаться deb-i386 а для х64: deb-amd64. Когда завершите с настройкой запустите загрузку пакетов командой:
В терминал будет выведено что-то вроде:
Downloading 162 index files using 20 threads...
Begin time: Wed Aug 5 16:09:16 2015
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
Сейчас все пакеты из публичного репозитория Ubuntu загружаются и сохраняются в локальной папке. В нашем случае в папке /myrepo. В зависимости от вашей скорости интернет это может занять несколько часов. Отменить загрузку можно в любое время, когда вы ее возобновите она продолжится там, где вы ее прервали.
Не нужно вручную запускать эту команду каждый день для обновления репозитория, можно запланировать задание Cron. Для этого раскоментируйте следующую строчку в файле /etc/cron.d/apt-mirror:
sudo vi /etc/cron.d/apt-mirror
# Regular cron jobs for the apt-mirror package
#
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
В этом примере Cron будет запускать обновление пакетов в четыре утра каждый день.
После заввершения загрузки проверим есть ли пакеты в каталоге /myrepo
Теперь нужно сделать пакеты доступными по сети. Для этого создадим символическую ссылку:
sudo ln -s /myrepo/mirror/us.archive.ubuntu.com/ubuntu/ ubuntu
Конфигурация клиентов
Настройка на клиентской машине не вызовет никаких трудностей. Просто откройте файл /etc/apt/sources.list и добавьте свой локальный репозиторий, так же как вы добавляли удаленный, только используйте ваш ip адрес вашей машины:
sudo vi /etc/apt/sources.list
[...]
deb http://192.168.1.102/ubuntu trusty universe
deb http://192.168.1.102/ubuntu trusty main restricted
deb http://192.168.1.102/ubuntu trusty-updates main restricted
[...]
Вот и все, здесь 192.168.1.102 - адрес сервера с репозиторием. Теперь обновим списки пакетов:
sudo apt-get update
Для установки программы достаточно выполнить стандартную команду:
sudo apt-get install package-name
Настройка apt-mirror ubuntu 16.04 завершена. Теперь клиентам не нужно подключение к интернету для загрузки пакетов. Они будут получать все пакеты и обновления с локального репозитория Ubuntu.
Способ 2: APT-Cacher
Создание локального репозитория ubuntu возможно не только одним способом. Apt-cacher немного отличается от apt-mirror. Он не скачивает все пакеты из репозитория, а только сохраняет и делает доступными для всех, те которые были один раз запрошены.
Сначала установите сервер Apache:
sudo apt-get install apache2
Затем apt-cahcer:
sudo apt-get install apt-cacher
Выберите способ запуска - daemon и нажмите ок:
Теперь нужно отредактировать /etc/default/apt-cacher, установив параметр autostart в 1.
sudo vi /etc/default/apt-cacher
apt-cacher daemon startup configuration file
# Set to 1 to run apt-cacher as a standalone daemon, set to 0 if you are going
# to run apt-cacher from /etc/inetd or in CGI mode (deprecated). Alternatively,
# invoking "dpkg-reconfigure apt-cacher" should do the work for you.
#
AUTOSTART=1
# extra settings to override the ones in apt-cacher.conf
# EXTRAOPT=" daemon_port=3142 limit=30 "
Также можно настроить с каких ip можно будет получить доступ к кэшу, для этого откройте файл /etc/apt-cacher/apt-cacher.conf и отредактируйте соответствующую строчку: Например, разрешим подключение только компьютерам с ip от 192.168.1.20 до 192.168.1.30:
sudo vi /etc/apt-cacher/apt-cacher.conf
[...]
## Uncomment and set the IP range ##
allowed_hosts = 192.168.1.20 - 192.168.1.30
#denied_hosts =
[...]
После завершения настроек перезапустите apache:
sudo systemctl restart apache2
sudo service apache2 restart
Настройка на стороне клиента
Создайте файл sudo nano /etc/apt/apt.conf.d/01proxy и добавьте в него следующую строчку:
sudo nano /etc/apt/apt.conf.d/01proxy
Acquire::http::Proxy "http://192.168.1.102:3142";
Здесь 192.168.1.102 адрес нашего локального репозитория. Осталось обновить списки пакетов:
sudo apt-get update
Здесь мы не добавляем локальный репозиторий Ubuntu, а всего лишь используем прокси для загрузки пакетов.
Выводы
Вот и все. Эта технология будет очень полезной системным администраторам, а также обычным пользователям, у которых слабый интернет. Если у вас остались вопросы, спрашивайте в комментариях!
Для чего может потребоваться локальный репозиторий
программ? Допустим у вас в офисе есть несколько рабочих станций без выхода в интернет. Но им нужно как-то устанавливать и обновлять ПО. В этом случае, на серевре (или другой машине, имеющей доступ в интернет), создаётся локальный репозиторий, который периодически обновляется. А остальные рабочие станции, берут оттуда программы. Также это может быть полезно в случае ограниченного или не всегда доступного интернета. Выкачали репозиторий - и в любой момент можете поставить любую доступную программу. В создании локального репозитория нет ничего сложного, сейчас я всё подробно опишу.
Локальный репозиторий очень желательно размещать на отдельном жёстком диске (в крайнем случае, разделе), чтобы в случае аварии не потерять всё нажитое непосильным трудом скачанное. Репозиторий дистрибутива Debian 8 для архитектуры amd64 весит более 40 гигабайт . Соответственно, если вам нужны ещё и i386-пакеты (32 бит) , то объём удвоится. Итак, допустим в вашей системе есть отдельный жёсткий диск на 500 Гб, примонтированный в /media/repo . От этого и будем исходить. Начнём с Debian 8 Jessie.
Существует несколько способов создания локального репозитория в Debian/Ubuntu. Я воспользуюсь самым простым и проверенным временем - утилитой apt-mirror . Устанавливаем:
sudo apt install apt-mirror apache2
Создаём каталог для репозитория:
sudo mkdir /media/repo/debian
И служебные каталоги:
sudo mkdir -p /media/repo/debian/{mirror,var,skel}
Настраиваем. Открываем конфигурационный файл:
sudo nano /etc/apt/mirror.list
set base_path /media/repo/debian
# set var_path $base_path/var
# set defaultarch
set run_postmirror 0
# Служебные параметры, не
set nthreads 20
set _tilde 0
#
# Зеркало с пакетами для amd64 jessie (stable)+ исходные тексты
deb-amd64 http://mirror.yandex.ru/debian jessie main contrib non-free
# Зеркало с обновлениями безопасности amd64 jessie (stable)+ исходные тексты
deb-amd64 http://security.debian.org/ jessie/updates main contrib non-free
deb-amd64 http://mirror.yandex.ru/debian jessie main/debian-installer
skip-clean http://mirror.yandex.ru/debian/dists/jessie/main/installer-amd64/
# Зеркало с пакетами для i386 jessie (stable)+ исходные тексты
deb-i386 http://mirror.yandex.ru/debian jessie main contrib non-free
deb-src http://mirror.yandex.ru/debian jessie main contrib non-free
# Зеркало с обновлениями безопасности i386 jessie (stable)+ исходные тексты
deb-i386 http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# Зеркало необходимое для сетевой установки (udebs)
deb-i386 http://mirror.yandex.ru/debian jessie main/debian-installer
# Удаляем файлы не индексированные в Release
clean http://mirror.yandex.ru/debian
clean http://security.debian.org
# Запрещаем очистку выбранной папки
skip-clean http://mirror.yandex.ru/debian/dists/jessie/main/installer-i386/
Сохраняем. Запускаем закачку репозитория:
sudo apt-mirror
После того как загрузятся индексные файлы, Apt-Mirror сообщит вам какой объём пакетов нужно скачать (объём будет весьма и весьма не маленький). Вам остаётся только ждать. Всё остальное система сделает сама. Для автоматической синхронизации и очистки зеркал нужно добавить строку в настройки cron и выставить подходящее время. Обновление официальных зеркал происходит каждые 6 часов: 3:00,9:00,15:00,21:00. Например так:
crontab -e
05 01 * * * apt-mirror >> /var/log/apt-mirror.log
05 03 * * * /media/repo/debian/var/clean.sh >> /var/log/apt-mirror.log
Для корректной работы обязательно необходимо добавить символические ссылки "stable" ,"testing" , "unstable" на jessie , stretch , sid соответственно (если они у вас есть). Пример для jessie:
ln -s /media/repo/debian/mirror/mirror.yandex.ru/debian/dists/jessie /media/repo/debian/mirror/mirror.yandex.ru/debian/dists/jessie/stable
Мы установили веб-сервер Apache неспроста. Он нам нужен чтобы раздавать пакеты из нашего локального репозитория по сети (локальной). Для начала, нужно настроить доступ к репозиторию. Для этого нужно создать одну символьную ссылку:
cd /media/repo/debian/
sudo ln -s /media/repo/debian/mirror/mirror.yandex.ru/debian debian
Теперь на клиентской машине (которой нужен доступ к локальному репозиторию), укажите адрес репозитория. Если у компьютера с репозиторием есть сетевое имя (к примеру server ), то указывайте его. В противном случае, адресом указывайте его IP-адрес :
sudo nano /etc/apt/sources.list
deb http://server/debian jessie main contrib non-free
deb-src http://server/debian jessie main contrib non-free
deb http://server/debian jessie/updates main contrib non-free
Если вы указывали в конфиге загрузку 32-х битных пакетов (i386), то не забудьте добавить эту архитектуру в систему:
sudo dpkg --add-architecture i386
И обновите список пакетов:
sudo apt-get update
Дальше уже всё как обычно. Для Ubuntu всё то же самое, за исключением названий репозиториев и добавления 32-х битной архитектуры в 64-х битную систему (не нужно). Конфиг mirror.list для Ubuntu 14.04 :
############# config ##################
# Базовый каталог, в нём будет создано локальное зеркало репозитория Debian
set base_path /media/repo/ubuntu
# Пути к файлам зеркала, временным файлам и журналy выполнения apt-mirror
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# Архитектура, для которой создаётся зеркало. По умолчанию - это архитектура
# системы, на которой работает apt-mirror (amd64,i386 или др.). Менять не ненужно,
# т.к. ниже мы явно укажем и зеркало и архитектуру.
# set defaultarch
# Путь к скрипту постобработки, по-умолчанию отсутствует, пока нам не нужен.
# set postmirror_script $var_path/postmirror.sh
# Не запускать скрипт постобработки
set run_postmirror 0
# Служебные параметры, не
set nthreads 20
set _tilde 0
#
############# end config ##############
deb-amd64 http://archive.ubuntu.com/ubuntu trusty main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu trusty universe
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates universe
deb-amd64 http://archive.ubuntu.com/ubuntu trusty multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security universe
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security multiverse
deb-i386 http://archive.ubuntu.com/ubuntu trusty main restricted
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates main restricted
deb-i386 http://archive.ubuntu.com/ubuntu trusty universe
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates universe
deb-i386 http://archive.ubuntu.com/ubuntu trusty multiverse
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates multiverse
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security main restricted
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security universe
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security multiverse
Ну и соответственно, нужно изменить символьную ссылку:
ln -s /media/repo/ubuntu/mirror/archive.ubuntu.com/debian/dists/trusdy /media/repo/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/trusty/stable
Вот и всё. Это наиболее простой и, на мой взгляд, правильный способ создания локального репозитория в этих системах. Если у вас остались вопросы - пишите в комментариях.
Translation(s) : - Русский
Создание локального репозитория
С помощью утилиты apt-mirror
Подготовка и установка apt-mirror
Это основной способ зеркалирования, помимо официального ftpsync , т.к. он гораздо надёжней debmirror.
Устанавливаем пакет:
apt-get install apt-mirrorСоздаём каталог /mnt/repo/debian и дополнительные mirror,var,skel. В нём будет создаваться локальный репозиторий пакетов. Желательно чтобы это был примонтированный логический раздел жёсткого диска, чтобы в случае переустановки дистрибутива с нуля, при форматировании корневого раздела (/), не лишиться репозитория совсем.
mkdir -p /mnt/repo/debian/{mirror,var,skel}Настройка apt-mirror
Заранее предположим что нам нужны:
- Зеркало с готовыми к установке (бинарными) пакетами для amd64 jessie (stable)+ исходные тексты
- Зеркало с готовыми к установке (бинарными) обновлениями безопасности amd64 jessie (stable)+ исходные тексты
- Зеркало с готовыми к установке (бинарными) прочими обновлениями amd64 jessie (stable)+ исходные тексты
- Зеркало Backports, с готовыми к установке (бинарными) пакетами для amd64 jessie (stable)+ исходные тексты
- Зеркало необходимое для сетевой установки (udebs).
Примечание: Раскомментирование строк лишь заменяет настройки по умолчанию.
Редактируем конфигурационный файл /etc/apt/mirror.list:
############# config ################## # Базовый каталог, в нём будет создано локальное зеркало репозитория Debian set base_path /mnt/repo/debian # Пути к файлам зеркала, временным файлам и журналy выполнения apt-mirror # set mirror_path $base_path/mirror # set skel_path $base_path/skel # set var_path $base_path/var # set cleanscript $var_path/clean.sh # Архитектура, для которой создаётся зеркало. По умолчанию - это архитектура # системы, на которой работает apt-mirror (amd64,i386 или др.). Менять не ненужно, # т.к. ниже мы явно укажем и зеркало и архитектуру. # set defaultarchЕсли необходимо хранить несколько зеркал для разных выпусков и архитектур, то добавляем новые строки аналогично для jessie amd64
Запуск и автоматизация apt-mirror
Для ручного запуска создания/обновления зеркала выполняем команду:
# apt-mirrorПосле загрузки индексных файлов apt-mirror сообщит, какой объём пакетов нужно получить:Begin time: Wed Jul 13 10:08:21 2016 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... End time: Wed Jul 13 10:08:34 2016 Begin time: Wed Jul 13 10:08:34 2016 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... End time: Wed Jul 13 10:08:40 2016 Processing indexes: Begin time: Wed Jul 13 10:08:46 2016 ...
Остаётся только дождаться завершения скачивания.
Для автоматической синхронизации и очистки зеркал нужно добавить строку в настройки cron и выставить подходящее время. Обновление официальных зеркал происходит каждые 6 часов: 3:00,9:00,15:00,21:00. Например так:
crontab -e 05 01 * * * apt-mirror >> /var/log/apt-mirror.log 05 03 * * * /mnt/repo/debian/var/clean.sh >> /var/log/apt-mirror.logНастройка доступа к зеркалу
После завершения работы локальные копии всех указанных репозиториев окажутся в каталогах /mnt/repo/debian/mirror/имя_репозитория. Таким образом копия репозитория, которая была определена в файле mirror.list как:
deb-amd64 http://httpredir.debian.org/debian jessie main contrib non-freeокажется в каталоге /mnt/repo/debian/mirror/httpredir.debian.org/debian.
Доступ именно к этому каталогу можно открывать любым удобным для Вас способом - Web или FTP сервером. Для корректной работы обязательно необходимо добавить символические ссылки "stable","testing", "unstable" на те выпуски, которые вы зеркалируете (если они у вас есть).
ln -s /media/repo/debian/mirror/httpredir.debian.org/debian/dists/jessie /media/repo/debian/mirror/httpredir.debian.org/debian/dists/jessie/stableC помощью утилиты debmirror
Установка пакета:
# apt-get install debmirror # mkdir /mnt/repo/debianОпции
тип архитектуры (i386, amd64 и т.п.) |
|
ветка дистрибутива (stable, testing, unstable) |
|
не закачивать пакеты с исходным кодом |
|
закачивать файлы переводов описаний пакетов |
|
адрес сетевого репозитория |
|
тип протокола передачи файлов (ftp, http, rsync) |
|
показывать подробности загрузки |
|
каталог, в котором будет создан ваш локальный репозиторий |
|
показывать, что сейчас происходит |
|
не скачивать исходные коды |
|
S main,contrib,non-free |
секции, которые нужно скачать |
Ignore-release-gpg |
игнорировать проверку gpg-ключа |
Ignore-missing-release |
не прерывается, если нету файла Release |
По умолчанию debmirror создаёт зеркало из секций main, contrib, non-free, main/debian-installer.
Можно исключать секции ненужных вам пакетов:
--exclude-deb-section="games" - не будет зеркалировать все игры.Имя секции обязательно в кавычках, иначе опция проигнорируется, это будет видно по общему объёму необходимых для скачивания пакетов выводимых программой в самом начале своей работы.
Принадлежность к определенной секции вашего пакета можно узнать по команде:
$ apt-cache show имя_пакетаПример получения бинарного зеркала (без пакетов с исходным кодом) Debian Stable для amd64:
# debmirror --host=ftp.fi.debian.org/debian --dist=stable --arch=amd64 --method=ftp --ignore-release-gpg --nosource /mnt/repo/debianC помощью утилиты reprepro
Установка пакета:
# apt-get install repreproСоздание каталога /mnt/repo/debian, в нём будет создаваться локальный репозиторий пакетов. Желательно чтобы это был примонтированный логический раздел жёсткого диска, чтобы в случае переустановки дистрибутива с нуля, при форматировании корневого раздела (/), не лишиться репозитория совсем.
# mkdir /mnt/repo/debianCоздание каталога /mnt/repo/debian/conf и пустого конфигурационного файла distributions:
# mkdir /mnt/repo/debian/conf # touch /mnt/repo/debian/conf/distributionsВ файл /mnt/repo/debian/conf/distributions указываем следующие параметры (пример для testing, архитектура i386):
Codename: squeeze Suite: stable Version: 6.x Origin: Debian Label: Debian 6.x Description: Debian Stable Repository Architectures: amd64 source Components: main contrib non-free SignWith: default DebIndices: Packages Release . .gz .bz2 DscIndices: Sources Release . .gz .bz2 Contents: . .gz .bz2Описание параметров
Codename: squeeze |
кодовое имя дистрибутива: sarge, etch, lenny, squeeze и т.д. |
вертка дистрибутива: stable, testing ,unstable ,experimental |
|
номер версии: squeeze - 6.x |
|
возможно у вас не Debian, а его производная, например, Ubuntu, Kubuntu, если оригинал, то Debian |
|
Label: Debian 6.x |
смесь двух секций Origin и Version |
Description: Debian testing repository |
расшифровка, какой репозиторий |
Architectures: amd64 |
архитектура дистрибутива: i386, amd64 и т.д. |
Components: main contrib non-free |
компоненты дистрибутива: main - СПО, contrib - СПО с зависимостями от несвободного, non-free - несвободное ПО |
SignWith: default |
можно не указывать, если не планируете подписывать репозиторий ключём gnupg |
DebIndices: Packages Release . .gz .bz2 |
индексные файлы Packages для двоичных пакетов и файлы Release с контрольными суммами; 3 типа: несжатые, сжатые gzip, сжатые bzip |
DscIndices: Sources Release . .gz .bz2 |
тоже самое только для пакетов с исходным кодом |
Contents: . .gz .bz2 |
файлы со списком содержимого каждого пакета, пригодиться при поиске файлов в установленных и ещё неустановленных пакетах |
Дополнительные важные опции:
AlsoAcceptFor: unstable experimental |
другие ветки |
UDebComponents: main contrib non-free |
Udeb-пакеты |
Инициализация репозитория
# cd /mnt/repo/debian # reprepro export # reprepro createsymlinksБазовый каталог не задан, т.к. мы уже в нём находимся.
Теперь можно добавлять пакеты в локальный репозиторий из кэша уже скачанных вами пакетов:
# reprepro -b /mnt/repo/debian --ask-passphrase includedeb squeeze /var/cache/apt/archives/*.debПараметр -b задаёт базовый каталог репозитория, в нашем случае это /mnt/repo, если вы находитесь уже в нём, то его можно не задавать, т.к. reprepro ищет файл conf/distributions в текущем каталоге.
Добавление Дебиановских исходников в репозиторий. Они состоят обычно из 2-3 файлов, главным (управляющим) из которых является dsc-файл. Чтобы все файлы исходников добавились в репозиторий, нужно использовать includedsc , остальное аналогично.
Добавление дебиановских исходников вместе с собранным из них пакетом (пакетами). После сборки пакета (пакетов) из дебиановских исходников, кроме самих пакетов и исходников появляется файл *.changes там же, где и пакеты. В этом файле перечислены как сами собранные пакеты, так и исходники. Поэтому для добавления всех этих файлов можно воспользоваться такой командой (в общем виде):
# reprepro -C РАЗДЕЛ include ВЕТКА /путь/до/файла/имя_файла.changesПараметр --ask-passphrase подпишет ваш репозиторий с помощью вашего ключа GnuPG. Его можно не указывать, если не планируете подписывать репозиторий ключём gnupg. На не подписанные репозитории, aptitude будет выдавать предупреждение, что он ненадежный. Для использования подписанного репозитория, надо сделать выгрузку вашего ключа, а на машине использующей репозиторий:
# apt-key add /tmp/имя_вашего_ключа.ascДобавление пакетов расположенных на CD/DVD Debian
Они уже лежат в иерархии каталога pool на дисках, но reprepro не поддерживает рекурсивный поиск по подкаталогам, но это достаточно легко обойти шаблоном (pool/*/*/*/*.deb). Пример:
# reprepro -b /mnt/repo/debian --ask-passphrase includedeb squeeze /media/cdrom/pool/*/*/*/*.debОна найдёт и добавит всё пакеты.
Удаление deb-пакета из репозитория
# reprepro remove ветка имя_пакетаУдаление пакетов вместе с исходниками либо всех пакетов, относящихся к одному собранному приложению (это означает, что данные пакеты в репозитории лежат в одной папке, причем имя папки и будет указывать на имя приложения):
# reprepro removesrc ветка имя_приложенияИспользование
Для использования репозитория нужно добавить его в файл /etc/apt/sources.list в виде следующей строки (в общем виде):
deb file:///путь_к_папке_репозитория/ ветка разделы например: deb file:///home/repository/ squeeze main contrib non-freeПодпись локального репозитория своим ключом
Генерирование ключа
Чтобы не было проблем с тем, что ключи созданы не там, рекомендуется все делать от учётной записи «root». Для генерирования ключа нужно выполнить команду:
# gpg --gen-keyОтвет на вопрос о типе ключа (обычно - 1):
Please select what kind of key you want: (1) DSA and Elgamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection?Ответ на вопрос о длине ключа (тоже по умолчанию - 2048):
DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)Ответ на вопрос о сроке истечения ключа (0 - никогда не истекает):
Please specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0)После этого может потребоваться подтвердить выбор:
Key does not expire at all Is this correct? (y/N) yДалее ввести информацию о себе и подтвердить (буква O (не ноль)). Потом задать пароль и подтвердить его. После этого начинается генерация ключа, в течение которой просят попечатать чего-нить, подвигать мышкой или еще чего поделать. Это нужно для генерации уникального ключа.
По завершении генерации будет выведена информация о сгенерированном ключе, такая как: - ID ключа - короткий набор символов: pub 1024D/5A81CBE3 2008-04-27 - отпечаток - длинный набор символов: Key fingerprint = уникальный отпечаток - и ещё немного информации. Самой важной информацией является ID ключа и отпечаток.
Экспорт ключа
Выполнить:
# gpg --armor --export > mylocalkey.ascГде mylocalkey.asc это имя файла, в который внесен данный экспорт (новый файл, он создатся в процессе).
Добавление ключа в apt
Команда выполняется из того же каталога, что и предыдущая (из того, где находится mylocalkey.asc):
# apt-key add mylocalkey.ascПосле этого можно проверить наличие ключа в списке apt:
# apt-key listВыведет все ключи, в том числе и созданный.
Если нужно удалить ключ из apt, то это выполняется командой:
# apt-key del ID_ключаВ этом случае ID_ключа будет 5A81CBE3 (см.выше).
Для того, чтоб можно было если вдруг что случится с системой Linux не скачивать программы заново, а установить из того что уже скачали.
Вот я и подумал, как бы сделать так чтоб эти самые скачанные программы мы могли бы устанавливать самым обычным образом при помощи команды apt-get ? Размышляя о этом я пришёл к мысли о том, а почему бы с этих самых пакетов не создать локальный репозиторий? Подумал, погуглил, взял главный инструмент системного администратора, админский бубен и начал делать.
Итак deb-пакеты у меня находятся там же где я их и оставил, до того как в качестве эксперимента переустановил систему, а именно в домашней директории в папке deb . У меня это /home/dante/deb , я описывал все это , у Вам же та директория куда Вы сохранили пакеты. Открываем терминал и переходим в папку с deb-пакетами. В моём случае в терминале команда выглядит так:
cd /home/dante/deb
Вы же должны ввести путь к своим deb-пакетам.
После того как Вы перешли в папку с сохранёнными deb-пакетами. Вводим следующую команду:
sudo apt-ftparchive packages ./ |gzip -9 > Packages.gz
Далее вводим пароль и ожидаем пока будет создан фаил Packages.gz
Теперь наш репозиторий практически задан, осталось его добавить в source.list
. Обратно беремся за терминал. Открываем файл:
sudo nano /etc/apt/sources.list
У меня данный файл выглядит так:
deb file:///home/dante/deb ./
# deb cdrom:/ oneiric main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://archive.ubuntu.com/ubuntu oneiric main restricted
deb-src http://archive.ubuntu.com/ubuntu oneiric restricted main multiverse universe #Added by software-properties
## Major bug fix updates produced after the final release of the
## distribution.
deb http://archive.ubuntu.com/ubuntu oneiric-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu oneiric-updates restricted main multiverse universe #Added by software-properties
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://archive.ubuntu.com/ubuntu oneiric universe
deb http://archive.ubuntu.com/ubuntu oneiric-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://archive.ubuntu.com/ubuntu oneiric multiverse
deb http://archive.ubuntu.com/ubuntu oneiric-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://archive.ubuntu.com/ubuntu oneiric-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu oneiric-backports main restricted universe multiverse #Added by software-properties
deb http://archive.ubuntu.com/ubuntu oneiric-security main restricted
deb-src http://archive.ubuntu.com/ubuntu oneiric-security restricted main multiverse universe #Added by software-properties
deb http://archive.ubuntu.com/ubuntu oneiric-security universe
deb http://archive.ubuntu.com/ubuntu oneiric-security multiverse
## Uncomment the following two lines to add software from Canonical"s
## "partner" repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
deb http://archive.canonical.com/ubuntu oneiric partner
deb-src http://archive.canonical.com/ubuntu oneiric partner
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb http://extras.ubuntu.com/ubuntu oneiric main
deb http://archive.ubuntu.com/ubuntu/ oneiric-proposed restricted main multiverse universe
deb-src http://archive.ubuntu.com/ubuntu/ oneiric-proposed restricted main multiverse universe
deb-src http://extras.ubuntu.com/ubuntu oneiric main
Для того чтобы добавить нашу папку с deb-пакетами в источники приложений нам необходимо добавить следующую строчку.
deb file:///home/dante/deb ./
Добавлять её лучше в самый верх файла, так как система сначала опрашивает те репозитории которые находятся в начале. Что я как Вы уже увидели я и сделал. У вас путь к папке может быть иной, только не забудьте в конце ./
Все репозиторий добавлен. Можете посмотреть на это в источнике приложений. Теперь Вам осталось лишь обновить списки пакетов. Сделать это можно в терминале при помощи команды:
sudo apt-get update
Вот теперь Мы можем устанавливать программы из своего репозитория который мы создали из сохранённых deb-пакетов. Это ещё и достаточно удобно если мы скачивали deb-пакеты на одном компьютере, а устанавливаем их на другой.
Селфи палки — что это и какие они бывают Лучшие приложения для селфи
Получение Root LG L70 (D325)
Как найти ролик на ютубе, если не знаешь названия
Почему упал ФПС в World of Tanks
Читы на слитки в скайриме - как получить слитки в игре