如果未安装标准系统实用程序并且 $PATH 中没有 c 编译器,如何离线安装 Debian 9 build-essential

如果未安装标准系统实用程序并且 $PATH 中没有 c 编译器,如何离线安装 Debian 9 build-essential

我已经从官方 DVD #1 安装了 Debian,没有使用标准系统实用程序,并且我希望继续使用 build-essential 集进行离线安装。如果系统 $PATH 中不存在 C 编译器并且我没有其他 Linux 设备,如何离线安装它?

答案1

找到一个像库之类的公共电脑,然后从 debian 站点下载软件包,然后尝试查找所有依赖项:

http://deb.debian.org/debian/pool/main/b/build-essential/build-essential_12.3.tar.gz

查看:

https://packages.debian.org/source/stretch/build-essential

如果您的系统安装了互联网和 Debian 或 Ubuntu,或者安装在 VM 中(VirtualBox 在 Windows 上运行),则在该计算机上获取具有依赖项的包:

# aptitude clean
# aptitude --download-only install <your_package_here>
# cp /var/cache/apt/archives/*.deb <your_directory_here>

https://stackoverflow.com/questions/13756800/how-to-download-all-dependency-and-packages-to-directory/39968534

或者

您可以使用 apt-rdepends 构建完整的依赖项集(递归地),包括主包,然后下载:

apt-get download $(apt-rdepends "${package}" | grep -v ^\ )

(当然替换“${package}”)。

如何使用 aptitude 下载包及其依赖项?

然后使用 USB 记忆棒并将文件复制到离线服务器:

cp -R /mnt/USBstick/* /root/packeges && cd /root/packages

那么你有几种安装方法,这里是一种:

dpkg -i <deb file>

它会失败,说它需要依赖项。之后,当您进行 apt-get 更新时,它最后会说“依赖项已准备好安装”之类的内容,我认为它建议使用

apt-get install -f

完成后,我使用

dpkg -i

再次。

编辑:以下是depends构建必需的:

[21:33:49][root] /home/USER [HOST]
~↓↓$↓↓ apt-cache depends build-essential
build-essential
 |Depends: libc6-dev
  Depends: <libc-dev>
    libc6-dev
  Depends: gcc
  Depends: g++
  Depends: make
    make-guile
  Depends: dpkg-dev

答案2

ivan@darkstar:~$ cat /usr/share/doc/build-essential/list 
                   List of Build-Essential packages
                    as of 2017-09-17, Debian sid

This file lists the non-essential packages that are build-essential.
The list is not closed under the "depends on" relation, so one will
usually need to install more packages than given here.

This list attempts to document the set of build-essential packages as
well as possible.  However, it is not authoritative (actually, there
is no authoritative list at all); the definition of the
"build-essential" class of packages given in Debian Policy Manual
(version >= 3.6.1.1), section 4 "Source packages" (more precisely
subsection 4.2 "Package relationships") is the definitive answer.
Here's the definition (as of Policy 3.6.1.1):

    It is not necessary to explicitly specify build-time relationships
    on a minimal set of packages that are always needed to compile,
    link and put in a Debian package a standard "Hello World!" program
    written in C or C++.  The required packages are called
    _build-essential_, and an informational list can be found in
    `/usr/share/doc/build-essential/list' (which is contained in the
    `build-essential' package).

The list is given below in a format which is readable by both humans and
programs.  The format is described at the end of this file.

BEGIN LIST OF PACKAGES
libc6-dev [!alpha !ia64 !hurd-i386] | libc0.3-dev [hurd-i386] | libc6.1-dev [alpha ia64] | libc-dev
  Provides the ISO C standard library
  Indirectly depended on by g++, but we'll ignore
  it since libc6-dev is used for non-C++ programs too.

libc6-dev-sparc64 [sparc]
  Used only on the sparc architecture.

gcc (>= 4:7.2)
g++ (>= 4:7.2)

  NOTE:
  The libstdc++ -dev library is not needed, as g++ depends on it

make
  Also depended on by dpkg-dev, but make does warrant its own
  dependency since debian/rules will need it even if dpkg-dev
  stopped depending on it

dpkg-dev (>= 1.17.11)
  Provides dpkg-genchanges and other scripts.  Versioned, because
  of support for the build-time dependency fields in /debian/control
  and dpkg-architecture support for OS and CPU information.

  NOTE:
  Although this list does not contain them, all `Essential: yes'
  packages are build-essential as well.  A list of such packages
  can be found by executing the following command
     `grep-status -FEssential -sPackage -ni yes'
  when the `grep-dctrl' package is installed and in its default
  configuration.  Such list is installed with this package as
  the file
     `/usr/share/doc/build-essential/essential-packages-list'

hurd-dev [hurd-i386]
  Provides libpthread.so (and other such essential components).

END LIST OF PACKAGES

Here's the format definition:

   - First line is the following, without any leading or trailing
     whitespace:
        BEGIN LIST OF PACKAGES

   - Last line is the following, without any leading or trailing
     whitespace:
        END LIST OF PACKAGES

   - A line with leading whitespace is a comment.

   - Other lines are joined with end-of-line replaced by comma, and
     the result is parsed like the body of the Build-Depends field.
     The list of build-essential packages for a particular
     architecture is constructed from the result list by ignoring all
     the package name - package version pairs which would be ignored
     if we were building for that architecture and then removing the
     architecture specifications.

相关内容