Вводная часть:
Есть домашний шлюз исправно функционирующий под управлением ОС Ubuntu 8.04.1.
Всё работает хорошо, но всё же нужно обновлять ПО на сервере, для того чтобы можно было устанавливать/компилировать/жить безопасно - без проблем. Тем более, что репозитарий Ubuntu у меня есть в локальной Сети, траффик быстр, и бесплатен.
Но на сервере есть один сервис который мне не хочеться обновлять, это программа vsftpd, она отлично работает, да у той версии есть некоторые проблемы в безопасности, но я не использую те функции в которых есть эти проблемы, но я использую перекодировку имён папок и файлов в кодировку CP1251 для совместимости с довольно популярной ОС от Microsoft, поэтому пакет включает в себя уже эти преобразователи кодировок на лету. А в репозитарии пакет простой которому не ведомы проблемы Русскоязычного сегмента пользователей ПК, а значит перекодировать на лету он не может, и было принятно решение его не обновлять...
Сказанно, сделанно!
Идём в yandex и получаем по запросу "exclude apt-get package" массу интересного...
http://qref.sourceforge.net/Debian/quick-reference/ch-package.ru.html
И делаем:
Удержание пакетов libc6 и libc6-dev при работе с командами dselect и apt-get -u upgrade package может быть выполнено так:
# echo -e "libc6 hold\nlibc6-dev hold" | dpkg --set-selections
Однако, для команды apt-get -u install пакет этот "hold" не будет помехой. Для того, чтобы удержать пакет от обновления путем автоматического отката в командах apt-get -u upgrade пакет или apt-get -u dist-upgrade, добавьте следующие строки в файл /etc/apt/preferences:
Package: libc6
Pin: release a=stable
Pin-Priority: 2000
Здесь элемент "Package:" не может использовать запись вида "libc6*". Если Вам нужно удержать все бинарные пакеты, связанные с пакетом с исходными текстами glibc в синхронном состоянии, Вам нужно перечислить всех их здесь явным образом.
Следующая команда выведет всех удержанные от обновления пакеты:
dpkg --get-selections "*"|grep -e "hold$"
Для меня это получилось вот так:
Package: vsftpd
Pin: release a=stable
Pin-Priority: 2000
Проверяем ДО исключения пакета:
daldon@ubuntu:~$ sudo apt-get upgrade
Чтение списков пакетов... Готово
Построение дерева зависимостей
Reading state information... Готово
Пакеты, которые будут оставлены в неизменном виде:
linux-generic linux-image-generic linux-restricted-modules-generic
Пакеты, которые будут обновлены:
cpp-4.2 eject gcc-4.2-base initramfs-tools libc6 libc6-i686 libgcc1 libglib2.0-0 libldap-2.4-2 libstdc++6 linux-restricted-modules-common pciutils python2.5 python2.5-minimal samba samba-common sudo vsftpd
обновлено 18, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 3 пакетов не обновлено.
Необходимо скачать 20,7MB/20,8MB архивов.
After this operation, 41,0kB of additional disk space will be used.
Хотите продолжить [Д/н]? n
Проверяем ПОСЛЕ исключения пакета:
daldon@ubuntu:~$ sudo apt-get upgrade
Чтение списков пакетов... Готово
Построение дерева зависимостей
Reading state information... Готово
Пакеты, которые будут оставлены в неизменном виде:
linux-generic linux-image-generic linux-restricted-modules-generic vsftpd
Пакеты, которые будут обновлены:
cpp-4.2 eject gcc-4.2-base initramfs-tools libc6 libc6-i686 libgcc1 libglib2.0-0 libldap-2.4-2 libstdc++6 linux-restricted-modules-common pciutils python2.5 python2.5-minimal samba samba-common sudo
обновлено 17, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 4 пакетов не обновлено.
Необходимо скачать 20,7MБ архивов.
After this operation, 16,4kB disk space will be freed.
Хотите продолжить [Д/н]? y
Как видно, пакет vsftpd перекочивал в список тех пакетов которые будут оставлены БЕЗ ИЗМЕНЕНИЙ!
Всё, теперь можно спокойно соглашаться, пакет vsftpd не будет изменён. И волки сыты и зайцы целы.
P.S. dpkg --get-selections "*"|grep -e "hold$" , ничего не выводит. Не знаю почему, но особо не разбирался. Главное что работает, то, что нужно.
суббота, 13 сентября 2008 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий