【问题标题】:Deleting build dependency packages in Debian 9在 Debian 9 中删除构建依赖包
【发布时间】:2018-04-17 21:56:50
【问题描述】:

我有一个脚本来编译 LEMP 服务器的几个程序(nginx、php、openssl 等...),我想知道编译完成后我可以删除哪些包。

我将安装和清理软件包的代码片段留在脚本中。

包安装

    # TODO: check this: Packages that can be deleted after the script is finished.

    apt-get -y install libxau-dev libxdmcp-dev xorg-sgml-doctools \
    libexpat1-dev xsltproc docbook-xsl \
    docbook-xml needrestart autoconf \
    automake m4 bison \
    build-essential g++ pkg-config \
    autotools-dev libtool expect \
    libcunit1-dev x11proto-core-dev file \
    libenchant-dev libjemalloc-dev gnu-standards \
    autoconf-archive g++-multilib gcc-multilib \
    libstdc++-6-dev gcc-6-locales \
    g++-6-multilib valgrind valgrind-mpi \
    valkyrie gcj-jdk flex \
    tk-dev libc-ares-dev

    # TODO: check this: Important packages that must be installed.

    apt-get -y install coreutils binutils uuid-dev wget \
    mcrypt libmcrypt-dev cython \
    perl libpcre3 libpcre3-dev  \
    libxml2-dev libxslt1-dev \
    libfreetype6-dev libfontconfig1-dev \
    libtiffxx5 libjpeg62-turbo-dev libjpeg-dev libpng-dev \
    libbz2-dev zlib1g-dev libzip-dev \
    libjansson-dev \
    libgmp-dev libev-dev libevent-dev \
    libsqlite3-dev libgdbm-dev libdb-dev \
    libsystemd-dev libspdylay-dev \
    libaio-dev libncurses5-dev \
    libunistring-dev libunbound-dev \
    trousers libidn2-0 \
    libicu-dev libltdl-dev libpspell-dev libreadline-dev \
    libc6-dev libc-dbg libpam0g-dev libmsgpack-dev libstemmer-dev libbsd-dev \
    gettext debian-keyring liblinear-tools liblinear-dev \
    libdbi-perl libboost-all-dev rsync net-tools libdbd-mysql-perl \
    re2c libboost-dev libboost-thread-dev qt4-qmake libqt4-dev \
    libssl-dev golang python-dev python3-dev python-setuptools

包装清洁

apt-get -y remove libxau-dev libxdmcp-dev xorg-sgml-doctools \
libexpat1-dev xsltproc docbook-xsl \
docbook-xml needrestart autoconf \
automake m4 bison \
build-essential g++ pkg-config \
autotools-dev libtool expect \
libcunit1-dev x11proto-core-dev file \
libenchant-dev libjemalloc-dev gnu-standards \
autoconf-archive g++-multilib gcc-multilib \
libstdc++-6-dev gcc-6-locales \
g++-6-multilib valgrind valgrind-mpi \
valkyrie gcj-jdk flex \
tk-dev libc-ares-dev

apt-get -y 自动删除 轻松搞定

我想进行这种清理是一个好习惯,我可以清理所有名称以 -dev 结尾的包。或者这会影响什么?

谢谢。

【问题讨论】:

    标签: bash compilation debian packages apt


    【解决方案1】:

    这一切都取决于。

    如果您通过 compiling 创建一个或多个 Debian 软件包,使用适当的打包工具和工作流程),然后安装它们(通过 dpkg),这些软件包将包含依赖信息(一些自动检测到 - 比如运行/加载生成的二进制文件需要动态库;其他在打包过程中手动添加)。 然后,这些依赖项将确保所有必需的包都将保持安装状态。

    但是,如果你只是编译一些随机软件superserver 并通过make install 安装它,系统无法知道你的二进制文件/usr/local/bin/superserver 实际上需要Debian 软件包的存在。

    当您安装一些 -dev 包以满足构建依赖关系时,这可能会引入一些额外的包(通常是相应的动态库;例如,安装 libfoo-dev 将确保您还安装了 libfoo0)。 一旦你删除了所有依赖于另一个已自动安装以满足这些依赖关系的包(例如libfoo0)的包(例如libfoo-dev),那么apt-get -y autoremove将自动删除这些剩余部分。

    因此,如果您的 superserver 依赖于 libfoo0 但系统不知道它,您最终会得到一个损坏的 superserver 二进制文件。

    【讨论】:

    • 谢谢,我刚刚检查了一下,确实如此,我已经安装了在 -dev 中完成的包,这些包安装了我编译的应用程序运行所需的运行时库。删除 libaspell-dev 并执行时:php -V /usr/local/php7/bin/php: error while loading shared libraries: libaspell.so.15: cannot open shared object file: No such file or directory
    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2021-02-23
    • 2021-02-09
    • 1970-01-01
    相关资源
    最近更新 更多