6

I'm using a dedicated server and this provider installs Ubuntu 16.04 with almost nothing. For example none of these commands exist so I need to install them one by one:

curl, nano, tmux, htop, iptables, ifconfig and many more of these basic stuff that I don't recall.

I used to use another dedicated server provider and their images would come with those basic stuff.

Now it's a hassle to install those one by one every time I get a new dedicated server (and I get a lot) and/or when I reinstall the OS and they don't have a snapshot feature either.

Is there a command that I can get basic stuff in bundle or something without having to run apt install xx each time for each app I mentioned above?

Eliah Kagan
  • 119,640

4 Answers4

12

Is creating a script to grab what you want beyond you?

You should only grab the bare minimum set of tools you need, so it's better to create your own minimal set than use a predefined set created by someone else (it'll likely contain packages you don't need)

As @Rinzwind said in comments, your script may also include the removal of default installed packages you don't need (ie. to help achieve the minimal packages your system actually needs).

guiverc
  • 33,561
12

The fastest solution to install these would be to install the ubuntu-server packageset which has dependencies on these tools and scripts by default. Then you can script the removal of tools you don't need.

However, if you do so, ubuntu-server gets removed (it's a metapackage, it won't break your system if it's removed), and then if you ever run apt autoremove at any point after, those tools will have a chance to be removed since their only dependency point on-system was ubuntu-server

Thomas Ward
  • 78,878
5

If you don't want to run apt install <packagename> each time, you can combine them in one line

apt install curl nano tmux htop iptables net-tools

Alternatively, if you have a reference server you can use

on the original server

dpkg --get-selections > /tmp/selections.list 

on the new server

dpkg --set-selection < /tmp/selections.list
apt-get dselect-upgrade

However, keep in mind this sets all packages !!

So its advised to only do this on the same OS version, i.e. Ubuntu 16.04 to Ubuntu 16.04. If you do this from an old Ubuntu 16.04 to a new Ubuntu 18.04, you will break the new Ubuntu 18.04.

Robert Riedl
  • 4,401
2

If you do this regularly consider using a configuration management tool like Ansible, Chef, Puppet, ...

You can create a bootstrap playbook/recipe/script (they all call it different) with the configuration you want and the tool makes sure your configuration is met. This can include installed packages, users, groups, ssh keys, passwords ... basically everything that can be configured.