The difference is that apt installs generic binaries and manages their versions.
When compiling a source package you are entirely on your own because apt cannot manage the package.
However, compiling a source package and installing it yourself is useful if you need features that can be had only by compiling the package yourself.
Sometimes developers will provide features that can only be used in software if a certain compiler switch is used. And sometimes specific processors can perform better if certain compile flags are used.
However, in most cases the features that can be enabled are for debugging purposes and will never be needed even by hard core users. And the binary version that apt is configured to use is already optimized for your processor.
Possible situations where you would need to compile the source yourself would be:
- There's a version of the software available that has features or fixes you need but the package hasn't been updated in your repository yet.
- You're compiling the software to use on a computer with a different architecture.
I was able to figure out all of my issues except for preseeding the Edubuntu-specific questions, so I am going to resort to an Ubuntu vanilla install with the following customizations. I will be installing the Edubuntu packages and setting more things up with bash scripts that I will run from SSH.
- Keyboard layout is set with
keyboard-configuration/layoutcode=us and console-setup/ask_detect=false
boot parameters
- Packages are removed with
ubiquity ubiquity/success_command string in-target apt-get -y purge package
- Packages are installed with
ubiquity ubiquity/success_command string in-target apt-get -y install openssh-server;
- I was able to set the hostname with commands after
ubiquity ubiquity/success_command string
(see EBA.seed below)
isolinux/isolinux.cfg
# D-I config version 2.0
include menu.cfg
default vesamenu.c32
prompt 0
timeout 50
ui gfxboot bootlogo
isolinux/txt.cfg
default unattended-EBA-install
label unattended-EBA-install
menu label ^Install for EBA unattended
kernel /casper/vmlinuz.efi
append file=/cdrom/preseed/EBA.seed keyboard-configuration/layoutcode=us and console-setup/ask_detect=false boot=casper automatic-ubiquity noprompt initrd=/casper/initrd.lz --
label live
menu label ^Try Ubuntu without installing
kernel /casper/vmlinuz.efi
append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash --
label live-install
menu label ^Install Ubuntu
kernel /casper/vmlinuz.efi
append file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash --
label check
menu label ^Check disc for defects
kernel /casper/vmlinuz.efi
append boot=casper integrity-check initrd=/casper/initrd.lz quiet splash --
label memtest
menu label Test ^memory
kernel /install/mt86plus
label hd
menu label ^Boot from first hard disk
localboot 0x80
preseed/EBA.seed
#### Custom Preseed for EBA
### by Kevin
### Ubuntu/Edubuntu 14.04
##################################################################################
### General
###################
# Preseed empty to avoid the summary page
ubiquity ubiquity/summary string empty
# reboot automatically, add 'noprompt' to the kernel command line
ubiquity ubiquity/reboot boolean true
### Localization
####################
# Preseeding only locale sets language, country and locale.
d-i debian-installer/locale string en_US
# Keyboard selection
# Disable automatic (interactive) keymap detection.
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/xkb-keymap select us
ubiquity languagechooser/language-name select English
ubiquity countrychooser/shortlist select US
ubiquity localechooser/supported-locales en_US.UTF-8
ubiquity console-keymaps-at/keymap select us
### Network configuration
#############################
# Disable network configuration entirely. This is useful for cdrom
# installations on non-networked devices where the network questions,
# warning and long timeouts are a nuisance.
d-i netcfg/enable boolean false
# netcfg will choose an interface that has link if possible. This makes it
# skip displaying a list if there is more than one interface.
d-i netcfg/choose_interface select auto
# Disable that annoying WEP key dialog.
#d-i netcfg/wireless_wep string
# The wacky dhcp hostname that some ISPs use as a password of sorts.
#d-i netcfg/dhcp_hostname string radish
# If non-free firmware is needed for the network or other hardware, you can
# configure the installer to always try to load it, without prompting. Or
# change to false to disable asking.
d-i hw-detect/load_firmware boolean true
### Mirror settings
# If you select ftp, the mirror/country string does not need to be set.
#d-i mirror/protocol string ftp
#d-i mirror/country string manual
#d-i mirror/http/hostname string http.us.debian.org
#d-i mirror/http/directory string /debian
d-i mirror/http/proxy string http://proxy:8002
### Account setup
####################
# To create a normal user account.
d-i passwd/user-fullname string EBA Tech
d-i passwd/username string eba
d-i passwd/user-password-crypted password ****
### Clock and time zone setup
# Controls whether or not the hardware clock is set to UTC.
d-i clock-setup/utc boolean true
# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.
d-i time/zone string US/Eastern
# Controls whether to use NTP to set the clock during the install
d-i clock-setup/ntp boolean true
# NTP server to use. The default is almost always fine here.
#d-i clock-setup/ntp-server string ntp.example.com
### Partitioning
#####################
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
# You can choose one of the three predefined partitioning recipes:
# - atomic: all files in one partition
# - home: separate /home partition
# - multi: separate /home, /var, and /tmp partitions
d-i partman-auto/choose_recipe select atomic
# This makes partman automatically partition without confirmation, provided
# that you told it what to do using one of the methods above.
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
### Base system installation
################################
### Apt setup
# You can choose to install restricted and universe software, or to install
# software from the backports repository.
#d-i apt-setup/backports boolean true
d-i apt-setup/extras boolean true
d-i apt-setup/multiverse boolean true
d-i apt-setup/partner boolean true
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
# Use non-free packages
ubiquity ubiquity/use_nonfree boolean true
# Policy for applying updates. May be "none" (no automatic updates),
# "unattended-upgrades" (install security updates automatically), or
# "landscape" (manage system with Landscape).
d-i pkgsel/update-policy select unattended-upgrades
### Boot loader installation
# This is fairly safe to set, it makes grub install automatically to the MBR
# if no other operating system is detected on the machine.
d-i grub-installer/only_debian boolean true
### More Fun!
#############################
#ubiquity ubiquity/edubuntu-addon_fallback_install booolean false
#ubiquity ubiquity/edubuntu-addon_ltsp_install booolean false
#ubiquity ubiquity/edubuntu-addon_ltsp_interface select eth0
#ubiquity ubiquity/install/generate-blacklist multiselect ubuntu-edu-preschool ubuntu-edu-primary ubuntu-edu-tertiary
# Install/remove packages, set hostname, install wifi drivers
ubiquity ubiquity/success_command string \
in-target apt-get -y install openssh-server; \
in-target apt-get -y purge unity-scope-imdb unity-scope-musicstores unity-scope-zotero unity-scope-click-autopilot \
unity-scope-deviantart unity-scope-gallica unity-scope-gdocs unity-scope-github unity-scope-googlenews \
unity-scope-launchpad unity-scope-mediascanner unity-scope-onlinemusic unity-scope-openweathermap \
unity-scope-soundcloud unity-scope-sshsearch unity-scope-yahoostock unity-lens-photos unity-lens-video \
unity-scope-audacious unity-scope-chromiumbookmarks unity-scope-clementine unity-scope-click unity-scope-colourlovers \
unity-scope-gdrive unity-scope-gmusicbrowser unity-scope-gourmet unity-scope-guayadeque unity-scope-mediascanner2 \
unity-scope-musique unity-scope-openclipart unity-scope-texdoc unity-scope-tomboy unity-scope-video-remote \
unity-scope-virtualbox unity-scope-yelp unity-webapps-service account-plugin-ubuntuone ubuntu-purchase-service \
deja-dup indicator-messages empathy gwibber thunderbird transmission-gtk pidgin; \
if [ "$(cat /sys/class/dmi/id/chassis_asset_tag)" != "" ]; then \
in-target hostname $(cat /sys/class/dmi/id/chassis_asset_tag) ;\
in-target sed -i "1s/.*/$(cat /sys/class/dmi/id/chassis_asset_tag)/" /etc/hostname ; \
in-target sed -i "2s/.*/127.0.1.1\t$(cat /sys/class/dmi/id/chassis_asset_tag)/" /etc/hosts; \
else \
in-target hostname $(cat /sys/class/dmi/id/product_name) ;\
in-target sed -i "1s/.*/$(cat /sys/class/dmi/id/product_name)/" /etc/hostname ;\
in-target sed -i "2s/.*/127.0.1.1\t$(cat /sys/class/dmi/id/product_name)/" /etc/hosts; \
fi; \
if [ lspci -d 14e4:4315 ]; then \
in-target apt-get -qq install firmware-b43-installer || in-target apt-get -qq install firmware-b43-lpphy-installer; \
fi;
Best Answer