Создание локального репозитория. Настройка локальных репозиториев в Linux Как создать локальный репозиторий
Если вы системный администратор, то вам нужно часто устанавливать новый софт, обновления безопасности и другие патчи в ваших системах. Если бы компьютер был один, то это бы не вызвало проблем, но обычно в сети несколько компьютеров и всем им нужны обновления. Это может снизить пропускную способность сети. В каждой системе приложения будут скачиваться и устанавливаться непосредственно из репозиториев 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, а всего лишь используем прокси для загрузки пакетов.
Выводы
Вот и все. Эта технология будет очень полезной системным администраторам, а также обычным пользователям, у которых слабый интернет. Если у вас остались вопросы, спрашивайте в комментариях!
Создание локального репозитория c помощью утилиты apt-mirror.
Этот способ зеркалирования, рекомендован WiKi Debian как гораздо более надёжней нежели debmirror.
Итак начнём, установим apt-mirror
:
apt-get install apt-mirror
Создаём каталог /mnt/repo/debian, в нём будет создаваться локальный репозиторий пакетов. Желательно чтобы это был примонтированный логический раздел жёсткого диска, чтобы в случае переустановки дистрибутива с нуля, при форматировании корневого раздела (/), не лишиться репозитория совсем. И служебных каталогов:
mkdir -p /mnt/repo/debian/{mirror,var,skel}
Настройка apt-mirror
Допустим нам нужно зеркало с готовыми к установке (бинарными) пакетами для x64 Wheezy.
()
Правим конфигурационный файл /etc/apt/mirror.list:
nano /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
#
# Пусть к скрипту постобработки, по-умолчанию отсутствует, пока нам не нужен.
# set postmirror_script $var_path/postmirror.sh
#
# Не запускать скрипт постобработки
set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config ##############
# Зеркало с пакетами wheezy x64 + исходные тексты
deb-amd64 ftp://debian.nsu.ru/debian wheezy main contrib non-free
deb-src ftp://debian.nsu.ru//debian wheezy main contrib non-free
# Зеркало с обновлениями безопасности wheezy + исходные тексты
deb-amd64 http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
# Зеркало необходимое для сетевой установки (udebs)
deb-amd64 ftp://debian.nsu.ru/debian wheezy main/debian-installer
# Удаляем файлы не индексированные в Release
clean ftp://debian.nsu.ru/debian
clean http://security.debian.org
# Запрещаем очистку выбранной папки
skip-clean ftp://debian.nsu.ru/debian/dists/wheezy/main/installer-amd64/
Если необходимо хранить несколько зеркал для разных выпусков и архитектур, то добавляем новые строки типа:
#deb-alpha http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-amd64 http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-armel http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-hppa http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-i386 http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-ia64 http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-m68k http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-mips http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-mipsel http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-powerpc http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-s390 http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-sparc http://ftp.us.debian.org/debian unstable main contrib non-free
Запуск и автоматизация apt-mirror
Для ручного запуска создания\обновления зеркала выполняем команду:
# apt-mirror
После загрузки индексных файлов apt-mirror сообщит, какой объём пакетов нужно получить:
Downloading 47 index files using 20 threads...
Begin time: Wed Jan 8 21:41:11 2014
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
End time: Wed Jan 8 21:41:33 2014
Proceed indexes:
84.2 GiB will be downloaded into archive.
Downloading 90890 archive files using 20 threads...
Begin time: Wed Jan 8 21:41:50 2014
...
...
...
...
Остаётся только дождаться завершения скачивания.
Для автоматической синхронизации и очистки зеркал нужно добавить строку в настройки cron и выставить подходящее время. Обновление официальных зеркал происходит каждые 6 часов: 3:00,9:00,15:00,21:00. Например так:
crontab -l
05 01 * * * apt-mirror >> /var/log/apt-mirror.log
05 03 * * * /mnt/repo/debian/var/clean.sh >> /var/log/apt-mirror.log
Настройка доступа к зеркалу
После завершения работы локальные копии всех указанных репозиториев окажутся в каталогах /mnt/repo/debianmirror/имя_репозитория. Таким образом копия репозитория, которая была определена в mirror.list как
deb-amd64 ftp://debian.nsu.ru/debian wheezy main contrib non-free
окажется в каталоге /mnt/repo/debian/mirror/debian.nsu.ru/debian/ . Доступ именно к этому каталогу нужно открывать любым удобным для Вас Web или FTP сервером. Для корректной работы обязательно необходимо добавить символические ссылки «stable»,»testing», «unstable» если таковы имеются …
ln -s /mnt/repo/debian/mirror/debian.nsu.ru/debian/dists/wheezy /mnt/repo/debian/mirror/debian.nsu.ru/debian/dists/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 (см.выше).
Как известно, в Ubuntu реализовано централизованное хранение информации обо всех основных программах в одном месте, для более удобного поиска и последующей их установки. Этим местом является менеджер пакетов Synaptic. (Система -> Администрирование -> Менеджер пакетов Synaptic) Для инсталляции программы вам необходимо её только найти в списке и отметить для установки, далее программа будет автоматически скачана из интернета и установлена.
Основные программы, которые могут пригодиться при работе в ОС Ubuntu, хранятся в так называемом репозитории на официальном сервере Ubuntu. Каждый раз, когда вы отмечаете для установки ту или иную программу в менеджере пакетов Synaptic, она сперва скачивается.
Но что делать, если у вас очень медленный или дорогой интернет, или может у вас вообще отсутствует доступ во всемирную сеть, или вы просто не хотите зависеть от подключения к интернету работая в Linux Ubuntu? Можно, конечно, скачать все необходимые программы (пакеты) по одной, а потом вручную устанавливать, но кто знает, какая программа вам пригодится в дальнейшем?
Решением данной проблемы является создание локального репозитория, т.е. полной или частичной копии официального репозитория у себя на жестком диске. Таким образом, однажды скачав весь репозиторий, у вас больше не будет зависимости от интернета.
Итак, приступим.
1. Для создания копии (среза) репозитория у себя на жестком диске, существует специальная программа: debmirror. Соответственно, для начала вам её необходимо установить из того же менеджера пакетов Synaptic
или набрав команду в терминале:
sudo apt-get install debmirror
2. Создаём папку в домашней дирректории, в которой будет храниться срез репозитория (или даже несколько), к примеру, назовём её Repositories.
Перейдём в папку Repositories:
и создадим в ней файл скрипта с именем archive.ubuntulinux.org.sh:
gedit archive.ubuntulinux.org.sh
Вставляем в этот файл следующее:
#!/bin/bash -x
/usr/bin/debmirror --nosource -m --passive --host=archive.ubuntulinux.org \
--root=ubuntu --method=ftp --progress \
--dist=hardy,hardy-security,hardy-updates,hardy-backports \
--ignore-release-gpg --section=main,restricted,multiverse,universe \
--arch=i386 /полный/путь/к/папке/куда/нужно/скачать/репозиторий/
полный путь у вас должен выглядеть примерно следующим образом: /home/aidsoid/Repositories/ru.archive.ubuntu.com/
и сохраняем его. После сохранения нужно сделать файл запускаемым (chmod +x archive.ubuntulinux.org.sh).
Приведённый выше пример будет выкачивать репозиторий для Ubuntu 8.04 (Hardy Heron), если вы всё еще используете старую версию Ubuntu 7.10 (Gutsy Gibbon), то вам необходимо немного подправить этот скрипт, в частности, необходимо изменить значения параметра --dist с hardy на gutsy. Также следует обратить внимание на параметр --arch, который указывает на архитектуру вашего компьютера, значение i386 говорит о том, что будут скачаны пакеты для компьютера с архитектурой x86. Этот параметр также может принимать значение amd64 для 64-битных AMD или Intel компьютеров.
4. Ну вот, собственно говоря и всё, теперь можно запускать скрипт на выполнение, для этого в консоли, находясь в папке Repositories, наберите следующую команду:
./archive.ubuntulinux.org.sh
Скрипт начнёт свою работу. Весь репозиторий занимает около 20-30 Гигабайт, так что перед скачиванием обеспечьте свободное место на диске. В любой момент можно безболезненно прервать работу скрипта, нажатием сочетания кнопок Ctrl+C. При повторном запуске скрипта, он продолжит скачивание недокачанных пакетов. Также повторный запуск скрипта позволит обновить ваш локальный репозиторий, т.е. проверяется наличие новых версий программ и они также выкачиваются.
Примечание: пользователей Ubuntu 7.10 ожидает один маленький подводный камень, пользователям Ubuntu 8.04 беспокоиться не о чем. Существует ошибка в debmirror’е, из-за которой при повторном запуске скрипта удаляется папка pool из локального репозитория. Её необходимо исправить перед запуском скрипта. Описание ошибки тут: https://bugs.launchpad.net/ubuntu/+source/debmirror/+bug/136634
Лечится ошибка просто:
$ sudo gedit /usr/bin/debmirror
заменяете в редакторе строку local $/="\n\n"; на local $/="\n"; и сохраняете файл. Теперь обновление репозитория пройдёт без происшествий.
5. После того как скрипт скачается (это может занять длительное время), вы сможете использовать его, добавив deb строку в источники приложений. (Система -> Администрирование -> Источники приложений)
deb строка должна указывать на папку с репозиторием и выглядит примерно следующим образом:
deb file:///home/aidsoid/Repositories/ru.archive.ubuntu.com/ hardy main restricted multiverse universe
В данной статье мы рассмотрим, как создать новый пустой Git репозиторий. Мы создадим локальный репозиторий, а также рассмотрим, как создать удаленный репозиторий на примере Github.
Как создать новый пустой репозиторий
Создайте пустую директорию для вашего будущего репозитория и перейдите в нее:
Mkdir myproject cd myproject
Теперь, чтобы создать в нашей директории новый репозиторий, выполните команду:
Git init
В результате будет создан новый локальный пустой репозиторий. На экран будет выведено сообщение вида:
Initialized empty Git repository in /path/to/myproject/.git/
В директории myproject появится скрытая папка .git . Ее можно увидеть, выполнив команду ls -al
Как создать репозиторий из существующих файлов
Предположим, что у вас уже есть какой-то проект, для которого вы хотите создать Git репозиторий. Создание репозитория выполняется точно также, как описано выше. Перейдите в папку проекта:
Cd myproject
Создайте репозиторий:
Git init
Теперь можно добавить все файлы в индекс и сделать первый коммит:
Git add -A git commit -m "First commit."
Как создать удаленный репозиторий (на примере Github)
Вы создали локальный репозиторий, теперь, например, вам нужно добавить его на Github, тем самым вы фактически создадите удаленный репозиторий.
Перейдите на https://githib.com и войдите в свой аккаунт. Нажмите кнопку New repository (Новый репозиторий). На открывшейся странице введите имя репозитория (Repository name ) и нажмите кнопку Create repository .
В своем локальном репозитории теперь выполните команду:
Git remote add origin https://github.com/username/myproject.git
Данная команда добавит удаленный репозиторий с именем origin , который указывает на ваш Github-репозиторий . Пока мы только добавили запись об удаленном репозитории.
Теперь можно выполнить команду git push , чтобы отправить все ваши изменения на удаленный репозиторий:
Git push -u origin master
Вам нужно будет ввести логин и пароль аккаунта в Github. Результат команды будет примерно следующим:
$ git push -u origin master Username for "https://github.com": [email protected] Password for "https://[email protected]@github.com": Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (4/4), 252 bytes | 252.00 KiB/s, done. Total 4 (delta 0), reused 0 (delta 0) remote: remote: Create a pull request for "master" on GitHub by visiting: remote: https://github.com/username/myproject/pull/new/master remote: To https://github.com/username/myproject.git * master -> master Branch "master" set up to track remote branch "master" from "origin".
В команде git push мы использовали ключ -u . Данный ключ используется для того, чтобы связать локальную ветку master с удаленной origin/master (в нашем случае удаленной ветки не существовало, она автоматически была создана). Так как связь установлена, то последующие выполнения git push из ветки мастер можно выполнять без указания веток. То есть вместо git push origin master ), можно просто выполнять команду git push .