Розділ 6 - Керування пакунками Дебіен
Рекомендованим засобом для роботи з АРТ (англ. Advanced Package Tool, Прогресивний пакунковий інструмент) є aptitude. Він пам'ятає, котрі пакунки ви встановклювали свідомо, а котрі були встановлені завдяки залежностям; останні автоматично видаляються як тільки стають непотрібними. Він також має розширені можливості по фільруванню пакунків, проте вони доволі складні для конфігурування.
Рекомендованим графічним інструментом для роботи з АРТ є synaptic, побудований на базі графічної бібліотеки Gtk. Його можливості по фільтруванню значно легші для використання, аніж в aptitude. Він також має експерементальну підтримку Ярличків пакунків Дебіен (Debian Package Tags).
Щоб зменшити мережеве навантаження на репозиторії Дебіен і збільшити звидкіть ваших звантажень, вам потрібно шукати пакунки Дебіен на дзеркальних сайтах.
Якщо вам потрібно встановити однаковий пакунок на кілька машин у локальній мережі, ви можете налаштувати локальний НТТР-проксі за допомогою squid'а для пакунків, що звантажуються за допомогою АРТ. Якщо потрібно, задайте змінну середовища http_proxy
у файлі /etc/apt/apt.conf.
Варто згадати також про таку можливість АРТ як прикріплювання (англ. pinning), що описана в apt_preferences(5). І хоча її можливості важко зрозуміти, а тим паче керувати ними, але вам потрібно розглядати її як Передову Можливість.
Використання методи, chroot описаної в параграфі 8.6.35 дозволяє і підтримувати стабільність та безпеку системи і водночас використовувати найновіші версії програмного забезпечення.
Даний розділ описує можливості систем новіших за Woody, тому деякі можливості можуть прицювати лише в збірках Sarge і новіших.
Вступ
Якщо читання всієї розробницькох документації - це для вас занадто, прочитайте спершу цей розділ і починайте захоплюватись всією міццю тестової/нестабільної Дебіен :о)
Головні інструменти керування пакунками
dpkg : встановлювач пакункових файлів Дебіен
apt-get : фронтенд АРТ для командного рядка
aptitude : розширений фронтенд АРТ з текстовим та псевдографічним інтерфейсом
synaptic : графічний фронтенд АРТ базований на бібліотеці Gtk
dselect : Керівник пакунків, базований на системі меню
tasksel : встановлювач задач
Ці інструменти не є альтернативами одне одного. Наприклад, dselect використовує у свої роботі як APT так і dpkg.
АРТ для відслідковування доступних пакунків використовує /var/lib/apt/lists/*, тоді як dpkg використовує /var/lib/dpkg/available. Якщо ви встановлювали пакунки за допомогою aptitude чи інших фронтендів АРТ, а надалі хочете використовувати dselect, тоді ви повинні оновити /var/lib/dpkg/available вибравши "Оновити" ([U]pdate) у меню dselect (або запустивши "dselect update").
apt-get автоматично встановлює всі пакунки, від котрих залежить встановклюваний. Але він не встановлює рекомендовані та пропоновані пакунки.
aptitude, натомість, може бути сконфігурований таким чином, щоб встановлювати рекомендовані чи пропоновані пакунки.
dselect показує користувачеві список рекомендованих та пропонованих пакунків і дозволяє індивідуально задати, котрі з них встановлювати, а котрі - ні. Див. також параграф 2.2.8 "Залежності пакунків".
Початок керування пакунками Дебіен
Налаштування АРТ
Налаштуйте файл sources.list так, як це описано в Підготовці до оновлення, параграф 5.2. Прогляньте також Підказки по встановленню системи Дебіен, розділ 3; Оновлення збірки до стабільної, тестової або нестабільної, розділ 5 та Рятівні редактори, ?параграф 11.2
Встановлення завдань
Ви можете встановити набір типових пакунків, необхідних для використання Дебіен у певній іпостасі. Такі набори називаються "завданнями" (англ. "tasks").
Найпростіший спосіб встановити завдання в період початкового встановлення - це використання tasksel. Зауважте, що перед цим ви повинні запустити
dselect update
aptitude також може встановлювати завдання і взагалі-то є рекомендованим інструментом для цього. Він дозволяє відібрати необхідні пакунки всередині завдання перед запуском власне встановлення.
aptitude
aptitude - це оснований на меню встановлювач пакунків подібний до dselect, але скомпонований з нуля для роботи з використанням всіх можливостей АРТ. Він може використовуватись як альтернатива apt-get для більшості випадків. Деталі шукайте в aptitude(1) та /usr/share/doc/aptitude/README.
Якщо ви вже розпочали використовувати aptitude, найкращим рішенням буде продовжувати це робити, а не використовувати альтернативні методи встановлення пакунків, а то ви втратите можливість відслідковувати свідомо встановлені пакунки.
У повноекранному режимі aptitude розуміє командні клавіші, котрі завжди вводяться у нижньому регістрі. Ось деякі з них:
Команда-клавіша | Дія |
---|---|
F10 | Меню |
? | Повний список команд |
u | Обновити інформацію про архівний пакунок |
+ | Помітити пакунок для оновлення чи встановлення |
- | Помітити пакунок для видалення (але зберегти конфігураційні файли) |
_ | Помітити пакунок для повного видалення (разом з конфігураційними файлами) |
= | Зафіксувати пакунок |
U | Помітити для оновлення всі пакунки, котрі можуть оновитись |
g | Звантажити і встановити вибрані пакунки |
q | Вийти з поточного вікна і зберегти зміни |
x | Вийти з поточного вікна і відхилити зміни |
Ентер | Проглянути інформацію про пакунок |
C | Проглянути список змін у пакунку |
l | Змінити кількість показуваних пакунків |
/ | Пошук першого співпадання |
\ | Повторити останній пошук |
Подібно до apt-get aptitude встановлює пакунки, від котрих залежить встанолюваний. Також aptitude пропонує опції для обробки рекомендованих чи пропонованих пакунків. Ви можети змінити типову поведінку вибравши F10 -> Опції -> Обробка залежностей.
Додатковими можливостями apitiude є:
- доступ до всіх версій пакунку
- журнал роботи, доступний у /var/log/aptitude
- зручне відслідковування застарілих програм за допомогою списку "Застарілі та створені локально пакунки".
- справді потужна система дял пошуку потрібних пакунків та обмеження показу пакунків. ЇЇ синтаксис подібний до mutt, тому оористувачі, знайомі з mutt, опанують її дуже швидко. Додатково гляньте "ПОШУК, ОБМЕЖЕННЯ ТА ВИРАЗИ" ("SEARCHING, LIMITING, AND EXPRESSIONS") у /usr/share/doc/aptitude/README.
- вбудована функціональність su у повноекранному режимі, що дозволяє запускати її від простого користувача та використовувати адміністративні привілеї лише там, де це справді необхідно
dselect
У стабільних випусках до Potato включно dselect був єдиним інструментом для роботи з пакунками. Починаючи з Sarge ви може можете використовувати aptitude.
Після запуску dselect автоматично вибирає всі "Обов'язкові", "Важливі" та "Типові" пакунки.
У dselect дещо доивний інтерфейс користувача, проте більшість людей його таки використовують. У нього є чотири команди (великі літери означають саме ВЕЛИКІ ЛІТЕРИ!):
Команда-клавіша | Дія |
---|---|
Q | Вихід. Підтверджує поточний вибір і в будь-якому випадку виходить. |
Перезаписує залежності | |
R | Поміняти на протилежне. Я цього просто не розумію! |
D | До біса! Мене не цікавить, що думає dselect. Просто зробіть це. |
U | Перевести всі пакунки в групу "Пропоновані" |
За допомогою D i Q ви можете на вланий ризик вибирати конфліктуючі пакунки. Обережно користуйтесь цими командами.
Додайте рядок з опцією "expert" до файлу /etc/dpkg/dselect.cfg щоб позбутись шуму (мається на увазі зменшити кількість уточнюючих запитань - прим. перекладача)
Якщо на вашій машині dselect повільно запускається, спробуйте запустити його на іншій (швидшій) машині, вибрати потрібні пакунки а потім запустити на повільній машині apt-get install щоб встановити їх.
Відслідковування збірок за допомогою APT
Щоб відслідковувати тестову збірку з її змінами, приведіть фаш файл /etc/apt/preferences до ось такого вигляду:
Package: *
Pin: release a=testing
Pin-Priority: 800
Package: *
Pin: release a=stable
Pin-Priority: 600
Зауважте, що відслідковування тестової збріки може мати побічний ефект у вигляді затримок при встановленні пакунків, що мають проблеми з безпекою. Такі пакунки вивантажуться у нестабільну збірку і повертаються назад до тестової лише через деякий час.
Детальніші приклади, котрі дозволять вам, наприклад, відслідковувати тестову збірку і водночас встановлювати деякі пакунки з нестабільної, описуються у apt_preferences(5).
Приклади з фіксуванням певних версій певних пакунків в той час як інші поновлюються по мірі випуску нових версій, доступні у каталозі examples - файли preferences.testing і preferences.unstable.
Якщо ви змішуєте збірки, наприклад тестову та стабільну чи нестабільну з стабільною, вам краще за все фіксувати ключові пакунки, як наприклад libc6, оскільки немає гарантії, що їх нові версії не матимуть критичних вад. Ви попереджені.
Інший приклад, preferences.stable, примусово повертає всі пакунки до версій стабільної збірки.
Повернення з новішої версії пакунку до попередньої офіційно не підтримується в Дебіен. Проте, вам може знадобитись повернути котрийсь пакунок до попередньої працюючої версії через вади у новій. Файли з попередніми версіями пакунків на локальній машині знаходяться у каталозі /var/cache/apt/archives/ а в тенетах доступні за адресою http://snapshot.debian.net/. Перегляньте також параграф 6.3.3 "Порятунок за допомогою dpkg".
Повернення від новішої версії збірки також офіційно не підтримується та запросто може створити купу проблем. Проте, якщо вам геть зовсім нічого робити, ви можете спробувати порозважатись таким чином.
Команди aptitude, apt-get та apt-cache
Відслідковуючи тестову збірку як описано у прикладі вище, ви можете керувати оновленням вашої системи за допомогою наступних команд:
aptitude upgrade # або
apt-get upgrade # або
aptitude dist-upgrade # або
apt-get dist-upgrade
Вони поновлюють кожен пакунок в системі після встановлення версій пакунків, від котрих він залежть, з тестової збірки
apt-get dselect-upgrade
Ця команда відслідковує тестову збірку, поновлюючи кожен пакунок в системі відповідно до вибору у dselect.
aptitude install пакунок/unstable
Ця команда встановлює пакунок з нестабільної збірки, а пакунки, від котрих він залежить - з тестової.
aptitude install -t unstable пакунок
Ця команда встановлює пакунок з нестабільної збірки разом із пакунками, від котрих він залежить; для цих пакунків нестабільний пін-пріоритет виставляється рівним 990.
apt-cache policy шняга бяка ...
Ця команда перевіряє статус пакунків шняга, бяка, ...
aptitude show шняга бяка ... | less # або
apt-cache show шняга бяка ... | less
Показує інформацію про пакунки шняга, бяка, ....
aptitude install шняга=2.2.4-1
Встановлює вказану версію 2.2.4-1 пакунку шняга.
aptitude install шняга бяка-
Встановлює пакунок шняга і видаляє пакунок бяка.
aptitude remove шняга
Видаляє пакунок шняга, не чіпаючи при цьому його конфігураційні файли.
aptitude purge шняга
Видаляє пакунок шняга разом з конфігураційними файлами.
Якщо у вищенаведених прикладах apt-get задавати опцію -u, він виводитиме список пакунків, що будуть оновлені, та перепитуватиме у користувача дозволу перед виконанням операцій. Наступна команда заставляє aрt-get робити це постійно:
$ cat >> /etc/apt/apt.conf << .
// Завжди показувати, які пакунки будуть оновлені (-u)
APT::Get::Show-Upgraded "true";
.
Використовуйте опцію --no-act щоб лише імітувати виконання операцій встановлення, видалення і т.п.
Команди виживання в Дебіен
З цими командами ви можете жити у стані постійного оновлення :о)
Виявлення вад та пошук допомоги у Дебіен
Якщо у вас виникли проблеми з певним пакунком, переконайтесь що ви перевірили нижченаведені майданчики перш ніж починати пошуки чи відправляти повідомлення про ваду (lynx, links, та w3m досі працюють):
$ lynx http://bugs.debian.org/
$ lynx http://bugs.debian.org/назва-пакунку # якщо ви знаєте назву пакунку
$ lynx http://bugs.debian.org/номервади # якщо ви знаєте номер вади
Пошукайте в Google (http://www.google.com) з опцією "site:debian.org".
Якщо вагаєтесь, прочитайте цікаву інструкцію. Встановіть CDPATH наступним чином:
export CDPATH=.:/usr/local:/usr/share/doc
і введіть
$ cd назва_пакунку
$ pager README.Debian # якщо існує
$ mc
Додаткові ресурси по підтримці перелічені у ?розділі 15 "Підтримка Дебіен".
Вирішення проблем при оновленні за допомогою APT
Під час оновлення до тестової чи нестабільної збірки, як це описано у параграфі 5.3, можуть виникнути проблеми з залежностями пакунків. Більшість з них виникають тому, що оновлюваний пакунок залежить від іншого, котрий недоступний на даний момент. Такі проблем вирішуються командою
# aptitude dist-upgrade
Якщо вона не спрацовує, спробуйте одну з наступних:
# aptitude -f upgrade # продовжити оновлення навіть після помилок
# ... або
# aptitude -f dist-upgrade # продовжити оновлення збірки навіть після помилок
Деякі дійсно поламані оновлювані сценарії можуть викликати постійні проблеми. Їх краще вирішувати переглядом сценаріїв /var/lib/dpkg/info/назва_пакунку.{post,pre}{inst,rm} відповідного пакунку і наступним запуском:
# dpkg --configure -a # конфігурує всі частково встановлені пакунки
Якщо сценарій завершує свою роботу повідомленням про відсутній конфігураційний файл, пошукайте відповідний файл у каталозі /etc/. Якщо він існує з розширенням .dpkg-new (або щось наподобі), перейменуйте його, видаливши суфікс.
Проблеми з залежностями пакунків можуть виникнути при встановленні їх з тестової чи нестабільної збірок. Для вирішення проблем циклічних залежностей існують свої способи.
# aptitude -f install package # перезаписувати поламані залежності
Альтернативний метод виправлення ситуації - це використання пакунку equivs. Глянь /usr/share/doc/equivs/README.Debian та параграф 6.5.2 "Пакунок equiv".
Порятунок за допомогою dpkg
Якщо використовуючи АРТ ви остаточно зайшли в тупик, ви можете звантажити файли пакунків з дзеркал Дебіен і встановити їх за допомогою dpkg. Якщо у вас немає доступу до мережі, пошукайте збережені копії пакунків у каталозі /var/cache/apt/archives/.
# dpkg -i fetchmail_6.2.5-4_i386.deb
Якщо спроба встановлення цього пакунку провалилась із-за проблем з залежностями, а вам справді потрібно встановити пакунок, ви можете переозначити перевірку залежностей за допомогою опцій штибу --ignore-depends, --force-depends та інших. Деталі описуються в dpkg(8).
Відновлення даних про стан вибору пакунків
Якщо файл /var/lib/dpkg/status з якихось причин пошкоджено, Дебіен не може отримати інформацію про стан пакунків і дуже із-за цього страждає. Пошукайте старі файли /var/lib/dpkg/status та /var/lib/dpkg/status-old або /var/backups/dpkg.status.*.
Непоганою ідеєю було б тримати каталог /var/backups окремим розділом, оскільки він містить багато важливих системних даних.
Якщо файл /var/lib/dpkg/status також недоступний, ви все ж можете відновити інформацію з каталогів, розташованих у /usr/share/doc/.
# ls /usr/share/doc | \
grep -v [A-Z] | \
grep -v '^texmf$' | \
grep -v '^debian$' | \
awk '{print $1 " install"}' | \
dpkg --set-selections
# dselect --expert # перевстановити систему, при потребі з відміною вибраних пакунків
Відновлення системи після збою /var
Оскільки каталог /var містить регулярно поновлювані дані на кшталт пошти, ймовірність його пошкодження більша, аніж, наприклад, /usr/. Винесення /var на окремий розділ зменшує цей ризик. Якщо біда все ж сталась, ви можете перекомпонувати каталог /var щоб відновити вашу систему.
Роздобудьте вміст каталогу /var з мінімально працюючої системи Дебіен тієї ж, або старішої версії, що й у вас, запакуйте його наприклад у var.tar.gz і покладіть у кореневий каталог пошкодженої системи. Далі
# cd /
# mv var var-old # якщо хоч щось залишилось
# tar xvzf var.tar.gz # використовуємо отриманий файл
# aptitude # або dselect
В результаті ви повинні отримати працюючу систему. Ви можете прискорити відновлення інформації про вибрані пакунки за допомогою методу, описаного у попередньому параграфі. ([Поправити]: Ця процедура потребує деяких експериментів для перевірки правильності виконання.)
Встановлення пакунку у незавантажувану систему
Заватажте Дебіен за допомогою рятівної дискети/компакт-диску/живчика чи альтернативного розділу. Гляди також параграф 8.1 "Завантаження системи". Примонтуйте незавантажувану систему наприклад у каталог /target та використайте режим встановлення chroot.
# dpkg --root /target -i packagefile.deb
Далі сконфігуруйте та виправте проблеми.
До речі, якщо пошкоджене lilo - це все, що заважає завантаженню, ви можете завантажитись з типового рятівного диску Дебіен. У повідомленні завантажувача, якщо вам, припустимо, потрібно заватажитись на 3 рівень виконання і ваша система знаходиться на розділі /dev/hda12, введіть:
boot: rescue root=/dev/hda12 3
Далі ви завантажитесь у практично повнофункціональну систему з ядром на зовнішньому носії. (Можуть бути незначні проблеми із-за непідтримуваних можливостей чи відсутніх модулів у типовому ядрі)
Що робити, якщо пошкоджено dpkg
Пошкоджений dpkg може унеможливити встановлення будь-якого .deb-файлу. Нижчеописана процедура допоможе вам виправити цю ситуацію (У першому рядку ви можете замінити "links" вашим улюбленим броузером)
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
# ... звантажити непошкоджений dpkg_версія_архітектура.deb
$ su
password: *****
# ar x dpkg_version_arch.deb
# mv data.tar.gz /data.tar.gz
# cd /
# tar xzfv data.tar.gz
Для архітектури i386 можна також користуватись майданчиком http://packages.debian.org/dpkg.
Команди нірвани Дебіен
Просвітління від цих команд врятує людину від вічної боротьби з пеклом оновлень та дозволить досягти нірвани Дебіен :о)
Інформація про файл
Щоб знайти пакунок, якому належить вказаний файл, введіть
$ dpkg {-S|--search} pattern
Або щоб знайти те ж саме у архівах Дебіен:
$ wget http://ftp.us.debian.org/debian/dists/sarge/Contents-i386.gz
$ zgrep -e pattern Contents-i386.gz
Або вживайте спеціалізовані команди:
# aptitude install dlocate # конфліктує з slocate (безпечнішою версією locate)
$ dlocate filename # швидка альтернатива dpkg -L і dpkg -S
...
# aptitude install auto-apt # інструмент для встановлення пакунків за вимогою
# auto-apt update # створити файл бази даних auto-apt
$ auto-apt search шаблон
# шукати шаблон у всіх пакунках, як у встановлених так і в невстановлених
Інформація про пакунок
Переконайтесь, що АРТ вказує на коректні архіви Дебіен і при потребі відредагуйте файл /etc/apt/sources.list. Якщо ви хочете побачити різницю між пакунками у тестовій/нестабільній та стабільній версіях, використовуйте apt-cache policy - досить зручно.
# apt-get check # оновити кеш та перевірити поламані пакунки
$ apt-cache search шаблон # пошук серед текстових описів пакунків
$ apt-cache policy пакунок # інформація про пріоритет/збірки
$ apt-cache show -a пакунок # показати опис пакунку у всіх збірках
$ apt-cache showsrc пакунок # показати опис відповідного джерельного пакунку
$ apt-cache showpkg пакунок # інформація для відладки
# dpkg --audit|-C # шукати частково встановлені (недовстановлені) пакунки
$ dpkg {-s|--status} пакунок ... # опис встановленого пакунку
$ dpkg -l пакунок ... # статус встановленого пакунку (по рядку на пакунок)
$ dpkg -L пакунок ... # вивести список файлів, що їх встановив пакунок
apt-cache showsrc
не документована для випуску Woody, але все ж працює :о)
Ви також можете знайти інформацію в (я користуюсь mc щоб там лазити):
/var/lib/apt/lists/*
/var/lib/dpkg/available
Порівняння наступних файлів показує інформацію про те, що трапилось за останні кілька встановлювальних сесій.
/var/lib/dpkg/status
/var/backups/dpkg.status*
Автоматичне встановлення за допомогою АРТ
Для автоматичного встановлення в /etc/apt/apt.conf додайте наступний рядок:
Dpkg::Options {"--force-confold";}
Це те ж саме, якби ви запустили aptitude -y install назвапакунку чи apt-get -q -y install назвапакунку. Оскільки в цьому випадку на всі запитання автоматично дається відповідь "Так", це може викликати проблеми, тож обережно використовуйте цей фокус. Додатково гляньте apt.conf(5) та dpkg(1).
Ви можете переконфігурувати будь-який пакунок пізніше, як це описано у наступному параграфі.
Переконфігурування встановлених пакунків
Наступні команди дозволяють переконфігурувати будь-який встановлений пакунок:
# dpkg-reconfigure --priority=medium пакунок [...]
# dpkg-reconfigure --all # переконфігурувати всі пакунки
# dpkg-reconfigure locales # генерувати додаткові локалі
# dpkg-reconfigure --p=low xserver-xfree86 # переконфігурувати X-сервер
Деякі програми поставляються з особливими конфігураційними сценаріями.
Команда | Опис |
---|---|
apt-setup | створити /etc/apt/sources.list |
install-mbr | встановити керівник Первинного завантажувального блоку |
tzconfig | задати локальну часову зону |
gpmconfig | налаштувати демон миші gpm |
sambaconfig | конфігурувати Самбу у старих збірках (до версії 3.0) |
eximconfig | конфігурувати Екзім |
texconfig | конфігурувати тeTeX |
apacheconfig | конфігурувати Апач (httpd) |
cvsconfig | конфігурувати систему контролю версій CVS |
sndconfig | конфігурувати звукову систему |
... | |
update-alternatives | задати типові команди, як наприклад запуск vim при вводі vi |
update-rc.d | керування завантажувальними сценаріями System-V |
update-menus | система меню Дебіен |
... |
Видалення та очищення пакунків
Видалити пакунок і зберегти при цьому його налаштування можна командами
# aptitude remove package ...
# dpkg --remove package ...
Видалити пакунок разом зі всіма конфігураційними файлами можна за допомогою
# aptitude purge package ...
# dpkg --purge package ...
Фіксування застарілих пакунків
Наприклад, фіксування libc6 та libc6-dev для deselect i aptitude може бути здійснене наступним чином:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
Правда команда aptitude install проігнорує таке фіксування. Щоб зафіксувати пакунок від автоматичного оновлення за допомогою aptitude upgrade чи aptitude dist-upgrade, додайте наступні рядки до /etc/apt/preferences:
Package: libc6
Pin: release a=stable
Pin-Priority: 2000
Тут запис "Package:" (пакунок) не може містити шаблони штибу "libc6*". Якщо вам потрібно зафіксувати всі пакунки, що стосуються джерельного пакунку glibc, вам потрібно додати їх вручну.
Наступна команда показує список зафіксованих пакунків:
dpkg --get-selections "*"|grep -e "hold$"
Змішана стабільна/тестова/нестабільна система
Команда apt-show-versions може перелічити версії для доступних у збірці пакунків.
$ apt-show-versions | fgrep /testing | wc
# ... скільки у вас версій з тестової збірки
$ apt-show-versions -u
# ... список пакунків, що їх можна оновити
$ aptitude install `apt-show-versions -u -b | fgrep /unstable`
# ... оновити всі пакунки з нестабільної збірки до їх найновіших версій
Очищення локального кешу пакунків
При встановленні пакунків за допомогою АРТ файли пакунків залишаються у каталозі /var/cache/apt/archives/ і з часом цей каталог може потребувати очищення.
# aptitude autoclean # видалити лише невикористовувані файли пакунків
# aptitude clean # видалити всі прокешовані файли пакунків
Запис/копіювання системної конфігурації
Щоб зробити локальну копію стану вибору пакунків:
$ dpkg --get-selections "*" > myselections # або, можливо \*
"*" додає також зафіксовані пакунки до файлу myselections.
Ви можете перемістити цей файл на інший комп'ютер та встановити там за допомогою:
# dselect update
# dpkg --set-selections <myselections
# apt-get -u dselect-upgrade # ну або dselect install
Перенесення пакунку до стабільної системи
Для часткових оновлень стабільної системи допускається перекомпоновка пакунку всередині його середовища за допомогою джерельного пакунку. Таким чином можна уникнути масивного оновлення пакунків через їхні залежності. Перш за все, додайте наступні рядки до файлу /etc/apt/sources.list:
deb-src http://http.us.debian.org/debian testing \
main contrib non-free
deb-src http://http.us.debian.org/debian unstable \
main contrib non-free
Тут кожен рядок для deb-src розділено на два лише із-за обмежень друку; насправді у файлі sources.list повинно бути по одному рядку.
Далі роздобудьте джерельний код та сформуйте локальний пакунок:
$ apt-get update # оновити список пошуку джерельних пакунків
$ apt-get source пакунок
$ dpkg-source -x пакунок.dsc
$ cd пакунок-версія
... перевірте залежності (секція Build-Depends у файлі .dsc) і встановіть їх також. Окрім того вам знадобиться пакунок "fakeroot".
$ dpkg-buildpackage -rfakeroot
...або (без підпису)
$ dpkg-buildpackage -rfakeroot -us -uc # пізніше якщо треба запустіть "debsign"
...далі встановити
$ su -c "dpkg -i packagefile.deb"
Як правило, потрібно встановити кілька пакунків з суфіксом "-dev" щоб задовільнити залежності. debsign знаходиться у пакунку devscripts. auto-apt може спросити визначення цих залежностей. Використання fakeroot дозволяє уникнути необов'язкової реєстрації з привілеями адміністратора.
Локальний архів пакунків
Щоб створити локальний архів пакунків сумісний з APT i dselect, потрібно створити файл Packages i розмістити пакунки у строго визначеній ієрархії.
Локальне сховище, подібне до офіційного сховища Дебіен можа зробити наступним чином:
# aptitude install dpkg-dev
# cd /usr/local
# install -d pool # physical packages are located here
# install -d dists/unstable/main/binary-i386
# ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
# editor override # adjust priority and section
# dpkg-scanpackages pool override /usr/local/ \
> dists/unstable/main/binary-i386/Packages
# cat > dists/unstable/main/Release << EOF
Archive: unstable
Version: 3.0
Component: main
Origin: Local
Label: Local
Architecture: i386
EOF
# echo "deb file:/usr/local unstable main" \
>> /etc/apt/sources.list
А ось альтернативний, швидший і грубший спосіб:
# aptitude install dpkg-dev
# mkdir /usr/local/debian
# mv /some/where/package.deb /usr/local/debian
# dpkg-scanpackages /usr/local/debian /dev/null | \
gzip - > /usr/local/debian/Packages.gz
# echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
Ці архіви можуть бути доступними локально чи віддалено і забезпечувати доступ до свого змісту по http чи ftp після внесення відповідних змін до файлів /etc/apt/sources.list.
Перетворення та встановлення чужорідних двійкових пакунків
Перетворення чужорідних двійкових пакунків, що поставляються у форматах rpm, slp (Стемпед, англ. Stampede), tgz (Слеквер), pkg (Соларіс) у пакунок Дебіен робиться за допомогою пакунку alien. Він також підтримує LSB-пакунки.
Команда автоматичного встановлення
auto-apt - це інструмента для встановлення пакунків за вимогою.
$ sudo auto-apt update
... оновлення бази даних
$ auto-apt -x -y run
Запуск режиму auto-apt: /bin/bash
Щоб вийти з режиму auto-apt, перервіть команду.
$ less /usr/share/doc/med-bio/copyright # доступ до неіснуючого файлу
... Встановлення пакунку, що поставляє цей файл
... Автоматичне встановлення залежностей
Перевірка встановлених пакунків
Пакунок debsums дозволяє перевірити встановлені пакунки по їхніх контрольних сумах MD5. У деяких пакунках контрольні суми недоступні. Можливе тимчасове рішення для системних адміністраторів від Джорга Вендленда (Joerg Wendland joergland@debian.org) (не перевірено):
# cat >>/etc/apt/apt.conf.d/90debsums
DPkg::Post-Install-Pkgs {"xargs /usr/bin/debsums -sg";};
^D
Оптимізація файлу sources.list
Якщо коротко, незначні примхи створити оптимізований sources.list не забезпечують суттєвого покращення в США. Я вибираю найближчі майданчики вручну, за допомогою apt-setup.
apt-spy створює sources.list автоматично, на основі швидкості реакції та ширині каналу до вибраного дзеркала. netselect-apt створює значно більший sources.list, але використовує неоптимальний метод вибору найближчого дзеркала (порівння часу пінга).
# aptitude install apt-spy
# cd /etc/apt ; mv sources.list sources.list.org
# apt-spy -d testing -l sources.apt
Інші особливості Дебіен
Команда dpkg-divert
Відведення файлів - це спосіб примусити dpkg встановлювати файл не на його типове місце, а деінде. Відведення можна застосовувати через сценарії пакунків Дебіен щоб пересунути кудись файл у разі якщо він викликає конфлікти. Системні адміністратори також за допомогою відведень перезаписують конфігураційні файли пакунків, або якщо якісь файли (що не позначені як конфігураційні, тобто не вказані у файлі conffiles) повинні зберегтись при встановленні новішої версії пакунку (гляди також параграф 2.2.4 "Збереження локальної конфігурації").
# dpkg-divert [--add] назва_файлу # додати "викрутас"
# dpkg-divert --remove назва_файлу # видалити "викрутас"
А взагалі не варто використовувати dpkg-divert аж поки в цьому не виникне крайня потреба.
Пакунок equivs
Якщо ви компілюєте програму з джерельних кодів, накраще було б скомпонувати її у справжній локальний пакунок (.deb). В такому випадку вам знадобиться equivs.
Пакунок: equivs
Пріоритет: додатковий
Секція: адміністрування
Опис: Окреслення залежностей пакунків Дебіен
Це простий пакунок, який використовується для створення інших пакунків, котрі містять
лише інформацію про залежності.
Альтернативні команди
Щоб заставити команду vi запускати редактор vim, скористайтесь командою update-alternatives:
# update-alternatives --display vi
...
# update-alternatives --config vi
Selection Command
-----------------------------------------------
1 /usr/bin/elvis-tiny
2 /usr/bin/vim
*+ 3 /usr/bin/nvi
Натисніть Ентер, щоб залишити типове значення [*], або введіть обраний номер: 2
Елементи альтернативної системи в Дебіен зберігаються у вигляді симлінків у каталозі /etc/alternatives/.
Щоб задати ваше улюблене графічне середовище, застосуйте команду update-alternatives до /usr/bin/x-session-manager та /usr/bin/x-window-manager. Деталі описуються у паграфі 9.4.5.1 "Замовлені Х-сесії".
/bin/sh є прямим симлінком на /bin/bash чи /bin/dash. /bin/bash користуватись безпечніше - щоб забезпечити сумісність з старими башистськими сценаріями але використання /bin/dash заставляє дотримуватись стандартів POSIX. У ядрах 2.4 спостерігається тенденція до використання /bin/dash.
Використання рівнів виконання
Під час встановлення більшість пакунків Дебіен конфігуруються таким чином щоб запускатись на рівнях з другого по п'ятий. Таким чином в Дебіен на цих рівнях виконання немає відмінностей, які б не могли бути виправлені; Дебіен залишає системному адміністратору можливість самому налаштовувати собі рівні виконання, як це описано у параграфі 2.4.3. Такий підхід використовується і в інших популярних збірках ГНУ/Лінукс. Одним із способів є заборона запуску Х-сервера на другому рівні - щоб він не запускався автоматично при завантаженні; в такому випадку ви можете заватажити його пізніше, перемкнувшись на третій рівень.
Додаткова інформація про рівні виконання описується у параграфі 2.4.2.
Відключені фонові служби
Розробники Дебіен серйозно ставлться до безпеки. Більшість фонових служб встановлюються з мінімумом задіяних функцій.
Якщо у вас виникли якісь сумніви (стосовно Exim, DHCP, ...), запустіть ps aux або перевірте вміст каталогів /etc/init.d/* та файл /etc/inetd.conf. Перевірте такж /etc/hosts.deny як описано у параграфі 9.2.1 "Блокування реєстрації у системі". Зверніть також увагу на команду pidof (див. pidof(8)).
У останніх версіях Дебіен графічний сервер типово не дозволяє віддалених з'єднань. Гляньте параграф 9.4.6 "Використання Х поверх ТСР/ІР". Відключене також перенаправлення X в SSH. Гляньте параграф 9.4.8 "Під'єднання до віддаленого графічного сервера - ssh".