Dan Ritter wrote: >>> That's just knowing what packages you want to install. >> >> What do you mean, what else are you supposed to know? > > Examples: > > - you have installed a load balancer; it needs > a configuration file to work. > > - you have installed bind or unbound to provide DNS, they > need configuration files to work. > > - you have installed a database, it may need tuning. > > - you have an NFS server on your network, each machine needs > a new stanza in /etc/fstab to mount it except the NFS > server > > - you have a webserver, it needs configuration and a set of > files to serve
Okay, right, no here we're only concerned with the state of the OS in terms of packages that are installed so that they can be used immediately by the user, I know that all software can be and is by some including me configured with no end in sight but I see no reason to bring _that_ into _this_, since that is already done with config files and that's the best way there is to do it IMO, and now it's here as well - well, not really, that's what I'm asking for - but when it is for me as well, that'd be then end of it for me and I see no reason to mix it all together, plus there are other ways to automate bringing a bunch of files together on a disk if it comes to that. >> > If that's all you want, you can use dpkg --set-selections >> > and a text list. >> >> What about using the interactive commands? >> >> sudo apt-get -qq update >> sudo apt-get install build-essential debian-goodies libgccjit-10-dev > > Is there a reason that you interpret everything I say as a > challenge? If you just want certain packages installed, you can have for example a shell function in your shell language, e.g. zsh with an array of packs and then a command, e.g. #! /bin/zsh install-os () { sudo apt-get -qq update local -a packs packs=(build-essential debian-goodies libgccjit-10-dev) sudo apt-get install $packs } You don't even need a configuration file nor a script to parse it and pipe it to APT commands ... It can be boiled down to nothing - however, the nothing works - try the above command if you want a system that has build-essential, debian-goodies and libgccjit-10-dev! > Chef uses ruby with adaptations. > > Puppet uses a DSL written in ruby. > > ansible is entirely declarative, in YAML Well, obviously all software is written in some language, if the software is a new language tho for this purpose to pair packages with configuration files that sounds like overkill to me in one sense, and a disadvantage in another sense since one would loose the features compared to just use a real languages (with specific modules etc) like, again Elisp for Emacs and Lua for mpv and some other software as well for that matter ... -- underground experts united https://dataswamp.org/~incal