From cca4189e84b79fec4f115cfd36e48bd5fff493e1 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Mon, 11 Dec 2023 13:13:00 -0800 Subject: [PATCH] improve the consistency of package install related FAQ We make how "how to install" package XYZZY more consistent for those FAQ in terms of the order the OS/methods as well as mentioning all of the current methods: * Red Hat based Linux * macOS * mavOS via Homwbrew * mavOS via macports * Debian based Linux * Other Linux distributions * package website The sound based FAQ was modified in a similar way so that should specific Linux distribution instructions need to be added, those could be added under the appropriate section. Use only "dnf install" for RHEL and mention the possibility of that older RHEL distributions might have to use "yum" instead of "dnf" Changed linux to Linux. Suggest in FAQ 3.1 that they look at other FAQ entries (in section 3). Added missing empty lines before markdown headers. --- faq.md | 366 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 275 insertions(+), 91 deletions(-) diff --git a/faq.md b/faq.md index 816d12f1e..23ca9957a 100644 --- a/faq.md +++ b/faq.md @@ -750,6 +750,9 @@ are much more strict in what they accept as a valid program), or the entry depended on operation system and library features that where common back then but are different/missing today. +Please see the other FAQs in this section as they might offer helpful +hints, especially in cases were something else needs to be installed. + Please see the [bugs.md](/bugs.md) file for details about known problems with IOCCC winners. In some cases you may be dealing with a problematic entry. In a few fun cases, the IOCCC does not compile by design! If you have a fix that makes a minimal impact to the entry, then please consider submitting that change in the form of a pull request. Please @@ -880,15 +883,18 @@ XQuartz, should you wish to. This depends on your operating system but below are instructions for Linux and macOS with alternative methods for macOS and different package managers with Linux. -#### Red Hat based linux -Execute one of the following as root or via sudo: +#### Red Hat based Linux + +Execute the following as root or via sudo: ```sh dnf install SDL2 SDL2-devel sdl12-compat sdl12-compat-devel -yum install SDL2 SDL2-devel sdl12-compat sdl12-compat-devel ``` +Older RHEL distributions might have to use "yum" instead of "dnf" +in the above command. + In the past it was said that one might need to run `make` like: ```sh @@ -905,7 +911,39 @@ but this might not be necessary in more modern days especially as we use `sdl-config` and `sdl2-config` which should find the proper paths. -#### Debian based linux +#### macOS + +If you're using macOS there are at least three ways to obtain it. You can +use Homebrew or MacPorts. If you do not wish to use either of those +package managers, you can always try to install via the package website. +For macOS we do recommend using Homebrew or MacPorts instead of using +the package website. + + +##### macOS via Homebrew + +If you have not already done so, install [Homebrew](https://brew.sh). + +Then to install SDL and SDL2, execute the following command: + +```sh +brew install sdl2 sdl12-compat +eval "$(/opt/homebrew/bin/brew shellenv)" +``` + + +##### macos via MacPorts + +If you haven't already, install +[MacPorts](https://www.macports.org/install.php). Then run: + + +```sh +sudo port install libsdl libsdl2 +``` + + +#### Debian based Linux Execute the following as root or via sudo: @@ -931,7 +969,7 @@ but this might not be necessary in more modern days especially as we use `sdl-config` and `sdl2-config` which should find the proper paths. -#### Other linux distributions +#### Other Linux distributions Use your package manager to install the appropriate packages. Try the search feature of the package manager to determine which packages you need to install. @@ -939,34 +977,13 @@ Note that you might have to install both the library and the developmental packages: one for compiling and one for linking / running. -#### macOS +#### package website -If you're using macOS there are at least three ways to obtain it. You can -download it from the SDL website and install the package. That will not -work well for the IOCCC but these will: +Go to the [SDL website](https://www.libsdl.org) and follow their instructions +for downloading, installing and using SDL. +We recommend trying a method suitable for your environment first, if possible. -##### MacPorts - -If you haven't already, install -[MacPorts](https://www.macports.org/install.php). Then run: - - -```sh -sudo port install libsdl libsdl2 -``` - - -##### Homebrew - -If you have not already done so, install [Homebrew](https://brew.sh). - -Then to install SDL and SDL2, execute the following command: - -```sh -brew install sdl2 sdl12-compat -eval "$(/opt/homebrew/bin/brew shellenv)" -``` #### NOTE: there might be extra SDL packages required @@ -981,34 +998,15 @@ fix it and make a new pull request. This depends on your operating system but below are instructions for Linux and macOS with alternative methods for macOS and different package managers with Linux. -#### Red Hat based linux -Execute one of the following as root or via sudo: - -```sh -dnf install ncurses ncurses-devel -yum install ncurses ncurses-devel -``` - - -#### Debian based linux +#### Red Hat based Linux Execute the following as root or via sudo: ```sh -apt-get install libncurses5-dev libncursesw5-dev +dnf install ncurses ncurses-devel ``` -and then try `make all` again. - - -#### Other linux distributions - -Use your package manager to install the appropriate packages. Try the search -feature of the package manager to determine which packages you need to install. -Note that you might have to install both the library and the developmental -packages: one for compiling and one for linking / running. - #### macOS @@ -1021,19 +1019,74 @@ xcode-select --install and agree to the terms and conditions and proceed with the install. +##### macOS via Homebrew + +Not applicable, see above. + + +##### macos via MacPorts + +Not applicable, see above. + + +#### Debian based Linux + +Execute the following as root or via sudo: + +```sh +apt install libncurses6 +``` + +and then try `make all` again. + + +#### Other Linux distributions + +Use your package manager to install the appropriate packages. Try the search +feature of the package manager to determine which packages you need to install. +Note that you might have to install both the library and the developmental +packages: one for compiling and one for linking / running. + + +#### package website + +Go to the [ncurses website](https://invisible-island.net/ncurses/) and follow their instructions +for downloading, installing and using ncurses. + +We recommend trying a method suitable for your environment first, if possible. + + ### FAQ 3.10: How do I compile and use on macOS, an IOCCC winner that requires sound? + +#### Red Hat based Linux + +Usually the README.md file will explain how to use it under RHEL so we do not +include this here, at least for now. + + +#### macOS + This might depend on the entry but in some cases like [2001/coupard](/2001/coupard/coupard.c) one needs to do more work in order to get it to work. In this case you should be able to use the Swiss Army Knife of sound processing programs, [SoX](https://sox.sourceforge.net). To install this easily -you can use either MacPorts or Homebrew. See below for instructions for each. - -Usually the README.md file will explain how to use it in linux so we do not -include this here, at least for now. +you can use either Homebrew. or MacPorts. -#### MacPorts +##### macOS via Homebrew + +If you have not already done so, install [Homebrew](https://brew.sh). + +Then to install SoX, execute the following command: + +```sh +brew install sox +eval "$(/opt/homebrew/bin/brew shellenv)" +``` + + +##### macos via MacPorts If you haven't already, install [MacPorts](https://www.macports.org/install.php). Then run: @@ -1044,16 +1097,21 @@ sudo port install sox ``` -#### Homebrew +#### Debian based Linux -If you have not already done so, install [Homebrew](https://brew.sh). +Usually the README.md file will explain how to use it under Debian so we do not +include this here, at least for now. -Then to install SoX, execute the following command: -```sh -brew install sox -eval "$(/opt/homebrew/bin/brew shellenv)" -``` +#### package website + +Not applicable, see above. + + +#### Other Linux distributions + +Usually the README.md file will explain how to use it under Linux so we do not +include this here, at least for now. ### FAQ 3.10: Why do Makefiles use -Weverything with clang? @@ -1113,7 +1171,7 @@ If you do try for a compile with `clang -Weverything`, keep on mind that while _ compile environment might be warning free, a different clang version or a different build environment might still have warnings. For instance the warning set is different in macOS (which by default is `clang`: even when run as `gcc`!) -than linux (due to versions and possibly other things)! +than Linux (due to versions and possibly other things)! Given that your entry **MUST** work as documented, you may be safer to say that your entry keeps the number of warnings and `-Wno-foo` options while @@ -1257,16 +1315,41 @@ entry in question. This depends on your operating system for which we describe a couple below. -#### Red Hat based linux -Execute one of the following as root or via sudo: +#### Red Hat based Linux + +Execute the following as root or via sudo: ```sh dnf install netpbm-progs netpbm -yum install netpbm-progs netpbm ``` -#### macOS: MacPorts +Older RHEL distributions might have to use "yum" instead of "dnf" +in the above command. + + +#### macOS + + +If you're using macOS there are at least three ways to obtain it. You can +use Homebrew or MacPorts. If you do not wish to use either of those +package managers, you can always try to install via the package website. +For macOS we do recommend using Homebrew or MacPorts instead of using +the package website. + + +##### macOS via Homebrew + +If you have not already done so, install [Homebrew](https://brew.sh). + +Then to install netpbm, execute the following command: + +```sh +brew install netpbm +``` + + +##### macos via MacPorts If you haven't already, install [MacPorts](https://www.macports.org/install.php). Then run: @@ -1277,31 +1360,73 @@ sudo port install libnetpbm netpbm ``` -#### macOS: Homebrew +#### Debian based Linux -If you have not already done so, install [Homebrew](https://brew.sh). - -Then to install netpbm: +Execute the following as root or via sudo: ```sh -brew install netpbm +apt install netpbm ``` +and then try `make all` again. + + +#### Other Linux distributions + +Use your package manager to install the appropriate packages. Try the search +feature of the package manager to determine which packages you need to install. +Note that you might have to install both the library and the developmental +packages: one for compiling and one for linking / running. + + +#### package website + +Go to the [netpbm website](https://netpbm.sourceforge.net) and follow their instructions +for downloading, installing and using netpbm. + +We recommend trying a method suitable for your environment first, if possible. + + ### 3.16 - How do I compile and install libjpeg-turbo for entries that require it? This depends on your operating system for which we describe a couple below. -#### Red Hat based linux -Execute one of the following as root or via sudo: +#### Red Hat based Linux + +Execute the following as root or via sudo: ```sh dnf install libjpeg-turbo-utils libjpeg-turbo-devel libjpeg-turbo -yum install libjpeg-turbo-utils libjpeg-turbo-devel libjpeg-turbo ``` -#### macOS: MacPorts +Older RHEL distributions might have to use "yum" instead of "dnf" +in the above command. + + +#### macOS + +If you're using macOS there are at least three ways to obtain it. You can +use Homebrew or MacPorts. If you do not wish to use either of those +package managers, you can always try to install via the package website. +For macOS we do recommend using Homebrew or MacPorts instead of using +the package website. + + + +##### macOS via Homebrew + +If you have not already done so, install [Homebrew](https://brew.sh). + +Then to install libjpeg-turbo, execute the following command: + +```sh +brew install libjpeg-turbo +``` + + +##### macos via MacPorts If you haven't already, install [MacPorts](https://www.macports.org/install.php). Then run: @@ -1312,31 +1437,73 @@ sudo port install libjpeg-turbo libjpeg-turbo-devel ``` -#### macOS: Homebrew -If you have not already done so, install [Homebrew](https://brew.sh). +#### Debian based Linux -Then to install `libjpeg-turbo`: +Execute the following as root or via sudo: ```sh -brew install libjpeg-turbo +apt install libturbojpeg0 libturbojpeg0-dev ``` +and then try `make all` again. + + +#### Other Linux distributions + +Use your package manager to install the appropriate packages. Try the search +feature of the package manager to determine which packages you need to install. +Note that you might have to install both the library and the developmental +packages: one for compiling and one for linking / running. + + +#### package website + +Go to the [libjpeg-turbo website](https://www.libjpeg-turbo.org) and follow their instructions +for downloading, installing and using libjpeg-turbo. + +We recommend trying a method suitable for your environment first, if possible. + + ### 3.17 - How do I compile and install ImageMagick for entries that require it? This depends on your operating system for which we describe a couple below. -#### Red Hat based linux -Execute one of the following as root or via sudo: +#### Red Hat based Linux + +Execute the following as root or via sudo: ```sh -dnf install ImageMagick -yum install ImageMagick +dnf install ImageMagick ``` -#### macOS: MacPorts +Older RHEL distributions might have to use "yum" instead of "dnf" +in the above command. + + +#### macOS + +If you're using macOS there are at least three ways to obtain it. You can +use Homebrew or MacPorts. If you do not wish to use either of those +package managers, you can always try to install via the package website. +For macOS we do recommend using Homebrew or MacPorts instead of using +the package website. + + +##### macOS via Homebrew + +If you have not already done so, install [Homebrew](https://brew.sh). + +Then to install ImageMagick, execute the following command: + +```sh +brew install ImageMagick +``` + + +##### macos via MacPorts If you haven't already, install [MacPorts](https://www.macports.org/install.php). Then run: @@ -1347,16 +1514,33 @@ sudo port install ImageMagick ``` -#### macOS: Homebrew +#### Debian based Linux -If you have not already done so, install [Homebrew](https://brew.sh). - -Then to install ImageMagick: +Execute the following as root or via sudo: ```sh -brew install ImageMagick +apt install imagemagick ``` +and then try `make all` again. + + +#### Other Linux distributions + +Use your package manager to install the appropriate packages. Try the search +feature of the package manager to determine which packages you need to install. +Note that you might have to install both the library and the developmental +packages: one for compiling and one for linking / running. + + +#### package website + +Go to the [ImageMagick website](https://imagemagick.org) and follow their instructions +for downloading, installing and using ImageMagick. + +We recommend trying a method suitable for your environment first, if possible. + + ## Section 4: Changes made to IOCCC winners