Как я могу получить список всех пакетов, доступных для конкретной версии Ubuntu (не обязательно той, которая у меня установлена)?

Вопрос или проблема

Я могу получить список всех доступных пакетов и их деталей, используя следующую команду:

apt-cache search .

Которая выводит список пакетов, который выглядит так:

i   0ad                - Стратегическая игра в реальном времени о древних войнах
i   0ad-data           - Стратегическая игра в реальном времени о древних войнах (файлы данных)                            
i   0ad-data-common    - Стратегическая игра в реальном времени о древних войнах (общие файлы данных)                        
p   0ad-dbg            - Стратегическая игра в реальном времени о древних войнах (отладка)                                    
p   0xffff             - Open Free Fiasco Firmware Flasher                                                     
p   2ping              - Утилита Ping для определения направленной потери пакетов                                     
p   2vcard             - Perl-скрипт для преобразования адресной книги в формат VCARD                            
p   3270-common        - Общие файлы для эмуляторов IBM 3270 и pr3287                                        
p   389-admin          - Сервер администрирования 389 Directory 
...

Как я могу получить такой список пакетов для версии Ubuntu, которую я не установил?

Итак, конкретно, где я могу скачать базу данных всех доступных пакетов для конкретной версии Ubuntu, и как я могу получить детали (возможно, включая версию, размер, длинное описание…) из нее в текстовом формате или в формате, который легко разбирается с помощью скрипта?

1. В онлайне

Я предпочитаю использовать http://packages.ubuntu.com/ как ответ muru

2. Оффлайн, вручную

В противном случае, если вы ищете оффлайн решение, тогда вы должны быть Мистером APT и начать их загружать с http://archive.ubuntu.com/ubuntu/dists/.

p=$(pwd); for c in main universe multiverse restricted; do for u in "" -security -updates; do for a in binary-amd64 binary-i386; do mkdir trusty${u}_${c}_$a; cd trusty${u}_${c}_$a; wget http://archive.ubuntu.com/ubuntu/dists/trusty$u/$c/$a/Packages.bz2; cd $p; done; done; done;

Результаты:

$ tree
.
├── trusty_main_binary-amd64
│   └── Packages.bz2
├── trusty_main_binary-i386
│   └── Packages.bz2
├── trusty_multiverse_binary-amd64
│   └── Packages.bz2
├── trusty_multiverse_binary-i386
│   └── Packages.bz2
├── trusty_restricted_binary-amd64
│   └── Packages.bz2
├── trusty_restricted_binary-i386
...

3. Оффлайн, используя apt-cache/overlay-filesystem/chroot

Идёт сложная настройка:

На самом деле, я собираюсь использовать пользовательский sources.list* с тем же apt-cache, установленным на 16.04, но apt не будет перезаписывать реальные файлы списков 16.04 в /var/lib/apt/lists/, изменения будут перезаписываться в файл overlay.

Настройка:

sudo apt-get install chroot
mkdir sandbox0
cd sandbox0
mkdir upper work merged
sudo mount -t overlay overlay -o lowerdir=/,upperdir=./upper,workdir=./work ./merged
sudo chroot merged/
echo "deb http://archive.ubuntu.com/ubuntu/ trusty universe multiverse main restricted" > /etc/apt/sources.list
rm -r /etc/apt/sources.list.d/*
apt-get update
exit

Использование: (вы можете подготовить скрипт)

sudo mount -t overlay overlay -o lowerdir=/,upperdir=./upper,workdir=./work ./merged
sudo chroot merged/

apt-cache ...

Используйте chdist. Эта команда позволяет вам запускать apt-get и apt-cache как обычно, но для другой версии Ubuntu (или Debian или, по сути, любого другого производного дистрибутива Debian).

Она также предоставляет оболочку вокруг grep-dctrl, что легко позволяет вам искать и сообщать о полях метаданных.

У вас уже есть команда для перечисления всех возможных пакетов, но хорошо, давайте углубимся, не так ли? Итак, apt-cache search . или apt-cache search '' выводит около 2300+ строк, которые на самом деле представляют собой всё количество всех возможных пакетов, включая разные версии DE.

Чтобы сделать это проще, вы можете получить только имена с помощью:

apt-cache search '' | sort -d | awk '{print $1}'

Или, если вам нужна больше информации и вы не против длинного списка, вы можете прокатить это через apt-cache policy:

apt-cache policy $(apt-cache search '' | sort -d | awk '{print $1}')

Вы можете установить html2text и попробовать поискать в xenial (например) пакеты ocaml :

curl -k -s https://packages.ubuntu.com/xenial/allpackages | html2text | egrep '^ +ocaml'

Просто чтобы дополнить ответ @Robie-Basak, вот пример с инструментом chdist, запрашивающим источники Ubuntu Trusty (14.04) :

$ chdist create 14.04
Теперь отредактируйте /home/myName/.chdist/14.04/etc/apt/sources.list
Запустите chdist apt-get 14.04 update
И наслаждайтесь.
$ chdist list
14.04
$ cat /etc/apt/sources.list | sed s/$(lsb_release -sc)/trusty/ | tee ~/.chdist/14.04/etc/apt/sources.list >/dev/null
$ chdist apt-get 14.04 update
Ign:1 http://fr.archive.ubuntu.com/ubuntu trusty InRelease
Hit:2 http://fr.archive.ubuntu.com/ubuntu trusty-updates InRelease
Hit:3 http://fr.archive.ubuntu.com/ubuntu trusty-backports InRelease
Hit:4 http://fr.archive.ubuntu.com/ubuntu trusty-security InRelease
Hit:5 http://fr.archive.ubuntu.com/ubuntu trusty Release
Чтение списка пакетов... Готово
$ chdist apt-cache 14.04 policy ocaml-nox
ocaml-nox:
  Установлено: (нет)
  Кандидат: 4.01.0-3ubuntu3.1
  Таблица версий:
     4.01.0-3ubuntu3.1 500
        500 http://fr.archive.ubuntu.com/ubuntu trusty-updates/main amd64 Packages
        500 http://fr.archive.ubuntu.com/ubuntu trusty-security/main amd64 Packages
     4.01.0-3ubuntu3 500
        500 http://fr.archive.ubuntu.com/ubuntu trusty/main amd64 Packages
$

И если вы находитесь за прокси, определенным в файле /etc/apt/apt.conf.d/00aptproxy (например), то вам нужно ввести эту команду ПЕРЕД тем, как ввести ваш chdist apt-get 14.04 update :

$ cp -puv /etc/apt/apt.conf.d/00aptproxy ~/.chdist/14.04/etc/apt/apt.conf.d/00aptproxy
'/etc/apt/apt.conf.d/00aptproxy' -> '/home/myName/.chdist/14.04/etc/apt/apt.conf.d/00aptproxy'
$

Ответ или решение

Чтобы получить список всех доступных пакетов для конкретной версии Ubuntu (не обязательно той, которая уже установлена), существует несколько методов. Ниже приведен детализированный обзор как онлайн, так и оффлайн подходов.

1. Онлайн-метод

Наиболее простым способом является использование ресурса packages.ubuntu.com. На этом сайте вы можете выбрать версию Ubuntu и просмотреть все доступные пакеты, их версии, описания и другую информацию. Вот как это сделать:

  1. Перейдите на сайт Packages Ubuntu.
  2. Используйте меню для выбора нужной версии (например, "Trusty", "Xenial" и т.д.).
  3. После выбора системы доступны список всех пакетов, а также возможность поиска по конкретным наименованиям.

2. Оффлайн-метод: ручная загрузка пакетов

Если вы предпочитаете оффлайн работу, вы можете вручную скачать список пакетов с серверов Ubuntu. Для этого выполните следующие шаги:

  1. Используйте команду wget для загрузки данных о пакетах с указаниями на нужные репозитории. Например, можно использовать следующий скрипт:
p=$(pwd); 
for c in main universe multiverse restricted; do 
    for u in "" -security -updates; do 
        for a in binary-amd64 binary-i386; do 
            mkdir trusty${u}_${c}_$a; 
            cd trusty${u}_${c}_$a; 
            wget http://archive.ubuntu.com/ubuntu/dists/trusty$u/$c/$a/Packages.bz2; 
            cd $p; 
        done; 
    done; 
done;

Этот скрипт создаст папки с теми данными, которые вы скачали.

  1. После загрузки вы можете распаковать файлы Packages.bz2, чтобы получить читаемые данные о пакетах:
bunzip2 Packages.bz2

Теперь у вас есть текстовый файл, содержащий информацию о пакетах.

3. Оффлайн-метод: использование chroot или overlay файловой системы

Для более продвинутых пользователей, можно использовать chroot для имитации работы в другой версии Ubuntu. Вот пример:

sudo apt-get install chroot
mkdir sandbox0
cd sandbox0
mkdir upper work merged
sudo mount -t overlay overlay -o lowerdir=/,upperdir=./upper,workdir=./work ./merged
sudo chroot merged/
echo "deb http://archive.ubuntu.com/ubuntu/ trusty universe multiverse main restricted" > /etc/apt/sources.list
apt-get update

После этого вы сможете использовать apt-cache для получения информации о пакетах в созданной окружении:

apt-cache search ''

4. Использование chdist

Инструмент chdist позволяет управлять различными дистрибутивами Debian/Ubuntu. Вы можете создать окружение для другой версии Ubuntu и использовать привычные команды. Вот базовое использование:

chdist create 14.04
# Отредактируйте /home/myName/.chdist/14.04/etc/apt/sources.list
chdist apt-get 14.04 update
chdist list

Это даст возможность выполнять команды apt-get и apt-cache как обычно, но для другой версии Ubuntu.

Заключение

Каждый из описанных методов позволит вам получить список пакетов для конкретной версии Ubuntu, выбирайте тот, который подходит именно вам. Онлайн методы удобны для быстрого доступа к информации, в то время как оффлайн методы дают более глубокую интеграцию и гибкость в работе с пакетами.

Оцените материал
Добавить комментарий

Капча загружается...