Робота з репозитарием 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
Якщо пакета немає в кеші, він не буде поставлений.