I have installed Debian from official DVD #1 without standard system utilities and I have a wish to continue offline installation with build-essential set. How to install it offline if C compiler not present in system $PATH and I haven't other Linux device?

  • 1
    What happens if you try to apt install build-essential? May 13 '19 at 12:15

There is finding a public pc like library or something and download the package from the debian site and then try to find all dependencies:


Check out:


If you have a system with internet and Debian or Ubuntu installed or in a VM(VirtualBox runs on Windows) then on that machine get the packeges with dependencies:

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



You can use apt-rdepends to build the complete set of dependencies (recursively), including the main package, then download that:

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

(replacing "${package}" of course).

How to download a package and its dependencies with aptitude?

Then you use a USB memory stick and copy the files to the offline server:

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

Then you have a few ways to install here is one:

dpkg -i <deb file>

it'll fail saying it needs dependencies. After that when you do an apt-get update it'll say at the end something like "dependencies are ready to install" I think it then advises to use

apt-get install -f

Once that's done, I use

dpkg -i


EDIT: Here are the depends for build-essential:

[21:33:49][root] /home/USER [HOST]
~↓↓$↓↓ apt-cache depends build-essential
 |Depends: libc6-dev
  Depends: <libc-dev>
  Depends: gcc
  Depends: g++
  Depends: make
  Depends: dpkg-dev
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 >=, section 4 "Source packages" (more precisely
subsection 4.2 "Package relationships") is the definitive answer.
Here's the definition (as of Policy

    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.

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)

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

  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.

  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

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


Here's the format definition:

   - First line is the following, without any leading or trailing

   - Last line is the following, without any leading or trailing

   - 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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.