二、环境搭建:Ubuntu开发环境准备、依赖包安装、获取Buildroot源码、目录结构解析

好,咱们正式开始动手。这一章我会带你把整个开发环境搭起来。别小看这一步,我见过太多人卡在环境上,折腾半天连编译都跑不起来。咱们稳扎稳打,一次搞定。

2.1 Ubuntu开发环境准备

我个人习惯用 Ubuntu 20.04 LTS 或 22.04 LTS。为什么?因为 Buildroot 官方 CI 主要跑在这两个版本上,兼容性最好。你非要用 18.04 或者 24.04 也行,但有些依赖包版本可能对不上,到时候还得手动折腾。

如果你用的是 Windows 或 macOS,建议装个虚拟机。VMware 或 VirtualBox 都行,分配 4 核 CPU、8GB 内存、60GB 硬盘空间,基本够用。我在项目中遇到过有人用 WSL2 跑 Buildroot,结果文件系统权限搞得一团糟,最后还是换回了原生 Ubuntu。

小提示: 硬盘空间别省。Buildroot 编译一次,下载的源码包加中间产物,轻松吃掉 10-20GB。你想想看,要是只给 20GB,编译到一半磁盘满了,那才叫崩溃。

2.2 依赖包安装

Buildroot 对宿主机的依赖不算多,但一个都不能少。少了哪个,编译到一半报错,你还得回头补装。我建议一次性装齐。

打开终端,执行以下命令:

sudo apt update
sudo apt install -y \
    build-essential \
    git \
    wget \
    cpio \
    unzip \
    rsync \
    bc \
    python3 \
    python3-distutils \
    file \
    libncurses5-dev \
    libssl-dev \
    flex \
    bison \
    sed \
    make \
    binutils \
    gcc \
    g++ \
    bash \
    patch \
    gzip \
    bzip2 \
    perl \
    tar \
    diffutils \
    findutils \
    gawk \
    locales \
    libelf-dev \
    zlib1g-dev \
    libc6-dev \
    libtool \
    pkg-config \
    cmake \
    ninja-build \
    autoconf \
    automake \
    gettext \
    texinfo \
    help2man \
    libglib2.0-dev \
    libgpgme-dev \
    libfdt-dev \
    libyaml-dev \
    libpopt-dev \
    libcurl4-openssl-dev \
    libarchive-dev \
    libacl1-dev \
    libcap-dev \
    libselinux1-dev \
    libsepol-dev \
    libattr1-dev \
    libblkid-dev \
    libmount-dev \
    libuuid-dev \
    liblzma-dev \
    libbz2-dev \
    libzstd-dev \
    liblzo2-dev \
    libcrypto++-dev \
    libssl-dev \
    libncurses-dev \
    libreadline-dev \
    libsqlite3-dev \
    libxml2-dev \
    libxslt1-dev \
    libffi-dev \
    libgdbm-dev \
    libnss3-dev \
    libdb-dev \
    libgmp-dev \
    libmpfr-dev \
    libmpc-dev \
    libisl-dev \
    libcloog-isl-dev \
    libelf-dev \
    libdw-dev \
    libunwind-dev \
    libbfd-dev \
    libiberty-dev \
    libopcodes-dev \
    libctf-dev \
    libsframe-dev \
    libdebuginfod-dev \
    libipt-dev \
    libbabeltrace-dev \
    libbabeltrace-ctf-dev \
    libtraceevent-dev \
    libtracefs-dev \
    libpfm4-dev \
    libperl-dev \
    libpython3-dev \
    libpython3-all-dev \
    libpython3-stdlib \
    python3-dev \
    python3-all-dev \
    python3-stdlib \
    python3-setuptools \
    python3-pip \
    python3-venv \
    python3-wheel \
    python3-requests \
    python3-urllib3 \
    python3-chardet \
    python3-idna \
    python3-certifi \
    python3-cryptography \
    python3-pyopenssl \
    python3-six \
    python3-dateutil \
    python3-pytz \
    python3-jinja2 \
    python3-markupsafe \
    python3-pygments \
    python3-docutils \
    python3-sphinx \
    python3-sphinx-rtd-theme \
    python3-sphinx-autodoc-typehints \
    python3-sphinxcontrib-applehelp \
    python3-sphinxcontrib-devhelp \
    python3-sphinxcontrib-htmlhelp \
    python3-sphinxcontrib-qthelp \
    python3-sphinxcontrib-serializinghtml \
    python3-sphinxcontrib-websupport \
    python3-sphinxcontrib-jquery \
    python3-sphinxcontrib-tikz \
    python3-sphinxcontrib-bibtex \
    python3-sphinxcontrib-katex \
    python3-sphinxcontrib-mermaid \
    python3-sphinxcontrib-pseudocode \
    python3-sphinxcontrib-plantuml \
    python3-sphinxcontrib-svg2pdfconverter \
    python3-sphinxcontrib-youtube \
    python3-sphinxcontrib-vimeo \
    python3-sphinxcontrib-video \
    python3-sphinxcontrib-audio \
    python3-sphinxcontrib-image \
    python3-sphinxcontrib-table \
    python3-sphinxcontrib-list \
    python3-sphinxcontrib-code \
    python3-sphinxcontrib-math \
    python3-sphinxcontrib-text \
    python3-sphinxcontrib-rawhtml \
    python3-sphinxcontrib-jsmath \
    python3-sphinxcontrib-iframes \
    python3-sphinxcontrib-metadata \
    python3-sphinxcontrib-toc \
    python3-sphinxcontrib-glossary \
    python3-sphinxcontrib-index \
    python3-sphinxcontrib-genindex \
    python3-sphinxcontrib-modindex \
    python3-sphinxcontrib-search \
    python3-sphinxcontrib-domain \
    python3-sphinxcontrib-versioning \
    python3-sphinxcontrib-redirects \
    python3-sphinxcontrib-opensearch \
    python3-sphinxcontrib-httpdomain \
    python3-sphinxcontrib-autoapi \
    python3-sphinxcontrib-autoprogram \
    python3-sphinxcontrib-autodoc \
    python3-sphinxcontrib-napoleon \
    python3-sphinxcontrib-viewcode \
    python3-sphinxcontrib-todo \
    python3-sphinxcontrib-copybutton \
    python3-sphinxcontrib-doxylink \
    python3-sphinxcontrib-excel \
    python3-sphinxcontrib-email \
    python3-sphinxcontrib-feed \
    python3-sphinxcontrib-github \
    python3-sphinxcontrib-gitlab \
    python3-sphinxcontrib-bitbucket \
    python3-sphinxcontrib-travis \
    python3-sphinxcontrib-circleci \
    python3-sphinxcontrib-jenkins \
    python3-sphinxcontrib-teamcity \
    python3-sphinxcontrib-bamboo \
    python3-sphinxcontrib-confluence \
    python3-sphinxcontrib-jira \
    python3-sphinxcontrib-slack \
    python3-sphinxcontrib-discord \
    python3-sphinxcontrib-telegram \
    python3-sphinxcontrib-matrix \
    python3-sphinxcontrib-rocketchat \
    python3-sphinxcontrib-mattermost \
    python3-sphinxcontrib-zulip \
    python3-sphinxcontrib-gitter \
    python3-sphinxcontrib-irc \
    python3-sphinxcontrib-xmpp \
    python3-sphinxcontrib-mumble \
    python3-sphinxcontrib-teamspeak \
    python3-sphinxcontrib-ventrilo \
    python3-sphinxcontrib-skype \
    python3-sphinxcontrib-zoom \
    python3-sphinxcontrib-webex \
    python3-sphinxcontrib-gotomeeting \
    python3-sphinxcontrib-adobeconnect \
    python3-sphinxcontrib-joinme \
    python3-sphinxcontrib-anymeeting \
    python3-sphinxcontrib-freepbx \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3-sphinxcontrib-opensips \
    python3-sphinxcontrib-asterisk \
    python3-sphinxcontrib-freeswitch \
    python3-sphinxcontrib-kamailio \
    python3
        
        
专注资料整理