Робота з репозитарием ubuntu, linuxoid

Всі хто хоч раз спробував в роботі систему управління пакетів прийняту в Ubuntu, ймовірно відмовитися вже від неї не зможе. Зараз спробуємо зняти всі питання, пов'язані пристроєм і роботою сховища пакетів дистрибутива Ubuntu.

Взагалі справедливості варто зазначити, що систему управління пакетів Ubuntu успадкував від Debian. До речі і не тільки він, ще й ALTLinux, MEPIS, Linspire та деякі інші. Тому все описане стосується і цих дистрибутивів. Під репозитарием розуміється спеціальне сховище пакетів. Всі файли в ньому забезпечені індексними списками, які описують що знаходяться в них пакети. Ця інформація використовується менеджером пакетів, дозволяючи легко знайти пакет по його опису, встановити і оновити.

опис репозитаріїв

Пакети в репозитарії структуровані за призначенням, платформі і іншим характеристикам. Список репозитаріїв наведено в файлі /etc/apt/sources.list. Заглянемо всередину (у мене зараз Kubuntu 7.04, але різниці ніякої, ми розбираємося в принципі).

Тобто фактично українське дзеркало збігається з офіційним репозитарием. Причому швидкість закачування днем ​​у мене, як правило, дорівнює приблизно 128 кбайт / сек, а вночі рівно в два рази нижче (ймовірно прокидаються заокеанські користувачі).

Наступним рядком йде назва версії дистрибутива для 7.10 це Gutsy, 7.04 - feisty, 6.10 - edgy, 6.06 - dapper і так далі. Така рядок показує, що будуть використані основні і ретельно відтестовані пакети, що збираються самими розробниками. До назви дистрибутива може бути додано одне з 4 закінчень:

- backports - б не протестували, але часто дуже корисні пакети;

- proposed - пропоновані, але поки не протестовані поновлення;

- security - оновлення безпеки;

- updates - поновлення минулі стадію proposed.

І нарешті остання позиція, представлена ​​ще 4 характеристиками, причому їх вільно можна помістити в одному рядку:

- main - пакети з вільно ліцензією підтримувані розробниками Ubuntu;

- universe - пакети з вільною ліцензією, але підтримувані сторонніми розробниками;

- multiverse - пакети з невільною ліцензією підтримувані сторонніми розробниками;

- restricted - пакети з невільною ліцензією, які не можуть бути змінені, наприклад виконавчі драйвера.

Якщо просуватися далі, то знайдемо ще каталоги, відповідні архітектурі і локалізації. Але додавати тип архітектури та локалізацію в опис репозитария не потрібно, всі ці дані будуть отримані автоматично за поточними налаштувань. Відразу ж виникає питання, що робити, якщо була встановлена ​​версія під i386, а процесор AMD64. Все просто. Відкриваємо файл /etc/apt/apt.conf.d/01ubuntu і в секції APT додаємо наступний рядок:

Або в будь-якому місці:

Зберігаємо зміни, оновлюємо список пакетів і пробуємо отримати невеликий файл, якщо пакет має в назві «amd64» все пройшло як треба. Тепер можна оновити всю систему командою:

$ Sudo apt-get dist-upgrade

Приклади всіх параметрів цього файлу, можна знайти в каталозі / usr / share / doc / apt / examples /.

Самі ж пакети лежать на сайті в іншому підкаталозі pool і розсортовані за дещо іншим принципом, але так як менеджер пакетів приховує всю цю структуру, чіпати її ми не будемо.

Додавання репозитаріїв

У Synaptic репозитарій додається через Setting - Repositories.

Після того як репозиторії додані, слід оновити список пакетів. В консолі це робиться командою:

$ Sudo apt-get update

У Synaptic досить натиснути кнопку Reload, в Adept - Отримати оновлення.

Інформація про репозитариях і пакетах збирається в каталозі / var / lib / apt / lists у вигляді файлів ім'я, якого відповідає назві архіву.

Завітавши сюди можна отримати інформацію про будь-якому пакеті. Втім заглядати і не обов'язково. За вас це зроблять утиліти, наприклад ввівши «sudo apt-cache showpkg gcc-4.1» можна дізнатися все про пакет gcc.

Створення локального сховища

Створити локальну копію сховища можна однією командою (потрібно пакет debmirror):

$ / Usr / bin / debmirror -nosource -m -passive -host = archive.ubuntulinux.org -root = ubuntu -method = ftp -progress -dist = feisty, feisty-security, feisty-updates, feisty-backports -ignore- release-gpg -section = main, restricted, multiverse, universe -arch = i386, amd64

Велика частина параметрів зрозуміла з пояснень вище. Ті у кого жирний канал і багато вільного місця на диску можуть спробувати.

Найчастіше виникає зворотна ситуація, скачати пакети в одному місці і встановити в іншому. Щоб не вдаватися в такому випадку до команди на кшталт «sudo dpkg -i ./*.deb» тобто встановити всі файли з розширенням deb знаходяться в поточному каталозі, краще створити свій репозитарій яким користуватися як зазвичай apt-get. Щоб створити список пакетів нам знадобиться утиліта dpkg-scanpackages що входить до складу dpkg-dev.

$ Sudo apt-get install dpkg-dev

Тепер створюємо каталог, в який звалюємо все пакети.

$ Dpkg-scanpackages. / Dev / null | gzip -9c> Packages.gz

Після закінчення буде виданий список пакетів і їх число.

І щоб додати новий репозитарій в sources.list прописуємо шлях до створеного каталогу:

Зберігаємо зміни і вводимо «sudo apt-get update» якщо в / var / lib / apt / lists додався новий каталог можна вітати себе з перемогою. Тепер можна цей каталог копіювати на інші системи. Природно при додаванні в нього пакетів процедуру доведеться повторити.

В Інтернет можна знайти досить опису того, як перенести свій репозитарій на CD / DVD, займають вони понескольку сторінок. Я б запропонував варіант простіше - використовувати утиліту APTonCD (aptoncd.sourceforge.net). Спочатку встановимо її командою:

$ Sudo apt-get install aptoncd

І викликаємо через меню Система. Користуватися програмою дуже просто. В j вкладці Create натискаємо кнопку Create APTonCD, буде просканований каталог / var / cache / apt / archives і всі файли будуть додані в проект. Далі натискаємо Add Packages і вказуємо на пакети лежать окремо. Натискаємо Options і в Media Type вибираємо тип образу CD або DVD, а в Destination Folder каталог, куди буде поміщений ISO-образ.

Натискаємо OK, програма створить образ і запросить записати його на носій. Просто супер. На вкладці Restore можна скопіювати (тобто відновити) всі файли назад, додати CD-ROM.

Як бачите репозитарій пакетів Ubuntu одночасно потужна і в той же час проста у використанні система. Сподіваюся, тепер проблем з установкою пакетів у вас не виникне. Linux forever!

Як оновити тільки пакети знаходяться в архіві APT

Для того щоб змусити apt оновити систему використовуючи тільки пакети з кешу / var / cache / apt / archives,
а не лізти за ними в інтернет, потрібно виконати:

apt-get -no-download -ignore-missing upgrade

Якщо пакета немає в кеші, він не буде поставлений.