apt
Скрипт для поиска репозитория на launchpad.net
Мне, как и многим линуксоидам предпочитающим Debian-подобные дистрибутивы, периодически приходится искать репозитории той или иной софтины в самом большом архиве персональных репозиториев. Для этого я обычно ходил на страницу https://launchpad.net/ubuntu/+ppas либо пользовался утилитой ppasearch. Первый вариант просто надоел, а второй мне не удобен, потому-что не дает ссылку на страницу репозитория. Просто я предпочитаю хранить все репозитории в одном файле, а не разбрасывать их по разным файлам в каталоге /etc/apt/sources.list.d/. В то же время в результатах поиска я хочу видеть только ссылку на страницу репозитория, а его название и описание для меня имеет второстепенную важность.
Вот и решил накидать меленький скриптек:
Интерактивная apt-оболочка
Бывает так, что длительная работа с apt из терминала немного надоедает и начинает утомлять ввод длинных последовательностей семейства команд apt-*. Однако существует утилита aptsh, которая запускает в терминале интерактивную оболочку для работы с apt. Данная утилита входит в репозитарии многих debian-based дистрибутивов.
Чтобы после установки запустить оболочку, выполните:
$ sudo aptsh
После запуска будет выведено приглашение:
>
Далее можно работать с командами apt, но без необходимости вводить перед ними apt-*. Например, для получения информации о пакете, достаточно выполнить:
> search aptsh
Или, например, чтобы получить исходный код пакета, выполните:
> source aptsh
Выйти из сеанса в shell-оболочку можно командой exit или quit:
> exit
За дополнительной информацией просьба обращаться к соответствующей man-странице.
Кто занял apt базу?
Иногда при попытке использования apt случается такое:
ramok ~/ sudo apt-get update
E: Не могу получить доступ к файлу блокировки /var/lib/apt/lists/lock - open (11 Ресурс временно недоступен)
E: Невозможно заблокировать каталог со списками пакетовЭто обозначает что где то есть процесс который закрыл базу apt для использования. Это могло произойти в случае сбоя программы, которая закрыла базу и забыла ее открыть, или когда где то среди десятков открытых терминалов затерялось окно в котором запущена такая программа.
Посмотрим PID процесса занявший базу apt по лок-файлу
ramok [100]~/ sudo fuser /var/lib/apt/lists/lock
/var/lib/apt/lists/lock: 22069Если есть желание, то можно посмотреть что за программа залочила базу apt
ramok ~/ ps aux | grep 22069
root 22069 2.3 2.2 28704 22792 pts/27 S+ 11:22 0:01 apt-get upgradeУбиваем процесс который занял базу:
ramok ~/ sudo fuser -k -TERM /var/lib/apt/lists/lock
/var/lib/apt/lists/lock: 22069
ramok ~/или не мудрствуя лукаво
ramok ~/ sudo kill -TERM 22069Установка пакетов debian из другого дистрибутива
Например нужно поставить micq из репозитория для Ubuntu.
1. Нужно добавить строчку о нужном релизе в sources.list
В нашем случае смотрим на http://www.micq.org/download.shtml.en нужную строчку
deb http://www.micq.org/deb/ feisty main
2. Обновить список
$ apt-get update3. Установка из конкретного релиза, или конкретную версию пакета
$ apt-get install ИМЯ_ПАКЕТА/<release> #установить пакет # Альтернативный вариант $ apt-get install -t <release> ИМЯ_ПАКЕТА # установить пакет конкретной версии $ apt-get install ИМЯ_ПАКЕТА=ВЕРСИЯ
В нашем конкретном примере
$ apt-get install micq/feisty # или $ apt-get install micq=0.5.4.2
PS
учтите что наверняка apt-get потянет множество пакетов с другой версией, указанные в зависимости пакета. Рекомендуется прибегать к такому только в крайнем случае
UPD:
господин Анонимус, еще не поздно подписаться Ж:-)
Как собирать .deb climm в Debian
В последнее время climm бурно развивается, и в каждом релизе добавляется что нибудь вкусненькое (например постепенно улучшается поддержка jabber). К сожалению сам автор предоставляет .deb только для Ubuntu. Но это не беда, можно собирать пакет из deb-src под свою систему Ж:-)
Так же радует что все необходимые настройки для сборки .deb есть в главном репозитории climm.
Добавляем в /etc/apt/source.list репозиторий в который выкладывается deb-src каждого релиза:
deb-src http://www.climm.org/deb/ sid main
$ sudo apt-get update # обновим базы $ apt-get source climm # установим исходники из deb-src $ sudo apt-get build-dep climm # устанавливаем пакеты которые # необходимы для постройки $ cd climm $ dpkg-buildpackage -rfakeroot # делаем .deb $ sudo dpkg -i ../climm_0.6.1-0_i386.deb # устанавливаем что получилось
Примечание: К сожалению этот процесс нельзя автоматизировать с помощью apt-build изза ошибки в нем.
Примерно тоже самое что первый вариан, то понадобится установленные в системе autoconf и automake. И нужно будет самостоятельно поставить необходимые для сборки пакеты.
$ svn co http://svn.climm.org/climm/ $ cd climm
или обновить уже существующий транк
$ cd climm $ svn update
собираем пакет
$ ./prepare # запускаем autoconf $ dpkg-buildpackage -rfakeroot # делаем .deb $ sudo dpkg -i ../climm_0.6.1-0_i386.deb # устанавливаем что получилось
Примечание: К сожалению этот процесс нельзя автоматизировать с помощью svn-buildpackage так как автор не хочет вносить в debian/rules код для автоматического запуска ./prepare
Что бы не убиралась отладочная информация из бинарного файла, включался кой какой отладочный код, плюс делалась цифровая подпись нужным ключом.
$ DEB_BUILD_OPTIONS=nostrip WIP=1 dpkg-buildpackage -rfakeroot -m"ramok <ramok@core.org.ua>" $ sudo dpkg -i ../climm_0.6.1-0_i386.deb # устанавливаем что получилось
Из какого пакета файл?
Иногда известен какой нибудь файл, и хочется узнать из какого он пакета. Здесь будет рассказано как это можно узнать в различных OS и мененжерах пакетов(deb, apt,rpm, Gentoo, FreeBSD, OpenBSD): ...
Просмотр списка изменений в пакетах при апдейте в Debian
При апдейте через apt удобно просматривать что же собственно изменилось в пакетах.
Для этого предназначен пакет apt-listchanges который читает ChangeLog новых пакетов и показывает у добном виде
Как создать собственный deb репозитарий
иногда небходимо сбросить диск с Debian(ubunto) и отдать его товарищу Ж:-)
но хочется так же использовать apt-get для установки пакетов из переписанных на диск пакетов.
для этого необходимо создать свой локальный репозиторий. как это сделано описано тут
http://www.debian.org/doc/manuals/repository-howto/repository-howto.en.html
это не сложно Ж:-)
Как избежать апгрейда пакета в Debian
Допустим, в Debian или Ubuntu (и всех остальных дистрах, использующих apt) у вас имеется установленный пакет, который Вы не хотите обновлять. Например, его новые версии выходят слишком часто и на их скачку кушается много трафика, или Вы его как-то сами модифицировали, или по какой-либо другой причине Вас устраивает его конкретная версия. Ниже описывается два способа - с использованием aptitude и apt-pinning.
Допустим, в Debian или Ubuntu (и всех остальных дистрах, использующих apt) у вас имеется установленный пакет, который Вы не хотите обновлять. Например, его новые версии выходят слишком часто и на их скачку кушается много трафика, или Вы его как-то сами модифицировали, или по какой-либо другой причине Вас устраивает его конкретная версия. Ниже описываются два способа, с использованием aptitude и apt-pinning
apt-get и цифровая подпись (GPG Error)
Однажды запустив
$ sudo apt-get updateвы вдруг получаете что то типа
.... Чтение списков пакетов... Готово W: GPG error: http://security.debian.org stable/updates Release: Следующие подписи не могут быть проверены, так как недоступен общий ключ: NO_PUBKEY 010908312D230C5F W: GPG error: http://ftp.debian.org testing Release: Следующие подписи не могут быть проверены, так как недоступен общий ключ: NO_PUBKEY 010908312D230C5F
Это просто означает что ваш apt обновился до версии, где научился проверять целосность пакетов посредством pgp цифровой подписи.
1) Если вам все равно настоящие пакеты из репозитория или кто то подменил их, то можно отказатся от этой возможности:
$ sudo apt-get --allow-unauthenticated updateили добавить /etc/apt/apt.conf
APT::Get::AllowUnauthenticated "true";
2) Если идти совсем debian-way то необходимо установить




