#245 Completes pending changes to #171
Closed 3 years ago by ankursinha. Opened 3 years ago by ankursinha.
Unknown source pr171  into  master

file modified
+6 -6
@@ -3,16 +3,16 @@

  image="docker.io/antora/antora"

  cmd="--html-url-extension-style=indexify site.yml"

  

- if [ "$(uname)" == "Darwin" ]; then

+ if [ "$(uname)" = "Darwin" ]; then

      # Running on macOS.

      # Let's assume that the user has the Docker CE installed

      # which doesn't require a root password.

      echo ""

      echo "This build script is using Docker container runtime to run the build in an isolated environment."

      echo ""

-     docker run --rm -it -v $(pwd):/antora $image $cmd

+     docker run --rm -it -v "$(pwd):/antora" $image $cmd

  

- elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then

+ elif [ "$(expr substr "$(uname -s)" 1 5)" = "Linux" ]; then

      # Running on Linux.

      # Check whether podman is available, else faill back to docker

      # which requires root.
@@ -21,7 +21,7 @@

          echo ""

          echo "This build script is using Podman to run the build in an isolated environment."

          echo ""

- 	podman run --rm -it -v $(pwd):/antora:z $image $cmd

+ 	podman run --rm -it -v "$(pwd):/antora:z" $image $cmd

  

      elif [ -f /usr/bin/docker ]; then

          echo ""
@@ -29,13 +29,13 @@

          echo ""

  

          if groups | grep -wq "docker"; then

- 	    docker run --rm -it -v $(pwd):/antora:z $image $cmd

+ 	    docker run --rm -it -v "$(pwd):/antora:z" $image $cmd

  	else

              echo ""

              echo "This build script is using $runtime to run the build in an isolated environment. You might be asked for your password."

              echo "You can avoid this by adding your user to the 'docker' group, but be aware of the security implications. See https://docs.docker.com/install/linux/linux-postinstall/."

              echo ""

-             sudo docker run --rm -it -v $(pwd):/antora:z $image $cmd

+             sudo docker run --rm -it -v "$(pwd):/antora:z" $image $cmd

  	fi

      else

          echo ""

empty or binary file added
file modified
+12 -8
@@ -1,3 +1,5 @@

+ * xref:contribute-to-quick-docs.adoc[Contribute to Quick Docs]

+ 

  * xref:howto-file-a-bug.adoc[How to file a bug]

  

  * xref:getting-started-guide.adoc[Getting started with Fedora]
@@ -21,7 +23,7 @@

  ** xref:gnome-shell-extensions.adoc[Using GNOME Shell extensions]

  ** xref:wine.adoc[Running Windows applications with Wine]

  ** xref:using-adobe-flash.adoc[Using Adobe Flash]

- ** xref:adding-new-fonts-fedora.adoc[Adding new fonts in Fedora]

+ ** xref:fonts.adoc[Adding new fonts]

  ** xref:create-gpg-keys.adoc[Creating GPG Keys]

  ** xref:bootloading-with-grub2.adoc[Bootloading with GRUB2]

  ** xref:securing-the-system-by-keeping-it-up-to-date.adoc[Securing the system by keeping it up-to-date]
@@ -71,25 +73,27 @@

  ** xref:creating-windows-virtual-machines-using-virtio-drivers.adoc[Creating Windows virtual machines using virtIO drivers]

  ** xref:how-to-use-vmware.adoc[How to use Vmware Product's]

  

- 

- //FIXME * xref:debug-dracut-problems.adoc[How to debug Dracut problems]

+ * xref:autoupdates.adoc[AutoUpdates]

+ * xref:debug-dracut-problems.adoc[How to debug Dracut problems]

  //FIXME * xref:debug-systemd-problems.adoc[How to debug systemd problems]

  //FIXME * xref:debug-wayland-problems.adoc[How to debug Wayland problems] - note: maintained on wiki, does not fit quick-docs IMHO

  //FIXME * xref:fedora-life-cycle.adoc[Fedora Release Life Cycle] - note: maintained on wiki, does not fit quick-docs IMHO

  //FIXME * xref:enable-touchpad-click.adoc[How to enable touchpad click]

  //FIXME * xref:mirroring.adoc[Mirroring]

- //FIXME * xref:openh264.adoc[OpenH264]

- //FIXME * xref:package-management.adoc[Package management system]

- //FIXME * xref:packagekit-not-found.adoc[PackageKit Items Not Found]

- //FIXME * xref:postgresql.adoc[PostgreSQL]

+ * xref:openh264.adoc[OpenH264]

+ * xref:package-management.adoc[Package management system]

+ * xref:packagekit-not-found.adoc[PackageKit Items Not Found]

+ * xref:postgresql.adoc[PostgreSQL]

  //FIXME * xref:uefi-with-qemu.adoc[Using UEFI with QEMU]

- //FIXME * xref:upgrading-fedora-online.adoc[Upgrading Fedora using package manager]

+ * xref:upgrading-fedora-online.adoc[Upgrading Fedora using package manager]

  

  * xref:creating-rpm-packages.adoc[Creating RPM packages]

  ** xref:create-hello-world-rpm.adoc[Creating a GNU Hello World RPM Package]

+ ** xref:publish-rpm-on-copr.adoc[Publishing your software on Copr]

  

  * Databases

  ** xref:installing-mysql-mariadb.adoc[Installing, Configuring and Troubleshooting MySql/MariaDB]

  

  * FAQ

  ** xref:fedora-and-red-hat-enterprise-linux.adoc[Difference between Fedora and Red Hat Enterprise Linux]

+ ** xref:dnf-vs-apt.adoc[APT commands on Fedora]

@@ -1,3 +1,3 @@

- :MAJOROSVER: 32

- :NEXTVER: 33

- :PREVVER: 31

+ :MAJOROSVER: 33

+ :NEXTVER: 34

+ :PREVVER: 32

@@ -40,7 +40,7 @@

  macro::

  A short string, always prefixed by `%` and generally surrounded by curly brackets `{}` which RPM converts to a different and usually longer string. Some macros can take arguments and some arguments are quite complex. Some macros are provided by RPM, some are part of https://apps.fedoraproject.org/packages/redhat-rpm-config[redhat-rpm-config] and https://apps.fedoraproject.org/packages/fedora-rpm-macros[fedora-rpm-macros] packages, but many other packages also provide macros. You can run `rpm --showrc` to view all of the macros currently available on your system, but you do not need to run most of the macros you see there. 

  +

- For a full list of guidelines related to macros, see http://fedoraproject.org/wiki/Packaging:Guidelines#Macros[Macros] in the Packaging Guidelines.

+ For a full list of guidelines related to macros, see https://docs.fedoraproject.org/en-US/packaging-guidelines/RPMMacros/[Macros] in the Packaging Guidelines.

  

  mock::

  A system for building RPMs locally within your own Fedora installation. This avoids the need to install a full set of build dependencies on your operating system installation, and allows you to build packages for different Fedora releases.

@@ -1,7 +1,7 @@

  [id='understanding-systemd']

  = Understanding systemd

  

- systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. systemd provides:

+ _Systemd_ is a system and service manager for Linux, compatible with SysV and LSB init scripts. _Systemd_ provides:

  

  * Aggressive parallelization capabilities

  * Uses socket and D-Bus activation for starting services
@@ -10,9 +10,9 @@

  * Maintains mount and automount points

  * Implements an elaborate transactional dependency-based service control logic.

  

- The `systemctl` command is the primary tool to manage systemd. It combines the functionality of SysVinit's `service` and `chkconfig` commands into a single tool you can use to enable and disable services permanently or only for the current session.

+ The `systemctl` command is the primary tool to manage _systemd_. It combines the functionality of SysVinit's `service` and `chkconfig` commands into a single tool you can use to enable and disable services permanently or only for the current session.

  

- systemd manages _units_, which are representations of system resources and services. This following list shows the unit types that systemd can manage:

+ _Systemd_ manages so-called *_units_*, which are representations of system resources and services. This following list shows the unit types that _systemd_ can manage:

  

  service::

    A service on the system, including instructions for starting, restarting, and stopping the service.
@@ -21,10 +21,10 @@

    A network socket associated with a service.

  

  device::

-   A device specifically managed with systemd.

+   A device specifically managed with _systemd_.

  

  mount::

-   A mountpoint managed with systemd.

+   A mountpoint managed with _systemd_.

  

  automount::

    A mountpoint automatically mounted on boot.
@@ -42,10 +42,10 @@

    A timer to schedule activation of another unit.

  

  snapshot::

-   A snapshot of the current systemd state. Usually used to rollback after making temporary changes to systemd.

+   A snapshot of the current _systemd_ state. Usually used to rollback after making temporary changes to _systemd_.

  

  slice::

    Restriction of resources through Linux Control Group nodes (cgroups).

  

  scope::

-   Information from systemd bus interfaces. Usually used to manage external system processes.

+   Information from _systemd_ bus interfaces. Usually used to manage external system processes.

@@ -5,6 +5,8 @@

  

  The drivers are cryptographically signed with Red Hat's vendor signature. However they are not signed with Microsoft's https://docs.microsoft.com/en-us/windows-hardware/drivers/install/whql-release-signature[WHQL signature].

  

+ WARNING: Due to the https://docs.microsoft.com/en-us/windows-hardware/drivers/install/kernel-mode-code-signing-policy\--windows-vista-and-later-#signing-requirements-by-version[signing requirements of the Windows Driver Signing Policy], drivers which are not signed by Microsoft will not be loaded by some versions of Windows when https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-secure-boot[Secure Boot] is enabled in the virtual machine.  See https://bugzilla.redhat.com/1844726[bug #1844726].

+ 

  NOTE: Historically the .iso files shipped on alt.fedoraproject.org did _not_ match the layout of the .iso shipped with Red Hat Enterprise Linux. This changed in April 2015.

  

  The current Fedora RPM/ISO directory structure is laid out to mirror exactly the layout that is shipped with the latest release of Red Hat Enterprise Linux. This is so that users and developers don't seen any differences between the two distros.

@@ -1,81 +0,0 @@

- [[adding-new-fonts-as-superuser]]

- = Adding new fonts as the superuser

- 

- System fonts are available to all system users. If you need to add system fonts, there are two ways:

- 

- . Use the `dnf` package manager to install font packages,

- . Manually add fonts to the system and update the font cache to make them available to the users.

- 

- [WARNING]

- ====

- If you manually add system-wide fonts, you will not be able to control them with the package manager. If the font is provided as a distribution package, you should always use the package manager to install it. 

- ====

- 

- 

- [[installing-new-fonts-with-dnf]]

- == Installing new fonts with dnf

- 

- Whenever you can add new fonts by installing a font package with the `dnf` package manager, you should do so. This method gives you control over the font package in the future, such as updating the package and removing it from the system.

- 

- To install a font package with `dnf`:

- 

- 

- [discrete]

- === Before you start

- 

- * Add and enable repositories with font packages.

- +

- [NOTE]

- ====

- A lot of fonts are available from the RPMfusion repository. To enable the repository on your system, follow xref:setup_rpmfusion.adoc[these instructions].

- ====

- 

- 

- [discrete]

- === Procedure

- 

- . List all available font packages from enabled repositories.

- +

- ----

- # dnf search fonts 

- ----

- 

- . Install the package you need.

- +

- ----

- # dnf install libreoffice-opensymbol-fonts.noarch

- ----

- 

- 

- [discrete]

- === More information

- 

- * The `dnf search fonts` command lists all available font packages, as well as their descriptions.

- 

- 

- [[installing-new-fonts-manually]]

- == Installing new fonts manually

- 

- When you need to install fonts that are not available in a repository, you can install them manually by copying the font files into a system font directory and updating the font cache.

- 

- 

- [discrete]

- == Procedure

- 

- . Create a new directory in the system's font directory `/usr/share/fonts`, where you will place the font files.

- +

- ----

- # mkdir /usr/share/fonts/robofont

- ----

- 

- . Copy the font file to the font's directory created in the previous step.  

- +

- ----

- # cp ~/fonts/robofont.ttf /usr/share/fonts/robofont

- ---- 

- 

- . Update the font cache.

- +

- ----

- # fc-cache -v

- ----

@@ -1,71 +0,0 @@

- [[adding-new-fonts-as-user]]

- = Adding new fonts as a user

- 

- When you do not have superuser access to install fonts on the system level, or you only need to install a font that will be available to your user account only, there are two methods to do it. 

- 

- 

- [[adding-new-local-fonts-with-gfv]]

- == Adding new local fonts with the Gnome Font Viewer

- 

- The *Gnome Font Viewer* is an application to display the fonts installed on the system. It also allows you to locally install fonts. To add a new font file with *Gnome Font Viewer*:

- 

- 

- [discrete]

- === Before you start

- 

- * Make sure you have installed the `gnome-font-viewer` package.

- 

- 

- [discrete]

- === Procedure

- 

- . Open a file manager.

- 

- . Double-click on a font file to open it in the *Gnome Font Viewer*.

- 

- . Click on the blue btn:[Install] button on the top bar.

- +

- [NOTE]

- ====

- Currently, there is a bug in the application. When you click on the btn:[Install] button, it does not inform whether the installation succeeded. 

- ====

- 

- 

- [discrete]

- === More information

- 

- * *Gnome Font Viewer* copies the font files to a font directory in the current user's directory `.local/share/fonts` and updates the font cache.

- 

- 

- [[adding-new-local-fonts-manually]]

- == Adding new local fonts manually

- 

- If you do not want to use any tools to add new fonts, you can do it manually. Copy the font files in the `.fonts` directory placed in the user's directory and update the font cache. 

- 

- 

- [discrete]

- === Before you start

- 

- * If it does not exist, create a `.fonts` directory in your user's home directory.

- 

- 

- [discrete]

- === Procedure

- 

- . In the `.local/share/fonts` directory, create a new directory to place your fonts files.

- +

- ---- 

- $ mkdir ~/.local/share/fonts/robofont

- ----

- 

- . Copy the font file into the newly created directory.

- +

- ----

- $ cp robofont.ttf ~/.local/share/fonts/robofont

- ----

- 

- . Update the font cache.

- +

- ----

- $ fc-cache -v

- ----

@@ -7,46 +7,54 @@

  

  When SELinux is running in enforcing mode, it enforces the SELinux policy and denies access based on SELinux policy rules. In Fedora, enforcing mode is enabled by default when the system was initially installed with SELinux.

  

- If SELinux was disabled, follow the procedure below to change mode to enforcing again:

+ .Procedure

  

- This procedure assumes that the [package]*selinux-policy-targeted*, [package]*selinux-policy*, [package]*libselinux*, [package]*libselinux-python*, [package]*libselinux-utils*, [package]*policycoreutils*, and [package]*policycoreutils-python* packages are installed. To verify that the packages are installed, use the following command:

+ . Check the current SELinux mode by using the [command]`getenforce` command:

+ +

  [subs="quotes"]

  ----

- ~]$ rpm -q _package_name_

+ $ *getenforce*

+ Permissive

  ----

+ +

+ If the command displays `Disabled`, then follow xref:{context}-enabling-selinux[]. If it displays `Permissive`, use the following steps to change mode to enforcing again:

  

  . Edit the `/etc/selinux/config` file as follows:

  +

+ [subs="quotes"]

  ----

  # This file controls the state of SELinux on the system.

  # SELINUX= can take one of these three values:

  #       enforcing - SELinux security policy is enforced.

  #       permissive - SELinux prints warnings instead of enforcing.

  #       disabled - No SELinux policy is loaded.

- SELINUX=pass:quotes[*enforcing*]

+ SELINUX=*enforcing*

  # SELINUXTYPE= can take one of these two values:

  #       targeted - Targeted processes are protected,

  #       mls - Multi Level Security protection.

  SELINUXTYPE=targeted

  ----

  

- . Reboot the system:

+ . Restart the system:

  +

+ [subs="quotes"]

  ----

- ~]# reboot

+ $ *reboot*

  ----

  +

- On the next boot, SELinux relabels all the files and directories within the system and adds SELinux context for files and directories that were created when SELinux was disabled.

+ On the next boot, SELinux relabels all files and directories in the system and adds the SELinux context for files and directories that were created when SELinux was disabled.

  

  [NOTE]

  ====

- After changing to enforcing mode, SELinux may deny some actions because of incorrect or missing SELinux policy rules. To view what actions SELinux denies, enter the following command as root:

+ After changing to enforcing mode, SELinux may deny some actions because of incorrect or missing SELinux policy rules. To view what actions SELinux denies:

+ [subs="quotes"]

  ----

- ~]# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

+ $ *sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts recent*

  ----

- Alternatively, with the [package]*setroubleshoot-server* package installed, enter the following command as root:

+ Alternatively, with the [package]`setroubleshoot-server` package installed:

+ [subs="quotes"]

  ----

- ~]# grep "SELinux is preventing" /var/log/messages

+ $ *sudo grep "SELinux is preventing" /var/log/messages*

  ----

- If SELinux denies some actions, see the link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/chap-security-enhanced_linux-troubleshooting[Troubleshooting] chapter in the link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/index[Red Hat Enterprise Linux 7 SELinux User's and Administrator's Guide] for information about troubleshooting.

+ If SELinux denies some actions, see the link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_selinux/troubleshooting-problems-related-to-selinux_using-selinux[Troubleshooting problems related to SELinux] chapter in the link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_selinux/index[RHEL 8 Using SELinux] document for information about troubleshooting.

  ====

@@ -7,25 +7,29 @@

  

  When SELinux is running in permissive mode, SELinux policy is not enforced. The system remains operational and SELinux does not deny any operations but only logs AVC messages, which can be then used for troubleshooting, debugging, and SELinux policy improvements. Each AVC is logged only once in this case.

  

- To permanently change mode to permissive, follow the procedure below:

+ .Procedure

+ 

+ To permanently change mode to permissive:

  

  . Edit the `/etc/selinux/config` file as follows:

  +

+ [subs="quotes"]

  ----

  # This file controls the state of SELinux on the system.

  # SELINUX= can take one of these three values:

  #       enforcing - SELinux security policy is enforced.

  #       permissive - SELinux prints warnings instead of enforcing.

  #       disabled - No SELinux policy is loaded.

- SELINUX=pass:quotes[*permissive*]

+ SELINUX=*permissive*

  # SELINUXTYPE= can take one of these two values:

  #       targeted - Targeted processes are protected,

  #       mls - Multi Level Security protection.

  SELINUXTYPE=targeted

  ----

  

- . Reboot the system:

+ . Restart the system:

  +

+ [subs="quotes"]

  ----

- ~]# reboot

+ $ *reboot*

  ----

@@ -1,15 +1,17 @@

  [#converting-sysvinit-services]

- = Converting SysVinit services

+ = Converting SysVinit services to systemd

  

- Older versions of Fedora use SysVinit scripts to manage services. This section provides some guidelines on how to convert a SysVinit script to a systemd equivalent.

+ Older versions of Fedora use SysVinit scripts to manage services. This section provides some guidelines on how to convert a SysVinit script to a _systemd_ equivalent.

  

- .Prerequisites

+ [discrete]

+ == Prerequisites

  

  * You are logged in as a user with administrator-level permissions.

  

- * You have a custom SysVinit script to convert to a systemd configuration.

+ * You have a custom SysVinit script to convert to a _systemd_ configuration.

  

- .Procedure

+ [discrete]

+ == Procedure

  

  . Identify the runlevels in your SysVinit script. This is usually defined with `chkconfig` directive in the commented section at the beginning of the script. For example, the following indicates the service is using runlevels 3, 4, and 5:

  +
@@ -17,14 +19,14 @@

  # chkconfig: 235 20 80

  ----

  +

- systemd uses targets instead of runlevels. Use the table in <<#converting-sysvinit-services>> to map the runlevels to targets. In this example, runlevels 2, 3, and 5 are all multi-user runlevels, so the systemd service can use the following:

+ systemd uses targets instead of runlevels. Use the table in <<#converting-sysvinit-services>> to map the runlevels to targets. In this example, runlevels 2, 3, and 5 are all multi-user runlevels, so the _systemd_ service can use the following:

  +

  ----

  [Install]

  WantedBy=multi-user.target

  ----

  +

- If you enable the custom systemd service to start at boot (`systemctl enable foo.service`), systemd loads the service when loading the `multi-user.target` at boot time.

+ If you enable the custom _systemd_ service to start at boot (`systemctl enable foo.service`), _systemd_ loads the service when loading the `multi-user.target` at boot time.

  

  . Identify the dependent services and targets. For example, if the custom service requires network connectivity, specify the `network.target` as a dependency:

  +
@@ -34,7 +36,7 @@

  Requires=network.target

  ----

  

- . Identify the command used to start the service in the SysVinit script and convert this to the systemd equivalent. For example, the script might contain a `start` function in the following format:

+ . Identify the command used to start the service in the SysVinit script and convert this to the _systemd_ equivalent. For example, the script might contain a `start` function in the following format:

  +

  [source,bash]

  ----
@@ -89,8 +91,9 @@

  +

  Alternatively, you can omit `ExecStop` and use the default behavior, which kills the service.

  

- . Review the SysVinit script and identify any additional parameters or functions. Use systemd parameters to replicate any identified SysVinit functions that might be relevant to your service.

+ . Review the SysVinit script and identify any additional parameters or functions. Use _systemd_ parameters to replicate any identified SysVinit functions that might be relevant to your service.

  

- .Related Information

+ [discrete]

+ == Related Information

  

  * See link:#common-service-parameters[Common service parameters] for more information about the parameters used in this procedure.

@@ -23,11 +23,9 @@

  

  For the Fedora project, the most important live image configurations files are:

  

- * https://git.fedorahosted.org/cgit/spin-kickstarts.git/tree/fedora-live-base.ks[fedora-live-base.ks]

+ * https://pagure.io/fedora-kickstarts/blob/master/f/fedora-live-base.ks[fedora-live-base.ks]

    : The base live image system, included in the _livecd-tools_ package.

- * For _Fedora 20 and earlier_: https://git.fedorahosted.org/cgit/spin-kickstarts.git/tree/fedora-livecd-desktop.ks[fedora-livecd-desktop.ks]

-   : Complete desktop with applications and input/output support for all supported locales in Fedora. This one is part of the `spin-kickstarts` package. Despite the name, this is the kickstart that generates the ~1GB-sized images for recent releases.

- * For _Fedora 21 and later_: https://git.fedorahosted.org/cgit/spin-kickstarts.git/tree/fedora-live-workstation.ks[fedora-live-workstation.ks]. This is the Workstation product configuration.

+ * For _Fedora 21 and later_: https://pagure.io/fedora-kickstarts/blob/master/f/fedora-live-workstation.ks[fedora-live-workstation.ks]. This is the Workstation product configuration.

  

  _kickstart_ files for other spins, e.g. Fedora Electronics Lab, can be found in `/usr/share/spin-kickstarts/` after installing the `spin-kickstarts` package. These pre-made configuration files can be a great place to start, as they already have some useful pre and post-installation scripts.

  

@@ -3,18 +3,20 @@

  

  This example shows how to create a unit file for a custom service. Custom unit files are located in `/etc/systemd/system/` and have a `.service` extension. For example, a custom `foo` service uses `/etc/systemd/system/foo.service` unit file.

  

- .Prerequisites

+ [discrete]

+ == Prerequisites

  

  * You are logged in as a user with administrator-level permissions.

  

- .Procedure

+ [discrete]

+ == Procedure

  

  This procedure creates a basic configuration file to control the `foo` service.

  

  . Create and edit the new configuration file:

  +

  ----

- # vi /etc/systemd/system/foo.service

+ # nano /etc/systemd/system/foo.service

  ----

  

  . The next few steps describe each section its parameters to add to the file:
@@ -22,9 +24,9 @@

  .. The `[Unit]` section provides basic information about the service. The `foo` service uses the following parameters:

  +

  `Description`::

-   A string describing the unit. systemd displays this description next to the unit name in the user interface. 

+   A string describing the unit. _Systemd_ displays this description next to the unit name in the user interface. 

  `Requires`::

-   Defines unit to use as a dependency for the service. If you activate the unit, systemd activates the units listed in `Requires` as well. For example, the `foo` service might require network connectivity, which means the `foo` services requires `network.target` as a dependency. 

+   Defines unit to use as a dependency for the service. If you activate the unit, _systemd_ activates the units listed in `Requires` as well. For example, the `foo` service might require network connectivity, which means the `foo` services requires `network.target` as a dependency. 

  +

  The resulting `[Unit]` section looks like this:

  +
@@ -37,7 +39,7 @@

  .. The `[Service]` section provides instructions on how to control the service. The `foo` service uses the following parameters:

  +

  `Type`::

-   Defines the type of systemd service. In this example, the `foo` service is a `simple` service, which starts the service without any special consideration.

+   Defines the type of _systemd_ service. In this example, the `foo` service is a `simple` service, which starts the service without any special consideration.

  `ExecStart`::

    The command to run to start the service. This includes the full path to the command and arguments to modify the service.

  +
@@ -49,10 +51,10 @@

  ExecStart=/usr/bin/sleep infinity

  ----

  

- .. The `[Install]` section provides instructions on how systemd installs the service. The `foo` service uses the following parameters:

+ .. The `[Install]` section provides instructions on how _systemd_ installs the service. The `foo` service uses the following parameters:

  +

  `WantedBy`::

-   Defines which service triggers the custom service if enabled with `systemctl enable`. This is mostly used for starting the custom service on boot. In this example, `foo.service` uses `multi-user.target`, which starts `foo.service` when systemd loads `multi-user.target` on boot.

+   Defines which service triggers the custom service if enabled with `systemctl enable`. This is mostly used for starting the custom service on boot. In this example, `foo.service` uses `multi-user.target`, which starts `foo.service` when _systemd_ loads `multi-user.target` on boot.

  

  . The full `foo.service` file contains the following contents:

  +
@@ -71,6 +73,13 @@

  +

  Save the file.

  

+ . To make _systemd_ aware of the new service, reload its service files

+ +

+ ----

+ # systemctl daemon-reload

+ ----

+ 

+ 

  . Start the custom `foo` service:

  +

  ----
@@ -92,6 +101,7 @@

  Dec 14 14:09:12 dansmachine systemd[1]: Started My custom service.

  ----

  

- .Related Information

+ [discrete]

+ == Related Information

  

  * See link:#common-service-parameters[Common service parameters] for more information about the parameters used in this procedure.

@@ -2,37 +2,50 @@

  //

  // changing-selinux-states-and-modes.adoc

  

- [#{context}-Enabling_and_Disabling_SELinux-Disabling_SELinux]

+ [#{context}-disabling-selinux]

  = Disabling SELinux

  

- When SELinux is disabled, SELinux policy is not loaded at all; it is not enforced and AVC messages are not logged. Therefore, all benefits of running SELinux listed in link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/chap-security-enhanced_linux-introduction#sect-Security-Enhanced_Linux-Introduction-Benefits_of_running_SELinux[Benefits of SELinux] are lost.

+ When SELinux is disabled, SELinux policy is not loaded at all; it is not enforced and AVC messages are not logged. Therefore, all benefits of running SELinux listed in xref:{context}-benefits-of-selinux[Benefits of SELinux] are lost.

  

  [IMPORTANT]

  ====

- It is recommended to use permissive mode instead of permanently disabling SELinux. See <<{context}-changing-to-permissive-mode>> for more information about permissive mode.

+ It is recommended to use permissive mode instead of permanently disabling SELinux. See xref:{context}-changing-to-permissive-mode[] for more information about permissive mode.

  ====

  

- To permanently disable SELinux, follow the procedure below:

+ .Prerequisites

  

- . Configure [option]`SELINUX=disabled` in the `/etc/selinux/config` file:

+ * The [package]`grubby` package is installed:

  +

+ [subs="quotes"]

+ ----

+ $ *rpm -q grubby*

+ grubby-_version_

+ ----

+ 

+ .Procedure

+ 

+ To permanently disable SELinux:

+ 

+ . Configure your bootloader to add `selinux=0` to the kernel command line:

+ +

+ [subs="quotes"]

+ ----

+ $ *sudo grubby --update-kernel ALL --args selinux=0*

  ----

  

- # This file controls the state of SELinux on the system.

- # SELINUX= can take one of these three values:

- #       enforcing - SELinux security policy is enforced.

- #       permissive - SELinux prints warnings instead of enforcing.

- #       disabled - No SELinux policy is loaded.

- SELINUX=pass:quotes[*disabled*]

- # SELINUXTYPE= can take one of these two values:

- #       targeted - Targeted processes are protected,

- #       mls - Multi Level Security protection.

- SELINUXTYPE=targeted

+ . Restart your system:

+ +

+ [subs="quotes"]

  ----

+ $ *reboot*

+ ----

+ 

+ .Verification step

  

- . Reboot your system. After reboot, confirm that the [command]`getenforce` command returns `Disabled`:

+ * After reboot, confirm that the [command]`getenforce` command returns `Disabled`:

  +

+ [subs="quotes"]

  ----

- `~]$`pass:attributes[{blank}] pass:attributes[{blank}][command]`getenforce`

+ $ *getenforce*

  Disabled

  ----

@@ -7,22 +7,66 @@

  

  When enabled, SELinux can run in one of two modes: enforcing or permissive. The following sections show how to permanently change into these modes.

  

- While enabling SELinux on systems that previously had it disabled, to avoid problems, such as systems unable to boot or process failures, follow this procedure:

+ While enabling SELinux on systems that previously had it disabled, to avoid problems, such as systems unable to boot or process failures, follow this procedure.

  

- . Enable SELinux in permissive mode. For more information, see <<{context}-changing-to-permissive-mode>>.

+ .Prerequisites

  

- . Reboot your system.

+ * The [package]`selinux-policy-targeted`, [package]`selinux-policy`, [package]`libselinux-utils`, and [package]`grubby` packages are installed. To check that a particular package is installed:

+ +

+ [subs="quotes"]

+ ----

+ $ *rpm -q _package_name_*

+ ----

+ 

+ .Procedure

+ 

+ . If your system has SELinux disabled at the kernel level (this is the recommended way, see xref:{context}-disabling-selinux[]), change this first. Check if you have the `selinux=0` option in your kernel command line:

+ +

+ [subs="quotes"]

+ ----

+ $ *cat /proc/cmdline*

+ BOOT_IMAGE=... ... selinux=0

+ ----

+ 

+ .. Remove the `selinux=0` option from the bootloader configuration using [command]`grubby`:

+ +

+ [subs="quotes"]

+ ----

+ $ *sudo grubby --update-kernel ALL --remove-args selinux*

+ ----

+ 

+ .. The change applies after you restart the system in one of the following steps.

+ 

+ . Ensure the file system is relabeled on the next boot:

+ +

+ [subs="quotes"]

+ ----

+ $ *sudo fixfiles onboot*

+ ----

+ 

+ . Enable SELinux in permissive mode. For more information, see xref:{context}-changing-to-permissive-mode[].

+ 

+ . Restart your system:

+ +

+ [subs="quotes"]

+ ----

+ $ *reboot*

+ ----

  

  . Check for SELinux denial messages.

- // For more information, see <<Fixing_Problems-Searching_For_and_Viewing_Denials>>.

+ +

+ [subs="quotes"]

+ ----

+ $ *sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts recent*

+ ----

  

- . If there are no denials, switch to enforcing mode. For more information, see <<{context}-changing-to-enforcing-mode>>.

+ . If there are no denials, switch to enforcing mode. For more information, see link:{context}-changing-to-enforcing-mode[].

  

  To run custom applications with SELinux in enforcing mode, choose one of the following scenarios:

  

  * Run your application in the `unconfined_service_t` domain.

  // See <<Targeted_Policy-Unconfined_Processes>> for more information.

  

- * Write a new policy for your application. See the link:++https://access.redhat.com/solutions/117583++[Writing Custom SELinux Policy] Knowledgebase article for more information.

+ * Write a new policy for your application. See the link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_selinux/writing-a-custom-selinux-policy_using-selinux[Writing a custom SELinux policy] chapter in the link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_selinux/index[RHEL 8 Using SELinux] document for more information.

  

  // Temporary changes in modes are covered in <<{context}-selinux-states-and-modes>>.

@@ -1,15 +1,15 @@

  [id='installing-openjdk']

- = Installing  OpenJDK

+ = Installing OpenJDK

  

  To install OpenJDK from the Fedora repository:

  

- . Run the following command to list available versions:

+ * Run the following command to list available versions:

  

  ----

- $ dnf search openjdk

+ dnf search openjdk

  ----

  

- . Copy the version of OpenJDK you want to install.

+ * Copy the version of OpenJDK you want to install.

  

  [NOTE]

  Various flavors of OpenJDK are available. For information about these options, search the link:http://openjdk.java.net/[OpenJDK web site].
@@ -17,11 +17,41 @@

  * Run the following command to install OpenJDK:

  

  ----

- # dnf install <openjdk-package-name>

+ sudo dnf install <openjdk-package-name>

  ----

  

- For example:

+ Examples:

  

  ----

- # dnf install java-{1.8.0|11|latest}-openjdk.x86_64

+ sudo dnf install java-1.8.0-openjdk.x86_64

+ ----

+ 

+ ----

+ sudo dnf install java-11-openjdk.x86_64

+ ----

+ 

+ ----

+ sudo dnf install java-latest-openjdk.x86_64

+ ----

+ 

+ == Installing OpenJDK for development

+ 

+ In order to install the Java Development Kit, runtime environment and associated development tools.

+ 

+ ----

+ sudo dnf install <openjdk-package-name>-devel

+ ----

+ 

+ Examples:

+ 

+ ----

+ sudo dnf install java-1.8.0-openjdk-devel.x86_64

+ ----

+ 

+ ----

+ sudo dnf install java-11-openjdk-devel.x86_64

+ ----

+ 

+ ----

+ sudo dnf install java-latest-openjdk-devel.x86_64

  ----

@@ -1,7 +1,7 @@

  [id='installing-oracle-java-se']

  = Installing Oracle Java SE

  

- include::{partialsdir}/3rdparty-message.adoc[] 

+ include::{partialsdir}/3rdparty-message.adoc[]

  

  To install Oracle Java SE:

  
@@ -17,21 +17,3 @@

  ----

  

  Note: Always make sure to download latest version available.

- 

- == Switching between Java Versions                                                        

- 

- You might have installed several versions of Java on your system, you can switch from one 

- 

- After running this command, you will see a a list of all installed Java versions, select t

- 

- ----

- sudo alternatives --config java

- ----

- 

- Simply enter a selection number to choose which java executable should be used by default.

- 

- * verify:                                                                                 

- 

- ----

- java --Versions

- ----

@@ -1,27 +1,25 @@

  [#modifying-existing-systemd-services]

  = Modifying existing systemd services

  

- This example shows how to modify an existing service. The files for service modification are stored in a directory within `/etc/systemd/system`. This directory is named after the service. For example, this procedure modifies the `httpd` service.

+ This example shows how to modify an existing service. Service modification are stored within `/etc/systemd/system`, in a single file or in a subdirectory named after the service. For example, this procedure modifies the `httpd` service.

  

- .Prerequisites

+ [discrete]

+ == Prerequisites

  

  * You are logged in as a user with administrator-level permissions.

  

- * You have a configured `httpd` server running through systemd.

+ * You have a configured `httpd` server running through _systemd_.

  

- .Procedure

+ [discrete]

+ == Procedure

  

- . Create a directory for the service modification in the following format: `[SERVICE NAME].service.d`. For example, the directory for the `httpd.service` modification is `httpd.service.d`:

+ . _Systemd_ services can be modified using the `systemctl edit` command.

  +

  ----

- # mkdir /etc/systemd/system/httpd.service.d/

+ # systemctl edit httpd.service

  ----

- 

- . Create a configuration file within this directory:

  +

- ----

- # vi /etc/systemd/system/httpd.service.d/custom.conf

- ----

+ This creates an override file `/etc/systemd/system/httpd.service.d/override.conf` and opens it in your text editor. Anything you put into this file will be *added* to the existing service file.

  

  . Add your custom configuration. For example:

  +
@@ -30,8 +28,16 @@

  Restart=always

  RestartSec=30

  ----

+ +

+ To replace an option that can be set multiple times, it must cleared first, otherwise the override file will add the option a second time.

+ +

+ ----

+ [Service]

+ ExecStart=

+ ExecStart=<new command>

+ ----

  

- . Save the file.

+ . Save the file. _Systemd_ automatically loads the new service configuration.

  

  . Restart the `httpd` service:

  +
@@ -39,6 +45,9 @@

  # systemctl restart httpd

  ----

  

- .Related Information

+ To completely replace (instead of just add to/modify) an existing service file, use `systemctl edit --full`, e.g.  `systemctl edit --full httpd.service`. This will create `/etc/systemctl/system/httpd.service`, which will be used instead of the existing service file.

+ 

+ [discrete]

+ == Related Information

  

  * See link:#common-service-parameters[Common service parameters] for more information about the parameters used in this procedure.

@@ -1,13 +1,15 @@

  [#starting-stopping-and-querying-systemd-services]

  = Starting, stopping, and querying systemd services

  

- You can perform various management tasks to control systemd services using the `systemctl` command. The following is a set of example commands to demonstrate how to use `systemctl` to manage systemd services.

+ You can perform various management tasks to control _systemd_ services using the `systemctl` command. The following is a set of example commands to demonstrate how to use `systemctl` to manage _systemd_ services.

  

- .Prerequisites

+ [discrete]

+ == Prerequisites

  

  You are logged in as a user with administrator-level permissions.

  

- .Procedure

+ [discrete]

+ == Procedure

  

  The following commands control the `foo` service:

  
@@ -29,19 +31,19 @@

  # systemctl restart foo 

  ----

  

- * Show the status of a service including if it is running or not:

+ * Show the status of a service including, whether it is running or not:

  +

  ----

  # systemctl status foo 

  ----

  

- * Enable a service to be started on bootup:

+ * Enable a service to be started on boot:

  +

  ----

  # systemctl enable foo 

  ----

  

- * Disable a service to not start during bootup:

+ * Disable a service to not start during boot:

  +

  ----

  # systemctl disable foo 
@@ -53,12 +55,13 @@

  # systemctl mask foo 

  ----

  

- * Check if a service is already enabled or not:

+ * Check if a service is enabled or not:

  +

  ----

  # systemctl is-enabled foo

  ----

  

- .Related Information

+ [discrete]

+ == Related Information

  

  * Run `man systemctl` for more details.

@@ -0,0 +1,17 @@

+ = Switching between Java Versions

+ 

+ You might have installed several versions of Java on your system, you can switch from one

+ 

+ After running this command, you will see a a list of all installed Java versions, select t

+ 

+ ----

+ sudo alternatives --config java

+ ----

+ 

+ Simply enter a selection number to choose which java executable should be used by default.

+ 

+ * verify:

+ 

+ ----

+ java --Versions

+ ----

@@ -1,9 +1,9 @@

  [#common-service-parameters]

  = Common service parameters

  

- .Unit Parameters

+ == Unit Parameters

  

- This section contains parameters you can use in the `[Unit]` section of a service. These parameters are common to other systemd units.

+ This section contains parameters you can use in the `[Unit]` section of a service. These parameters are common to other _systemd_ units.

  

  This list is a summarized version. For a full list of these parameters and their descriptions, run `man systemd.unit`.

  
@@ -14,7 +14,7 @@

    A space-separated list of URIs referencing documentation for this service or its configuration. Accepted are only URIs of the following types: `http://`, `https://`, `file:`, `info:`, `man:`. 

  

  Requires::

-   Configures requirement dependencies on other services. If this service gets activated, the units listed here are activated too. If one of the dependent services fails to activate, systemd does not start this service. This option may be specified more than once or you can specify multiple space-separated units.

+   Configures requirement dependencies on other services. If this service gets activated, the units listed here are activated too. If one of the dependent services fails to activate, _systemd_ does not start this service. This option may be specified more than once or you can specify multiple space-separated units.

  

  Wants::

    Similar to `Requires`, except failed units do not have any effect on the service.
@@ -34,9 +34,9 @@

  OnFailure::

    A space-separated list of unit names that are activated when this service enters a failed state.

  

- .Install Parameters

+ == Install Parameters

  

- This section contains parameters you can use in the `[Install]` section of a service. These parameters are common to other systemd units.

+ This section contains parameters you can use in the `[Install]` section of a service. These parameters are common to other _systemd_ units.

  

  This list is a summarized version. For a full list of these parameters and their descriptions, run `man systemd.unit`.

  
@@ -49,9 +49,9 @@

  Also::

      Additional units to install or uninstall when this service is installed or uninstalled.

  

- .Service Parameters

+ == Service Parameters

  

- This section contains parameters you can use in the `[Service]` section of a service unit. These parameters are specific only to systemd service units.

+ This section contains parameters you can use in the `[Service]` section of a service unit. These parameters are specific only to _systemd_ service units.

  

  This list is a summarized version. For a full list of these parameters and their descriptions, run `man systemd.unit`.

  
@@ -60,7 +60,7 @@

  +

  * `simple` - The service starts as the main process. This is the default.

  * `forking` - The service calls forked processes and run as part of the main daemon.

- * `oneshot` - Similar to `simple`, except the process must exit before systemd starts follow-up services.

+ * `oneshot` - Similar to `simple`, except the process must exit before _systemd_ starts follow-up services.

  * `dbus` - Similar to `simple`, except the daemon acquires a name of the D-Bus bus.

  * `notify` - Similar to `simple`, except the daemon sends a notification message using `sd_notify` or an equivalent call after starting up.

  * `idle` - Similar to `simple`, except the execution of the service is delayed until all active jobs are dispatched.
@@ -69,10 +69,10 @@

    A boolean value that specifies whether the service shall be considered active even if all its processes exited. Defaults to no.

  

  GuessMainPID::

-   A boolean value that specifies whether systemd should guess the main PID of a service if it cannot be determined reliably. This option is ignored unless `Type=forking` is set and `PIDFile` is not set. Defaults to yes.

+   A boolean value that specifies whether _systemd_ should guess the main PID of a service if it cannot be determined reliably. This option is ignored unless `Type=forking` is set and `PIDFile` is not set. Defaults to yes.

  

  PIDFile::

-   An absolute filename pointing to the PID file of this daemon. Use of this option is recommended for services where `Type=forking`. systemd reads the PID of the main process of the daemon after start-up of the service. systemd does not write to the file configured here, although it removes the file after the service has shut down. 

+   An absolute filename pointing to the PID file of this daemon. Use of this option is recommended for services where `Type=forking`. _Systemd_ reads the PID of the main process of the daemon after start-up of the service. _Systemd_ does not write to the file configured here, although it removes the file after the service has shut down. 

  

  BusName::

    A D-Bus bus name to reach this service. This option is mandatory for services where `Type=dbus`.

@@ -50,8 +50,8 @@

  `jstatd`:: jstat daemon (experimental)

  `keytool`:: tool for manipulating the keystore

  `pack200`:: JAR compression tool

- `policytool`:: the policy creation and management tool, which can determine policy for a Java runtime, specifying which permissions are

- `available for code from various sources VisualVM`:: visual tool integrating several command-line JDK tools and lightweight clarification needed] performance and memory profiling capabilities

+ `policytool`:: the policy creation and management tool, which can determine policy for a Java runtime, specifying which permissions are available for code from various sources

+ `VisualVM`:: visual tool integrating several command-line JDK tools and lightweight clarification needed] performance and memory profiling capabilities

  `wsimport`:: generates portable JAX-WS artifacts for invoking a web service.

  `xjc`:: Part of the Java API for XML Binding (JAXB) API. It accepts an XML schema and generates Java classes.

  

@@ -1,11 +1,11 @@

  [#mapping-runlevels-to-targets]

  = Mapping runlevels to targets

  

- systemd targets serve a similar purpose to SysVinit runlevels but act a little different. Each target has a name instead of a number and each serves a specific purpose. systemd implements some targets by inheriting all of the services of another target and adding additional services to it. Some systemd targets mimic the common sysvinit runlevels, which means you can switch targets with the familiar `telinit RUNLEVEL` command. The runlevels assigned a specific purpose on vanilla Fedora installs (0, 1, 3, 5, and 6) have a 1:1 mapping with a specific systemd target.

+ _Systemd_ targets serve a similar purpose to SysVinit runlevels but act a little differently. Each target has a name instead of a number and each serves a specific purpose. _Systemd_ implements some targets by inheriting all of the services of another target and adding additional services to it. Some _systemd_ targets mimic the common sysvinit runlevels, which means you can switch targets with the familiar `telinit RUNLEVEL` command. The runlevels assigned a specific purpose on vanilla Fedora installs (0, 1, 3, 5, and 6) have a 1:1 mapping with a specific _systemd_ target.

  

- However, this is not the case for user-defined runlevels 2 and 4. To make use of those runlevels, create a new named systemd target such as `/etc/systemd/system/$YOURTARGET` that takes one of the existing runlevels as a base, make a directory `/etc/systemd/system/$YOURTARGET.wants`, and then symlink the additional services to enable into that directory.

+ However, this is not the case for user-defined runlevels 2 and 4. To make use of those runlevels, create a new named _systemd_ target such as `/etc/systemd/system/$YOURTARGET` that takes one of the existing runlevels as a base, make a directory `/etc/systemd/system/$YOURTARGET.wants`, and then symlink the additional services to enable into that directory.

  

- The following is a mapping of SysVinit runlevels to systemd targets.

+ The following is a mapping of SysVinit runlevels to _systemd_ targets.

  

  [cols="2,5,5",options="header"]

  .Runlevel to target mapping
@@ -28,4 +28,4 @@

  |6 |runlevel6.target, reboot.target |Reboot

  

  |emergency |emergency.target |Emergency shell

- |=== 

\ No newline at end of file

+ |===

@@ -1,9 +1,9 @@

  [#mapping-service-commands]

  = Mapping service commands

  

- The following table demonstrates the systemd equivalent of SysVinit commands.

+ The following table demonstrates the _systemd_ equivalent of SysVinit commands.

  

- NOTE: All recent versions of systemctl assume the `.service` suffix if left off the service name. For example, `systemctl start frobozz.service` is the same as `systemctl start frobozz`.

+ NOTE: All recent versions of `systemctl` assume the `.service` suffix if left off the service name. For example, `systemctl start frobozz.service` is the same as `systemctl start frobozz`.

  

  [cols=",,",options="header",]

  |===
@@ -21,7 +21,7 @@

  |`service frobozz status`|`systemctl status frobozz`|Tells whether a service is currently running.

  

  |`ls /etc/rc.d/init.d/`|`systemctl` or `systemctl list-unit-files --type=service` or +

- `ls /lib/systemd/system/*.service /etc/systemd/system/*.service`|Used to list the services that can be started or stopped +

+ `ls /lib/systemd/system/\*.service /etc/systemd/system/*.service`|Used to list the services that can be started or stopped +

  Used to list all the services and other units

  

  |`chkconfig frobozz on`|`systemctl enable frobozz`|Turn the service on, for start at next boot, or other trigger.
@@ -39,4 +39,4 @@

  |`chkconfig frobozz --add`|`systemctl daemon-reload`|Used when you create a new service file or modify any configuration

  |===

  

- NOTE: All `/sbin/service` and `/sbin/chkconfig` commands listed in the table continue to work on systemd-based systems and are translated to native equivalents as necessary. The only exception is `chkconfig --list`.

+ NOTE: All `/sbin/service` and `/sbin/chkconfig` commands listed in the table continue to work on _systemd_-based systems and are translated to native equivalents as necessary. The only exception is `chkconfig --list`.

@@ -1,16 +0,0 @@

- :experimental:

- ifdef::context[:parent-context: {context}]

- :context: adding-new-fonts-fedora

- 

- [[adding-new-fonts-fedora]]

- = Adding new fonts in Fedora

- 

- include::{partialsdir}/unreviewed-message.adoc[]

- 

- The default installation of the Fedora Linux (Fedora) includes several basic fonts. If you plan to use Fedora for activities such as typesetting and graphic design, you may wish to add additional fonts.

- 

- include::{partialsdir}/proc_adding-new-fonts-as-superuser.adoc[leveloffset=+1]

- 

- include::{partialsdir}/proc_adding-new-fonts-as-user.adoc[leveloffset=+1]

- ifdef::parent-context[:context: {parent-context}]

- ifndef::parent-context[:!context:]

@@ -1,118 +1,83 @@

  = Enabling automatic updates

  

- You must decide whether to use automatic xref:dnf.adoc[DNF] updates on each of your machines.

+ You can use automatic xref:dnf.adoc[DNF] updates to keep your machines up to date without manual intervention.

  There are a number of arguments both for and against automatic updates to consider.

- However, there is no single answer to this question: It is up to the system administrator or owner of each machine to decide whether automatic updates are desirable or not for that machine.

- One of the things which makes one a good system administrator is the ability to evaluate the facts and other people's suggestions, and then decide for oneself what one should do.

  

  The general rule that applies in most cases is as follows:

  

- _If the machine is a critical server, for which unplanned downtime of a service on the machine can not be tolerated, then you should not use automatic updates.

+ _If the machine is a server for which unplanned downtime of a service on the machine can not be tolerated, automatic updates should not be used.

  Otherwise, you *may* choose to use them._

  

- Even the general rule above has exceptions, or can be worked around.

- Some issues might be resolved through a special setup on your part.

- For example, you could create your own DNF or yum repository on a local server, and only put in tested or trusted updates.

- Then use the automatic updates from only your own repository.

- Such setups, while perhaps more difficult to setup and maintain, can remove a large amount of risk otherwise inherent in automatic updates.

- 

  [[can-we-trust-dnf-or-yum-updates]]

- == Can we trust DNF or yum updates?

- 

- DNF and Yum in Fedora has the GPG key checking enabled by default.

- Assuming you have imported the correct GPG keys, and still have gpgcheck=1 in `/etc/dnf/dnf.conf` for DNF or `/etc/yum.conf` for yum, then we can at least assume that any automatically installed updates were not corrupted or modified from their original state.

- Using the GPG key checks, there is no way for an attacker to generate packages that your system will accept as valid (unless they have a copy of the *private* key corresponding to one you installed) and any data corruption during download would be caught.

+ == Can we trust DNF or Yum updates?

  

- However, the question would also apply to the question of update quality.

- Will the installation of the package cause problems on your system?

- This we can not answer.

- Each package goes through a QA process, and is assumed to be problem free.

- But problems happen, and QA can not test all possible cases.

- It is always possible that any update may cause problems during or after installation.

+ DNF and Yum in Fedora both have GPG key checking enabled by default.

+ Assuming you have imported the correct GPG keys (and have `gpgcheck=1` in `/etc/dnf/dnf.conf` for DNF or `/etc/yum.conf` for Yum) then we can safely assume that the automatically installed updates were genuine.

+ This also applies to non-Fedora third-party repositories.

+ Please consult the documentation for any non-Fedora repositories for more details.

  

  [[why-use-automatic-updates]]

- == Why use Automatic updates?

- 

- The main advantage of automating the updates is that machines are likely to get updated more quickly, more often, and more uniformly than if they updates are done manually.

- We see too many compromised machines on the internet which would have been safe if the latest updates where installed in a timely way.

- 

- While you should still be cautious with any automated update solution, in particular on production systems, it is definitely worth considering. At least in some situations.

+ == Why use automatic updates?

  

- [[reasons-for-using-automatic-updates]]

- === Reasons FOR using automatic updates

- 

- While no one can determine for you if your machine is a good candidate for automatic updates, there are several things which tend to make a machine a better candidate for automatic updates.

+ The main advantage of automating updates is that machines are likely to get updated more often, more regularly, and more uniformly than if the updates are done manually.

  

  Some things which might make your machine a good candidate for automatic updates are:

  

  * You are unlikely to apply updates manually for whatever reason(s).

  * The machine is not critical and occasional unplanned downtime is acceptable.

  * You can live without remote access to the machine until you can get to its physical location to resolve problems.

- * You do not have any irreplaceable data on the machine, or have proper backups of such data.

+ * You have backups of data on the machine (or the data on the machine is not important enough and can be lost).

  

  If all of the above apply to your machine(s), then automatic updates may be your best option to help secure your machine.

  If not all of the above apply, then you will need to weigh the risks and decide for yourself if automatic updates are the best way to proceed.

  

- [[reasons-against-using-automatic-updates]]

- === Reasons AGAINST using automatic updates

+ [[why-not-use-automatic-updates]]

+ == Why NOT use automatic updates?

  

- While no one can determine for you if your machine is a bad candidate for automatic updates, there are several things which tend to make a machine a worse candidate for automatic updates.

  

  Some things which might make your machine be a bad candidate for automatic updates are:

  

- * It provides a critical service that you don't want to risk having unscheduled downtime.

- 

+ * It provides a service that you don't want to risk having unscheduled downtime for.

  * You installed custom software, compiled software from source, or use third party software that has strict package version requirements.

- 

- * You installed a custom kernel, custom kernel modules, third party kernel modules, or have a third party application that depends on kernel versions (this may not be a problem if you exclude kernel updates, which is the default in Fedora `dnf.conf` or `yum.conf` files).

-   (But see also https://bugzilla.redhat.com/show_bug.cgi?id=870790[bug #870790] - you may need to modify in Fedora 22 or later versions in base section to add exclude=kernel*. or in Fedora 21 or earlier versions to exclude=kernel*.)

- 

+ * You installed a custom kernel, custom kernel modules, third party kernel modules, or have a third party application that depends on kernel versions.

+ ** You may need to modify in Fedora 22 or later versions in base section to add `exclude=kernel*`, or in Fedora 21 or earlier versions to `exclude=kernel*`.

  * Your environment requires meticulous change-control procedures.

+ * You update from other third party Yum or DNF repositories besides Fedora (core, extras, legacy ) repositories which may conflict in versioning schemes for the same packages.

  

- * You update from other third party yum or DNF repositories besides Fedora (core, extras, legacy ) repositories which may conflict in versioning schemes for the same packages.

- 

- There are also some other reasons why installing automatic updates without testing may be a bad idea. A few such reasons are:

+ There are also some other reasons why installing automatic updates without testing may be a bad idea.

+ A few such reasons are:

  

  * The need to back up your configuration files before an update.

-   Even the best package spec files can have mistakes.

-   If you have modified a file which is not flagged as a configuration file, then you might lose your configuration changes.

-   Or an update may have a different format of configuration file, requiring a manual reconfiguration.

-   It is often best to backup your configuration files before doing updates on critical packages such as mail, web, or database server packages.

+ ** If you have modified a file which is not flagged as a configuration file, then you might lose your configuration changes.

+ ** An update may have a different format of configuration file, requiring a manual reconfiguration.

  

  * Unwanted side effects.

-   Some packages can create annoying side effects, particularly ones which have cron jobs.

-   Updates to base packages like openssl, openldap, sql servers, etc. can have an effect on many other seemingly unrelated packages.

- 

- * Bugs.

-   Many packages contain buggy software or installation scripts.

-   The update may create problems during or after installation.

-   Even cosmetic bugs, like those found in previous Mozilla updates causing the user's icons to be removed or break, can be annoying or problematic.

+ ** Some packages can create annoying side effects, particularly ones which have cron jobs.

+ ** Updates to base packages like openssl, openldap, sql servers, etc. can have an effect on many other seemingly unrelated packages.

  

  * Automatic updates may not complete the entire process needed to make the system secure.

-   For example, DNF or yum can install a kernel update, but until the machine is rebooted (which DNF or yum will not do automatically) the new changes won't take effect.

-   The same may apply to restarting daemons.

-   This can leave the user feeling that he is secure when he is not.

+ ** For example, DNF or Yum can install a kernel update, but until the machine is rebooted (which DNF or Yum will not do automatically) the new changes won't take effect---leaving the system insecure.

  

  

  [[how-are-automatic-updates-done]]

  == How are automatic updates done?

  

- You can use a service to automatically download and install any new updates (for example, security updates).

+ You can use a service to automatically download and install new updates (for example, security updates).

  The http://dnf.readthedocs.org/en/latest/automatic.html[dnf-automatic] RPM package as a xref:dnf.adoc[DNF] component provides a service which is started automatically.

  

  [[install-and-settings-of-dnf-automatic]]

- == Install and settings of dnf-automatic

+ === Install and settings of dnf-automatic

  

- On a fresh install of Fedora 22 or later with default options, the dnf-automatic RPM is not installed.

- The first command below installs this RPM.

+ On a fresh install of Fedora 22 or later, the dnf-automatic package is not installed.

+ The command below installs this RPM.

  

  ....

  sudo dnf install dnf-automatic

  ....

  

  By default, the dnf-automation runs from the configurations in `/etc/dnf/automation.conf` file.

- These configurations only download, but do not apply any of the packages.

- In order to change or add any configurations, open the `.conf` file as the root user (or become root via su -) from a terminal window.

+ These configurations only download, but do not apply updates.

+ In order to change or add any configurations, open the `.conf` file as the root user from a terminal window.

  

  ....

  env EDITOR='gedit -w' sudoedit /etc/dnf/automatic.conf
@@ -122,41 +87,38 @@

  http://dnf.readthedocs.org/en/latest/automatic.html[dnf-automatic] page.

  

  [[run-dnf-automatic]]

- == Run dnf-automatic

+ === Run dnf-automatic

  

  Once you are finished with configuration, execute:

  

  ....

- systemctl enable dnf-automatic.timer && systemctl start dnf-automatic.timer

+ sudo systemctl enable dnf-automatic.timer && sudo systemctl start dnf-automatic.timer

  ....

  

  to enable and start the systemd timer.

- 

  Check status of dnf-automatic:

  

  ....

- systemctl list-timers dnf-*

+ sudo systemctl list-timers dnf-*

  ....

  

  

- As of Fedora 26 there are now three timers that can be enabled to control dnf-automatic.

+ As of Fedora 26, there are now three timers that can be enabled to control dnf-automatic:

  

- * dnf-automatic-download.timer - Only download

- * dnf-automatic-install.timer - Download and install

- * dnf-automatic-notifyonly.timer - Only notify via configured emitters

-   in _/etc/dnf/automatic.conf_

+ * `dnf-automatic-download.timer` - for downloading only,

+ * `dnf-automatic-install.timer` - for downloading and installing,

+ * `dnf-automatic-notifyonly.timer` - for notifications via configured emitters in `/etc/dnf/automatic.conf`.

  

- You can still use _download_updates_ and _apply_updates_ settings from inside _/etc/dnf/automatic.conf_.

+ You can still use `download_updates` and `apply_updates` settings from inside `/etc/dnf/automatic.conf`.

  

  [[best-practices-when-using-automatic-updates]]

- == Best practices when using automatic updates

- 

- If you decide to use automatic updates, you should at least do a few things to make sure you are up-to-date.

+ === Best practices when using automatic updates

  

- Check for package updates which have been automatically performed, and note if they need further (manual) intervention.

- You can monitor what DNF or yum has updated via its log file.

+ If you decide to use automatic updates, you should at least do a few things to make sure you are up to date.

  

- You can monitor updates availability automatically by email after modifying dnf-automatic configuration file (usually).

+ * Check for package updates which have been automatically performed, and note if they need further manual intervention.

+ * You can monitor what DNF or Yum has updated via its log file.

+ * You can monitor updates availability automatically by email after modifying dnf-automatic configuration file.

  

  ....

  [emitters]
@@ -173,70 +135,34 @@

  email_host = localhost

  ....

  

- You would replace root with a actual email address to which you want to report sent, and localhost with a actual address of SMTP server.

- This change will mean that after dnf-automatic runs, it will email you information you about available updates, or log about downloaded packages, or installed updates according to settings in .

+ You would replace `root` with a actual email address to which you want the report sent, and `localhost` with an actual address of SMTP server.

+ This change will mean that after dnf-automatic runs, it will email you information about available updates, or logs about downloaded packages, or installed updates according to settings in the configuration file.

  

  [[alternative-methods]]

  == Alternative methods

  

  As an alternative to dnf-automatic or yum-cron, https://github.com/rackerlabs/auter[auter] can be used.

  This operates in a similar way to yum-cron, but provides more flexibility in scheduling, and some additional options including running custom scripts before or after updates, and automatic reboots.

- This comes at the expensive of more complexity to configure.

  

  ....

  sudo dnf install auter

  ....

  

- Edit the configuration.

- Descriptions of the options are contained in the

- conf file:

+ Edit the configuration `/etc/auter/auter.conf`.

+ Descriptions of the options are documented in the conf file:

  

- ....

- /etc/auter/auter.conf

- ....

- 

- Auter is not scheduled by default.

- Add a schedule for "--prep" (if you

- want to pre-download updates) and "--apply" (install updates).

- The installed cron job contains lots of examples:

- 

- ....

- /etc/cron.d/auter

- ....

+ Auter is not scheduled to run by default.

+ Add a schedule for `--prep` (to pre-download updates) and `--apply` (to install the updates).

+ The installed cron job at `/etc/cron.d/auter` contains lots of examples:

  

- To make auter run immediately without waiting for the cron job to run,

- for example for testing or debugging, you can simply run it from the

- command line:

+ To make Auter run immediately without waiting for the cron job to run, for example for testing or debugging, you can simply run it from the command line:

  

  ....

  auter --apply

  ....

  

- If you want to disable auter from running, including from any cron job:

+ If you want to disable Auter from running, including from any cron job:

  

  ....

  auter --disable

  ....

- 

- [[alternatives-to-automatic-updates]]

- === Alternatives to automatic updates

- 

- [[notifications]]

- ==== Notifications

- 

- Instead of automatic updates, dnf-automatic can only download new updates and can alert your via email of available updates which you could then install manually.

- It can be set by editing of file.

- 

- [[scheduling-updates]]

- ==== Scheduling updates

- 

- Another common problem is having automatic updates run when it isn't desired (holidays, weekends, vacations, etc).

- If there are times that no one will be around to fix any problem arising the from the updates, it may be best to avoid doing updates on those days.

- This problem can be fixed by modification of the timer of dnf-automatic using the description on https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units[Use Systemctl] page.

- 

- [[other-methods-of-protection]]

- == Other methods of protection

- 

- Yet another thing to consider if not using automatic updates is to provide your machine with some other forms of protection to help defend any attacks that might occur before updates are in place.

- This might include an external firewall, a host-based firewall (like iptables, ipchains, and/or tcp wrappers), not performing dangerous tasks on the computer (like browsing the web, reading e-mail, etc), and monitoring the system for intrusion (with system log checkers, IDS systems, authentication or login monitoring, etc)

- .

@@ -3,8 +3,6 @@

  [id='Configuring-networking-with-nmcli']

  = Configuring IP networking with nmcli

  

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  How to configure networking using the [application]*nmcli* (NetworkManager Command Line Interface) command-line utility.

  

  include::{partialsdir}/con_Getting-started-with-nmcli.adoc[leveloffset=+1]

@@ -0,0 +1,61 @@

+ = Contribute to Quick Docs

+ 

+ This repository represents

+ http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/[asciidoc]

+ documents roughly (semi-automatically) converted from the top 50

+ document-like pages in the Fedora Wiki. We want to move away from exposing

+ users to the wild territory of workspace wikis and to a nice, topic-oriented

+ format with a PR-based workflow.

+ 

+ So, this is kind of a seed project. *Your help wanted!*

+ 

+ == Other Source Material

+ 

+ There is a https://fedoraproject.org/wiki/Category:How_to[How To category]

+ on the wiki. Many of those documents are ripe for conversion.

+ https://ask.fedoraproject.org/top/all[Popular

+ questions on Ask Fedora] are also likely to be useful starting points — or,

+ also, frequent

+ https://unix.stackexchange.com/questions/tagged/fedora?sort=frequent&pageSize=50[Fedora

+ questions on Stack Exchange].

+ 

+ Or, of course, if there's something you care about which you can help

+ explain, you can create a new document from scratch.

+ 

+ == Steps

+ 

+ . Pick a document to update. You can find documents needing updates in the [filename]`modules/ROOT/nav.adoc` file. They are on the commented-out lines (those that start with a `//FIXME`).

+ . Fork the https://pagure.io/fedora-docs/quick-docs repo.

+ . Make your changes to the `.adoc` file you want to improve.

+ . Uncomment the file in [filename]`nav.adoc` remove the `FIXME` from the xref..

+ . Build a local preview to ensure your changes look the way you intended: Make sure you have *Docker* installed, and run `./build.sh && ./preview.sh`. Follow instructions printed on the command line.

+ . When you are satisfied with your updates, submit a pull request with your improvements.

+ . If migrating a wiki page, create a redirect on the old page — see below.

+ 

+ == Wiki Redirects

+ 

+ Usually, wikis do not allow redirects to external sites, because the

+ potential for abuse is very high. We've developed a plugin for the Fedora

+ Wiki which allows redirects to _only_ pages on this site,

+ https://docs.fedoraproject.org/. To create such a link, use the

+ `#fedoradocs` macro by putting something like this at the top of the wiki

+ page you are obsoleting:

+ 

+ [source,mediawiki]

+ ----

+ {{#fedoradocs: https://docs.fedoraproject.org/fedora-project/council/fpl.html}}

+ ----

+ 

+ Of course, you will want to replace that specific URL with the one for your

+ new target page. The URL can't be something arbitrary — it must begin with

+ `https://docs.fedoraproject.org/`.

+ 

+ Once the redirect is in place, visitors to that wiki page will be instantly

+ whisked (well, redirected, with the code `301 Moved Permanently`) to the

+ docs site. If you need to edit such a page to correct the URL, or to remove

+ the redirect completely, use a form like:

+ https://fedoraproject.org/w/index.php?title=Project_Leader&action=edit

+ 

+ Note that there is no validation that the target exists or is correct —

+ please double-check that any redirects you create work properly before

+ moving on.

@@ -36,7 +36,7 @@

  Those are the only commands requiring `root` privileges.

  All the remaining work should be done from your regular, non-privileged account, or even from a separate account created just for development work.

  Modern RPM-based systems, including Fedora, are set up to build and test RPM packages purely from within a non-privileged account.

- The follwing command sets up an RPM build area in your `~/rpmbuild` directory.

+ The following command sets up an RPM build area in your `~/rpmbuild` directory.

  This directory will contain several subdirectories, for the project source code, RPM configuration files and for the resulting source and binary packages.

  

  ----
@@ -46,7 +46,7 @@

  == Building a "Hello World" RPM

  

  We need the source code of the project we are packaging, often referred to as the 'upstream' source.

- We will download it from the project's website into the `~/rpmbuild/SOURCE` directory.

+ We will download it from the project's website into the `~/rpmbuild/SOURCES` directory.

  We are getting the compressed tarball archive, which happens to be the preferred distribution form for most FOSS projects.

  

  ----

@@ -1,37 +1,5 @@

  = How to debug Dracut problems

  

- '''

- 

- [IMPORTANT]

- ======

- 

- This page was automatically converted from https://fedoraproject.org/wiki/How_to_debug_Dracut_problems

- 

- It is probably

- 

- * Badly formatted

- * Missing graphics and tables that do not convert well from mediawiki

- * Out-of-date

- * In need of other love

- 

- Pull requests accepted at https://pagure.io/fedora-docs/quick-docs

- 

- Once you've fixed this page, remove this notice, and update

- [filename]`modules/ROOT/nav.adoc`.

- 

- Once the document is live, go to the original wiki page and replace its text

- with the following macro:

- 

- ....

- {{#fedoradocs: https://docs.fedoraproject.org/whatever-the-of-this-new-page}}

- ....

- 

- ======

- 

- '''

- 

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  *Foreword*

  

  If you are experiencing a problem with system initialization due to
@@ -46,16 +14,14 @@

  uncompressed, with MIME type set as text/plain.

  

  [[identifying-your-problem-area]]

- Identifying your problem area

- -----------------------------

+ == Identifying your problem area

  

  1.  Remove `rhgb` and `quiet` from the kernel command line

  2.  Add `rd.shell` to the kernel command line. This will present a shell

-     should dracut be unable to locate your root device

+     in case dracut is unable to locate your root device

  3.  Add `rd.shell rd.debug log_buf_len=1M` to the kernel command line so

      that dracut shell commands are printed as they are executed

  4.  Inspect the system logs:

- +

  ....

   # less /run/initramfs/rdsosreport.txt

   # journalctl -a
@@ -64,50 +30,45 @@

  ....

  

  [[information-to-include-in-your-report]]

- Information to include in your report

- -------------------------------------

+ == Information to include in your report

  

  [[all-bug-reports]]

- All bug reports

- ~~~~~~~~~~~~~~~

+ === All bug reports

  

  In all cases, the following should be mentioned and attached to your bug

  report:

  

  * The exact kernel command-line used. Typically from the bootloader

-   configuration file (e.g. ) or from

- * A copy of your disk partition information from

+   configuration file (e.g. `/etc/grub.conf`) or from `/proc/cmdline`

+ * A copy of your disk partition information from `/etc/fstab`

  * A device listing from device-mapper. This can be obtained by running

-   the command

+   the command `dmsetup ls -- tree`

  * A list of block device attributes including vol_id compatible mode.

-   This can be obtained by running the commands and

- * Turn on dracut debugging (see

-   link:How_to_debug_Dracut_problems#Debugging[the 'debugging dracut'

+   This can be obtained by running the commands `blkid` and `blkid -o udev`

+ * Turn on dracut debugging (see   link:How_to_debug_Dracut_problems#Debugging[the 'debugging dracut'

    section]), and attach all relevant information from the boot log. This

-   can be obtained by running the command grep dracut}}.

- * If you use a dracut configuration file, please include

+   can be obtained by running the command `dmesg|grep dracut`

+ * If you use a dracut configuration file, please include `/etc/dracut.conf`

  

  [[logical-volume-management-related-problems]]

- Logical Volume Management related problems

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ === Logical Volume Management related problems

  

  As well as the information from

  link:How_to_debug_Dracut_problems#AllInfo[the 'all bug reports'

  section], include the following information:

  

- * Include physical volume information by running the command:

- * Include volume group information by running the command:

- * Include logical volume information by running the command:

+ * Include physical volume information by running the command: `lvm pvdisplay`

+ * Include volume group information by running the command: `lvm vgdisplay`

+ * Include logical volume information by running the command: `lvm lvdisplay`

  

  [[software-raid-related-problems]]

- Software RAID related problems

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ === Software RAID related problems

  

  As well as the information from

  link:How_to_debug_Dracut_problems#AllInfo[the 'all bug reports'

  section], include the following information:

  

- * If using software RAID disk partitions, please include the output of

+ * If using software RAID disk partitions, please include the output of `/proc/mdstat`

  

  [[network-root-device-related-problems]]

  Network root device related problems
@@ -122,12 +83,10 @@

  * Please include the output of

  

  [[debugging-dracut]]

- Debugging dracut

- ----------------

+ == Debugging dracut

  

  [[configure-a-serial-console]]

- Configure a serial console

- ~~~~~~~~~~~~~~~~~~~~~~~~~~

+ === Configure a serial console

  

  Successfully debugging dracut will require some form of console logging

  during the system boot. This section documents configuring a serial
@@ -135,20 +94,21 @@

  output for both the kernel and the bootloader, follow the procedure

  below.

  

- 1.  Open the file for editing. Below the line _timeout=5_, add the

-     following:

- +

+ 1.  Open the file `/etc/grub.conf` for editing. Below the line _timeout=5_, add the following:

+ 

  ....

  serial --unit=0 --speed=9600

  terminal --timeout=5 serial console

  ....

- 2.  Also in , add the following boot arguemnts to the _kernel_ line:

- +

+ 

+ 2.  Also in `/etc/grub.conf`, add the following boot arguments to the _kernel_ line:

+ 

  ....

  console=tty0 console=ttyS0,9600

  ....

- 3.  When finished, the file should look similar to the example below.

- +

+ 

+ 3.  When finished, `/etc/grub.conf` should look similar to the example below:

+ 

  ....

  default=0

  timeout=5
@@ -165,17 +125,16 @@

  http://www.faqs.org/docs/Linux-HOWTO/Remote-Serial-Console-HOWTO.html#CONFIGURE-KERNEL[1].

  

  [[using-the-dracut-shell]]

- Using the dracut shell

- ~~~~~~~~~~~~~~~~~~~~~~

+ === Using the dracut shell

  

  Dracut offers a shell for interactive debugging in the event dracut

  fails to locate your root filesystem. To enable the shell:

  

  1.  Add the boot parameter `rd.shell` to your bootloader configuration

-     file (e.g.

+     file (e.g. `/etc/grub/conf`)

  2.  Remove the boot arguments `rhgb` and `quiet`

  

- A sample bootloader configuration file is listed below.

+ A sample `/etc/grub.conf` bootloader configuration file is listed below:

  

  ....

  default=0
@@ -189,7 +148,7 @@

  ....

  

  If system boot fails, you will be dropped into a shell as seen in the

- example below.

+ example below:

  

  ....

  No root device found
@@ -204,28 +163,24 @@

  section]).

  

  [[accessing-the-root-volume-from-the-dracut-shell]]

- Accessing the root volume from the dracut shell

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ === Accessing the root volume from the dracut shell

  

  From the dracut debug shell, you can manually perform the task of

  locating and preparing your root volume for boot. The required steps

  will depend on how your root volume is configured. Common scenarios

  include:

  

- * A block device (e.g. )

- * A LVM logical volume (e.g. )

- * An encrypted device (e.g. )

- * A network attached device (e.g.

-   iscsi:@192.168.0.4::3260::iqn.2009-02.org.fedoraproject:for.all}})

+ * A block device (e.g. `/dev/sda7`)

+ * A LVM logical volume (e.g. `/dev/VolGroup00/LogVol00`)

+ * An encrypted device (e.g. `/dev/mapper/luks-4d5972ea-901c-4584-bd75-1da802417d83`)

+ * A network attached device (e.g. `netroot=iscsi:@192.168.0.4::3260::iqn.2009-02.org.fedoraproject:for.all`)

  

  The exact method for locating and preparing will vary. However, to

  continue with a successful boot, the objective is to locate your root

- volume and create a symlink which points to the file system. For

- example, the following example demonstrates accessing and booting a root

- volume that is an encrypted LVM Logical volume.

+ volume and create a symlink `/dev/root` which points to the file system. For example, the following example demonstrates accessing and booting a root volume that is an encrypted LVM Logical volume.

+ 

+ 1.  Inspect your partitions using `parted`:

  

- 1.  Inspect your partitions using

- +

  ....

  # parted /dev/sda -s p

  Model: ATA HTS541060G9AT00 (scsi)
@@ -237,15 +192,17 @@

   1      32.3kB  10.8GB  107MB   primary   ext4         boot

   2      10.8GB  55.6GB  44.7GB  logical                lvm

  ....

+ 

  2.  You recall that your root volume was a LVM logical volume. Scan and

-     activate any logical volumes

- +

+     activate any logical volumes:

+ 

  ....

  # lvm vgscan

  # lvm vgchange -ay

  ....

- 3.  You should see any logical volumes now using the command :

- +

+ 

+ 3.  You should see any logical volumes now using the command `blkid`:

+ 

  ....

  # blkid

  /dev/sda1: UUID="3de247f3-5de4-4a44-afc5-1fe179750cf7" TYPE="ext4"
@@ -254,44 +211,54 @@

  /dev/mapper/linux-home: UUID="c69127c1-f153-4ea2-b58e-4cbfa9257c5e" TYPE="ext3"

  /dev/mapper/linux-swap: UUID="47b4d329-975c-4c08-b218-f9c9bf3635f1" TYPE="swap"

  ....

+ 

  4.  From the output above, you recall that your root volume exists on an

      encrypted block device. Following the guidance disk encryption guidance

      from the

      http://docs.fedoraproject.org/install-guide/f%7B%7BFedoraVersion%7D%7D/en-US/html/apcs04s04.html[

      Installation Guide], you unlock your encrypted root volume.

- +

+ 

  ....

  UUID=$(cryptsetup luksUUID /dev/mapper/linux-root)

  cryptsetup luksOpen /dev/mapper/linux-root luks-$UUID

  Enter passphrase for /dev/mapper/linux-root:

  Key slot 0 unlocked.

  ....

+ 

  5.  Next, make a symbolic link to the unlocked root volume

- +

+ 

  ....

  ln -s /dev/mapper/luks-$UUID /dev/root

  ....

+ 

  6.  With the root volume available, you may continue booting the system

      by exiting the dracut shell

- +

+ 

  ....

  exit

  ....

  

  [[summary-of-dracut-kernel-command-line-options]]

- Summary of dracut kernel command line options

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ === Summary of dracut kernel command line options

  

  A selection of the most common debugging related dracut options:

  

- rd.shell : Drop to a shell, if the initramfs fails. +

- rd.debug : set -x for the dracut shell. +

- rd.break=[cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot|cleanup]

- : drop the shell on defined breakpoint (use

+ ==== `*rd.shell*` 

+ Drop to a shell, if the initramfs fails.

+ 

+ ==== `*rd.debug*` 

+ Set -x for the dracut shell.

+ 

+ ==== `*rd.break=[cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot|cleanup]*` 

+ Drop the shell on defined breakpoint (use

  `egrep 'rd.?break' /usr/lib/dracut/modules.d/99base/init.sh` to find the

- breakpoints supported by your dracut version) +

- rd.udev.info : set udev to loglevel info +

- rd.udev.debug : set udev to loglevel debug::

+ breakpoints supported by your dracut version)

+ 

+ ==== `*rd.udev.info*` 

+ Set udev to loglevel info

+ 

+ ==== `*rd.udev.debug*`

+ Set udev to loglevel debug

  

  See the `dracut.cmdline(7)`

  http://man7.org/linux/man-pages/man7/dracut.cmdline.7.html[man page] for

@@ -71,14 +71,14 @@

  * If you want to remove/install some packages manually before running `dnf system-upgrade download` again, it is advisable to perform those operations with `--setopt=keepcache=1` dnf command line option.

    Otherwise the whole package cache will be removed after your operation, and you will need to download all the packages once again.

  

- . Trigger the upgrade process. This will restart your machine into the upgrade process:

+ . Trigger the upgrade process. This will reboot your machine (immediately!, without a countdown or confirmation, so close other programs and save your work) into the upgrade process running in a console terminal:

  +

  [source,bash]

  ----

  sudo dnf system-upgrade reboot

  ----

  

- . Once the upgrade process to complete, your system will reboot into the updated release version of Fedora.

+ . Once the upgrade process completes, your system will reboot a second time into the updated release version of Fedora.

  

  [[sect-optional-post-upgrade-tasks]]

  == Optional Post-Upgrade Tasks
@@ -99,7 +99,7 @@

  

  [source,bash]

  ----

- dnf install rpmconf

+ sudo dnf install rpmconf

  ----

  

  Once the install is complete enter:

@@ -0,0 +1,74 @@

+ = APT commands on Fedora

+ 

+ APT is the package manager/dependency solver for the Debian ecosystem, i.e. it manages `.deb` packages installed by the DPKG program. Fedora software is based on `.rpm` packages, and thus uses DNF, the package manager/dependency solver for the RPM program, instead. This document gives a brief overview of the most common APT commands one might find in tutorials and their DNF equivalents.

+ 

+ == APT vs. DNF commands

+ 

+ .Apt vs DNF commands

+ |===

+ | APT command | DNF command | notes

+ 

+ | `apt update`

+ 

+ `apt-get update`

+ 

+ | `dnf check-update`

+ | This command is rarely needed, as dnf updates its package cache automatically when it is stale. A cache update can be forced by appending `--refresh` to other commands, e.g. `dnf upgrade --refresh`

+ 

+ | `apt upgrade`

+ 

+ `apt-get upgrade`

+ 

+ | `dnf upgrade`

+ | 

+ 

+ | `apt full-upgrade`

+ 

+ `apt-get dist-upgrade`

+ 

+ | `dnf distro-sync` or

+ 

+ `dnf system-upgrade` (see note)

+ 

+ | While `distro-sync` is the most direct functional equivalent, `dnf system-upgrade` should be used to upgrade from one release to another, e.g. from Fedora 31 to 32. This is a multi-step process as described xref:dnf-system-upgrade.adoc[here].

+ 

+ | `apt remove`

+ 

+ `apt-get remove`

+ 

+ | `dnf remove`

+ | 

+ 

+ | `apt purge`

+ 

+ `apt-get purge`

+ 

+ | ---

+ |

+ 

+ | `apt autoremove`

+ 

+ `apt-get autoremove`

+ 

+ | `dnf autoremove`

+ | 

+ 

+ | `apt search`

+ 

+ `apt-cache search`

+ 

+ | `dnf search`

+ |

+ 

+ |===

+ 

+ With the exception of the distribution upgrade working differently and DNF updating the cache automatically, the commands are very similar. More info on DNF can be found xref:dnf.adoc[here].

+ 

+ == Why is APT in the Fedora repositories?

+ 

+ WARNING: APT *can not* be used to install packages on Fedora, you *have to use DNF* instead.

+ 

+ The `apt` command on Fedora used to - until https://fedoraproject.org/wiki/Changes/Move_apt_package_from_RPM_to_DPKG_backend[Fedora 32] - actually be APT-RPM, which basically mapped normal apt commands so that they worked with Fedora's RPM package management system.

+ 

+ However, APT-RPM is unmaintained, broken  & insecure, and so was dropped in favour of shipping the actual Debian APT software. Since APT exclusively deals with `.deb` packages, the `apt` command can no longer be used to manage Fedora packages. Its purpose is now purely as a tool for people building packages for Debian-based distributions on a Fedora system.

+ 

@@ -6,8 +6,6 @@

  [[using-firewalld]]

  = Using firewalld

  

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  :leveloffset: +1

  

  include::{partialsdir}/con_firewalld.adoc[]

@@ -0,0 +1,141 @@

+ :experimental:

+ ifdef::context[:parent-context: {context}]

+ :context: fonts

+ 

+ [[fonts]]

+ = Adding new fonts in Fedora

+ :toc:

+ 

+ Fedora pre-installs several basic fonts by default.

+ This page explains how to add new fonts to a Fedora installation.

+ 

+ 

+ [[packaged]]

+ == Packaged fonts

+ 

+ Did you know Fedora packages several freely-licensed fonts?

+ There are several supplementary fonts to preview and try out that are not installed by default.

+ Like all fonts on Fedora, these fonts are not encumbered with licenses or restrictions.

+ 

+ An added benefit of packaged fonts is they give you control over the font package in the future.

+ You will receive future updates and can easily uninstall it later if you decide it is not the font for you.

+ 

+ [[gnome-software]]

+ === GNOME Software

+ 

+ [NOTE]

+ ====

+ This section uses a Graphical User Interface (G.U.I.) for managing fonts.

+ ====

+ 

+ The easiest way to preview and install new fonts is to use [application]`GNOME Software`.

+ Search for a specific font or search "fonts" in [application]`GNOME Software` to see what other freely-licensed fonts are available.

+ 

+ [[dnf]]

+ === DNF package manager

+ 

+ [NOTE]

+ ====

+ This section uses a Command Line Interface (C.L.I.) for managing fonts.

+ ====

+ 

+ If you prefer working in a C.L.I., you can also install fonts with [application]`dnf`.

+ 

+ Add or enable third-party repositories with font packages::

+ Many fonts are available from the RPM Fusion repository.

+ To enable the repository on your system, follow xref:setup_rpmfusion.adoc[these instructions].

+ 

+ List all available font packages from enabled repositories::

+ `sudo dnf search fonts`

+ 

+ Install the font package you need::

+ `sudo dnf install libreoffice-opensymbol-fonts`

+ 

+ 

+ [[unpackaged]]

+ == Unpackaged fonts

+ 

+ In many cases, you may want to use a specific font that is not available in Fedora or is not made available under https://freedomdefined.org/Definition[Free Culture] licenses.

+ 

+ [WARNING]

+ ====

+ Unpackaged fonts are not managed by a package manager.

+ You will not automatically receive updates or optimizations.

+ If a font is provided by a distribution package, you should always use a packaged version of a font.

+ ====

+ 

+ [[system-fonts]]

+ === System fonts

+ 

+ System fonts are installed for all users.

+ Anyone with an account on the machine will be able to use these fonts.

+ 

+ Create a new directory `/usr/share/fonts/<font-family-name>/` for the new font family::

+ `sudo mkdir /usr/share/fonts/robofont`

+ 

+ Copy font files (e.g. `.ttf` files) to the new directory::

+ `sudo cp ~/Downloads/robofont.ttf /usr/share/fonts/robofont`

+ 

+ Update the font cache::

+ `sudo fc-cache -v`

+ 

+ [[user-fonts]]

+ === User fonts

+ 

+ User fonts are installed for an individual user.

+ Only the user who installs the fonts on the machine will be able to use these fonts.

+ This is also convenient if you do not have superuser (i.e. `root`) access on the machine.

+ 

+ There are two ways to install user fonts.

+ 

+ [[user-fonts--gnome-font-viewer]]

+ ==== GNOME Font Viewer

+ 

+ [NOTE]

+ ====

+ This section uses a Graphical User Interface (G.U.I.) for managing fonts.

+ ====

+ 

+ The [application]`GNOME Font Viewer` is an application to display the fonts installed on the system.

+ It also allows you to locally install fonts.

+ Follow these steps to add new user fonts with [application]`GNOME Font Viewer`:

+ 

+ . Install [application]`GNOME Font Viewer`.

+ ** Use GNOME Software or use the command line (`sudo dnf install gnome-font-viewer`)

+ . Open a file browser.

+ . Double-click on a font file to open it in [application]`GNOME Font Viewer`.

+ . Click on the blue btn:[Install] button on the top bar.

+ 

+ [NOTE]

+ ====

+ Currently, there is a bug in the application.

+ When you click on the btn:[Install] button, it does not inform whether the installation succeeded.

+ ====

+ 

+ [application]`GNOME Font Viewer` does two things to install fonts:

+ 

+ . Copy font files to a font directory in the user's home directory `.local/share/fonts`.

+ . Update the font cache.

+ 

+ [[user-fonts--command-line]]

+ ==== Command line

+ 

+ [NOTE]

+ ====

+ This section uses a Command Line Interface (C.L.I.) for managing fonts.

+ ====

+ 

+ If you prefer a command line interface, you can install user fonts manually.

+ Follow these steps in a terminal window to install a font locally:

+ 

+ Create a new directory `~/.local/share/fonts/<font-family-name>/` for the new font family::

+ `mkdir -p ~/.local/share/fonts/robofont`

+ 

+ Copy font files (e.g. `.ttf` files) to the new directory::

+ `cp ~/Downloads/robofont.ttf ~/.local/share/fonts/robofont`

+ 

+ Update the font cache::

+ `fc-cache -v`

+ 

+ ifdef::parent-context[:context: {parent-context}]

+ ifndef::parent-context[:!context:]

@@ -34,8 +34,6 @@

    This requires the installation of a browser extension.

    If it is not installed, the website displays a notification with a link that installs it.

  

- - Using GNOME Software, under `Addons > Shell Extensions`.

- 

  - Manual installation.

    This is not recommended.

    Advanced users that would like to do so should follow the instructions provided by the developers.
@@ -46,10 +44,7 @@

  

  All extensions can be enabled, disabled, and their preferences modified by each user using:

  

- - the https://extensions.gnome.org/local/[website] using Firefox.

- 

- - GNOME Software, under `Addons > Shell Extensions > Extension settings`.

-   This launches the `gnome-shell-extension-prefs` tool, which can also be launched manually in a terminal.

+ - https://extensions.gnome.org/local/[Gnome's Extensions website] using Firefox.

  

  - `gnome-shell-extension-tool`.

    While this tool allows you to enable and disable extensions, it does not allow you to modify their settings.

@@ -2,29 +2,40 @@

  

  include::{partialsdir}/3rdparty-message.adoc[]

  

- === Introduction

+ == Introduction

  The objective is to enable NVIDIA GPU of an Optimus-based laptop *all the time* and use it for every single activity.

  Please do not use this guide if you want to render your desktop using the integrated GPU and specifically select applications to be rendered using the NVIDIA GPU.

  

- NOTE: The steps listed here have been verified to be working on Fedora 32 Workstation. Please update your installation to include your experiences and any other tweaks that may be needed if you are using any other desktop environments.

+ [NOTE]

+ ====

+ The steps listed here have been verified to be working on Fedora 32 Workstation. Please update your installation to include your experiences and any other tweaks that may be needed if you are using any other desktop environments.

  

- NOTE: As Prime works less satisfactorily with Wayland server, following the steps provided in this guide would default the server to Xorg.

+ Some guides on the internet advise a different approach to installing nVidia drivers on Fedora, such as directly using the binaries provided by nVidia. The Fedora Project cannot ensure these will always work on every Fedora release, and we therefore recommend following the steps in this document instead.

+ ====

  

- WARNING: This guide requires the secure boot to be **turned off** to load up the unsigned NVIDIA kernel modules.

+ [NOTE]

+ ====

+ As Prime works less satisfactorily with Wayland server, following the steps provided in this guide would default the server to Xorg.

+ ====

+ 

+ [WARNING]

+ ====

+ This guide requires the secure boot to be **turned off** to load up the unsigned NVIDIA kernel modules.

+ ====

  

  In order to make all the rendering default to the NVIDIA GPU, you need the follow the steps very carefully.

  

  First, you need to see if you really want to achieve this.

  

- ==== Why would you want to do that?

- 1. The use of NVIDIA GPU all the time would allow for smoother transitions and richer animation effects. Premium desktop environments like GNOME would benefit a lot from this.

- 2. Enabling the NVIDIA GPU all the time would lead to lower CPU load and memory consumption which otherwise would have been high due to added in-memory video buffer.

+ === Why would you want to do that?

+ * The use of NVIDIA GPU all the time would allow for smoother transitions and richer animation effects. Premium desktop environments like GNOME would benefit a lot from this.

+ * Enabling the NVIDIA GPU all the time would lead to lower CPU load and memory consumption which otherwise would have been high due to added in-memory video buffer.

  

- ==== Why would you not want to do that?

- 1. With the NVIDIA GPU used all the time, there would be a slight increase in battery consumption which should not be a concern if your device is used while being plugged in.

- 2. Increased generation of heat from the all-the-time enabled NVIDIA GPU can be worrisome. You would not want to play AAA-titles on Proton while placing your laptop on your lap.

+ === Why would you not want to do that?

+ * With the NVIDIA GPU used all the time, there would be a slight increase in battery consumption which should not be a concern if your device is used while being plugged in.

+ * Increased generation of heat from the all-the-time enabled NVIDIA GPU can be worrisome. You would not want to play AAA-titles on Proton while placing your laptop on your lap.

  

- === Step #1: Update from the existing repositories

+ == Step #1: Update from the existing repositories

  Execute

  ----

  sudo dnf update
@@ -33,14 +44,14 @@

  

  image:how-to-set-nvidia-as-primary-gpu-on-optimus-based-laptops-0.png[]

  

- === Step #2: Add the RPMFusion repository for NVIDIA drivers

+ == Step #2: Add the RPMFusion repository for NVIDIA drivers

  Then you need to add the *RPM Fusion repository for NVIDIA drivers*. To do that, open up *GNOME Software* and click on the *hamburger menu* (three horizontal lines) on the top-right corner. Then click on *Software Repositories* from the dropdown menu. There you will see this.

  

  image:how-to-set-nvidia-as-primary-gpu-on-optimus-based-laptops-1.png[]

  

  Select *RPM Fusion for Fedora 32 - Nonfree - NVIDIA Driver* and *ENABLE* it. It requires elevated privileges so enter your password and it will be done.

  

- === Step #3: Update from the newly added repositories

+ == Step #3: Update from the newly added repositories

  Execute

  ----

  sudo dnf update --refresh
@@ -49,7 +60,7 @@

  

  image:how-to-set-nvidia-as-primary-gpu-on-optimus-based-laptops-2.png[]

  

- === Step #4: Install the driver and its dependencies

+ == Step #4: Install the driver and its dependencies

  Execute

  ----

  sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs xorg-x11-drv-nvidia-libs.i686
@@ -58,10 +69,10 @@

  

  image:how-to-set-nvidia-as-primary-gpu-on-optimus-based-laptops-3.png[]

  

- === Step #5: Wait for the kernel modules to load up

+ == Step #5: Wait for the kernel modules to load up

  You **must** wait 5-10 minutes for the kernel modules to load. Please do not proceed to the next steps immediately.

  

- === Step #6: Read from the updated kernel modules

+ == Step #6: Read from the updated kernel modules

  Execute

  ----

  sudo akmods --force
@@ -69,7 +80,7 @@

  ----

  This would force the configuration to be read from the updated kernel modules which now have the NVIDIA drivers in them.

  

- === Step #7: Reboot your system

+ == Step #7: Reboot your system

  Wait for 3-5 minutes for the changes to take effect and then reboot your system.

  

  Once your system has started, go to the *About* page in the *Settings* application. You are likely to see the following output.
@@ -78,7 +89,7 @@

  

  This means that the driver installation was successful leading to the detection of two distinct video accelerators - internal and dedicated.

  

- === Step #8: Edit the X11 configuration

+ == Step #8: Edit the X11 configuration

  Execute the following command to copy the display render details for the X11.

  

  ----
@@ -105,10 +116,12 @@

  

  Save it using `[Ctrl]+[S]` and exit out using `[Ctrl]+[X]`.

  

+ NOTE: If you are using a display manager other than GDM (the defualt of Fedora Workstation), you will need to configure it appropriately. Please refer https://wiki.archlinux.org/index.php/NVIDIA_Optimus#Display_managers[to the Arch wiki for instructions]. For SDDM (the KDE spin default) on Fedora32, the Arch wiki is _wrong_, and you need to edit the `/etc/sddm/Xsetup` file, _not_ `/usr/share/sddm/scripts/Xsetup`.

+ 

  === Step #9: Reboot your system

  Reboot your system and proceed to the next steps to verify the change in configuration.

  

- === Step #10: Verify the configuration

+ == Step #10: Verify the configuration

  Open a terminal and type in

  ----

  glxinfo | egrep "OpenGL vendor|OpenGL renderer"
@@ -135,15 +148,13 @@

  

  image:how-to-set-nvidia-as-primary-gpu-on-optimus-based-laptops-9.png[]

  

- === References

+ == References

  Should you face issues while following these steps or if these do not match your use case,

  feel free to convey your queries on https://ask.fedoraproject.org[Fedora Forums].

  

  Here are the links you can refer to for obtaining more information.

  

- 1. https://rpmfusion.org/Howto/Optimus[RPMFusion's Optimus How-to guide]

- 2. https://rpmfusion.org/Howto/NVIDIA[RPMFusion's NVIDIA How-to guide]

- 3. https://unix.stackexchange.com/questions/16407/how-to-check-which-gpu-is-active-in-linux[GPU Activity on UNIX StackExchange]

- 4. https://www.reddit.com/r/Fedora/comments/bw4b0p/how_to_fedora_nvidia_prime/[Fedora Subreddit (zvitaly’s response only)]

- 

- Please do not refer to the misleading information available on this site https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/

+ * https://rpmfusion.org/Howto/Optimus[RPMFusion's Optimus How-to guide]

+ * https://rpmfusion.org/Howto/NVIDIA[RPMFusion's NVIDIA How-to guide]

+ * https://unix.stackexchange.com/questions/16407/how-to-check-which-gpu-is-active-in-linux[GPU Activity on UNIX StackExchange]

+ * https://www.reddit.com/r/Fedora/comments/bw4b0p/how_to_fedora_nvidia_prime/[Fedora Subreddit (zvitaly’s response only)]

@@ -75,6 +75,9 @@

  

  === Step 0: Create a Bugzilla account

  

+ TIP: *Use your Fedora account*: You can use your https://admin.fedoraproject.org/accounts/[Fedora account] to sign into Bugzilla.

+ This is preferred, since your Fedora account can also be used to log into all other Fedora services.

+ 

  Bugs are filed on https://bugzilla.redhat.com[Fedora's bugzilla instance], and you must have an account there to file bugs or interact with them.

  An account requires a valid e-mail address and can be created https://bugzilla.redhat.com/createaccount.cgi[here].

  The bug tracker will only send e-mail notifications about bugs that a user is involved in. No other e-mails will be sent.

file modified
+2 -58
@@ -1,61 +1,5 @@

  = Fedora Quick Docs

  

- This repository represents

- http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/[asciidoc]

- documents roughly (semi-automatically) converted from the top 50

- document-like pages in the Fedora Wiki. We want to move away from exposing

- users to the wild territory of workspace wikis and to a nice, topic-oriented

- format with a PR-based workflow.

+ This is a collection of short HOWTO and FAQ style documentation for Fedora users. Use the menu on the left to find an area of interest, and under that solutions to your specific problem.

  

- So, this is kind of a seed project. *Your help wanted!*

- 

- == Other Source Material

- 

- There is a https://fedoraproject.org/wiki/Category:How_to[How To category]

- on the wiki. Many of those documents are ripe for conversion.

- https://ask.fedoraproject.org/top/all[Popular

- questions on Ask Fedora] are also likely to be useful starting points — or,

- also, frequent

- https://unix.stackexchange.com/questions/tagged/fedora?sort=frequent&pageSize=50[Fedora

- questions on Stack Exchange].

- 

- Or, of course, if there's something you care about which you can help

- explain, you can create a new document from scratch.

- 

- == Steps

- 

- . Pick a document to update. You can find documents needing updates in the [filename]`modules/ROOT/nav.adoc` file. They are on the commented-out lines (those that start with a `//FIXME`).

- . Fork the https://pagure.io/fedora-docs/quick-docs repo.

- . Make your changes to the `.adoc` file you want to improve.

- . Uncomment the file in [filename]`nav.adoc` remove the `FIXME` from the xref..

- . Build a local preview to ensure your changes look the way you intended: Make sure you have *Docker* installed, and run `./build.sh && ./preview.sh`. Follow instructions printed on the command line.

- . When you are satisfied with your updates, submit a pull request with your improvements.

- . If migrating a wiki page, create a redirect on the old page — see below.

- 

- == Wiki Redirects

- 

- Usually, wikis do not allow redirects to external sites, because the

- potential for abuse is very high. We've developed a plugin for the Fedora

- Wiki which allows redirects to _only_ pages on this site,

- https://docs.fedoraproject.org/. To create such a link, use the

- `#fedoradocs` macro by putting something like this at the top of the wiki

- page you are obsoleting:

- 

- [source,mediawiki]

- ----

- {{#fedoradocs: https://docs.fedoraproject.org/fedora-project/council/fpl.html}}

- ----

- 

- Of course, you will want to replace that specific URL with the one for your

- new target page. The URL can't be something arbitrary — it must begin with

- `https://docs.fedoraproject.org/`.

- 

- Once the redirect is in place, visitors to that wiki page will be instantly

- whisked (well, redirected, with the code `301 Moved Permanently`) to the

- docs site. If you need to edit such a page to correct the URL, or to remove

- the redirect completely, use a form like:

- https://fedoraproject.org/w/index.php?title=Project_Leader&action=edit

- 

- Note that there is no validation that the target exists or is correct —

- please double-check that any redirects you create work properly before

- moving on.

+ This documentation is community-made. Your contributions and improvements are welcome!

@@ -29,8 +29,9 @@

  

  include::{partialsdir}/proc_installing-oracle-java.adoc[leveloffset=+1]

  

- include::{partialsdir}/ref_jdk-tools.adoc[leveloffset=+1]

+ include::{partialsdir}/proc_switching-between-java-versions.adoc[leveloffset=+1]

  

+ include::{partialsdir}/ref_jdk-tools.adoc[leveloffset=+1]

  

  [discrete]

  == Additional resources

@@ -9,9 +9,8 @@

  Spotify is a freemium service, with advertisements which can be removed by purchasing a subscription.

  Although Spotify is not officially supported on Fedora, it can be installed on Fedora in a number of ways:

  

- . Using unofficial repositories https://rpmfusion.org/[RPM Fusion] repositories.

+ . Using the third-party https://rpmfusion.org/[RPM Fusion] repositories.

  . Using a Flatpak hosted by http://flathub.org[Flathub].

- . Using the https://www.spotify.com/us/download/linux/[officially-supported] http://snapcraft.io/[Snap].

  

  [install-spotify-using-rpmfusion]

  == Using the RPM Fusion repository
@@ -74,32 +73,10 @@

  flatpak run com.spotify.Client

  ----

  

- 

- 

- [instal-spotify-using-snap]

- == Snap

- 

- // UNVERIFIED!

- 

- Snap is the officially recommended distribution method for Spotify. To install Spotify using http://snapcraft.io/[Snap]:

- 

- . Install Snap

- +

- ----

- sudo dnf install snapd

- sudo ln -s /var/lib/snapd/snap /snap

- ----

- 

- . Install Spotify using Snap:

- ----

- snap install spotify

- ----

- 

  == References

  

  . https://github.com/rpmfusion/lpf-spotify-client

  . https://flathub.org/apps/details/com.spotify.Client

- . https://snapcraft.io/spotify

  

  ifdef::parent-context[:context: {parent-context}]

  ifndef::parent-context[:!context:]

@@ -1,38 +1,5 @@

  = OpenH264

  

- '''

- 

- [IMPORTANT]

- ======

- 

- This page was automatically converted from https://fedoraproject.org/wiki/OpenH264

- 

- It is probably

- 

- * Badly formatted

- * Missing graphics and tables that do not convert well from mediawiki

- * Out-of-date

- * In need of other love

- 

- 

- Pull requests accepted at https://pagure.io/fedora-docs/quick-docs

- 

- Once you've fixed this page, remove this notice, and update

- [filename]`modules/ROOT/nav.adoc`.

- 

- Once the document is live, go to the original wiki page and replace its text

- with the following macro:

- 

- ....

- {{#fedoradocs: https://docs.fedoraproject.org/whatever-the-of-this-new-page}}

- ....

- 

- ======

- 

- '''

- 

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  

  This page contains information on the Cisco

  http://www.openh264.org/[OpenH264] codec.
@@ -45,8 +12,7 @@

  their of implementation H.264 codec, and they cover all licensing fees

  for all parties using their binary. This codec allows you to use H.264

  in WebRTC with gstreamer and Firefox. It does *not* enable generic H.264

- playback, only WebRTC (see Mozilla

- https://bugzilla.mozilla.org/show_bug.cgi?id=1057646[bug 1057646]).

+ playback, only WebRTC (see link:https://bugzilla.mozilla.org/show_bug.cgi?id=1057646[Mozilla bug 1057646]).

  

  The code source is available at https://github.com/cisco/openh264 under

  a BSD license. The binary is released under this agreement from Cisco:
@@ -95,10 +61,12 @@

  

  Example installation for version 1.1:

  

- `wget `http://ciscobinary.openh264.org/openh264-linux64-v1.1-Firefox33.zip[`http://ciscobinary.openh264.org/openh264-linux64-v1.1-Firefox33.zip`] +

- `mkdir -p ~/.mozilla/firefox/``/gmp-gmpopenh264/1.1/` +

- `cd ~/.mozilla/firefox/``/gmp-gmpopenh264/1.1/` +

- `unzip ~/openh264-linux64-v1.1-Firefox33.zip`

+ ....

+ wget http://ciscobinary.openh264.org/openh264-linux64-v1.1-Firefox33.zip[http://ciscobinary.openh264.org/openh264-linux64-v1.1-Firefox33.zip] +

+ mkdir -p ~/.mozilla/firefox/<yourprofile>/gmp-gmpopenh264/1.1/ +

+ cd ~/.mozilla/firefox/<yourprofile>/gmp-gmpopenh264/1.1/ +

+ unzip ~/openh264-linux64-v1.1-Firefox33.zip

+ ....

  

  [[firefox-config-changes]]

  Firefox config changes
@@ -111,17 +79,20 @@

    appear. Give the following Preference Names a value of true by

    double-clicking on false:

  

- ` media.gmp-gmpopenh264.autoupdate` +

- ` media.gmp-gmpopenh264.enabled` +

- ` media.gmp-gmpopenh264.provider.enabled` +

- ` media.peerconnection.video.h264_enabled`

+ ....

+ media.gmp-gmpopenh264.autoupdate

+ media.gmp-gmpopenh264.enabled

+ media.gmp-gmpopenh264.provider.enabled

+ media.peerconnection.video.h264_enabled

+ ....

  

  * Restart Firefox

  * After restarting, the following string in about:config will change to

    the current version that has been installed from the web:

- 

- ` media.gmp-gmpopenh264.version`

- '''

+   

+ ....

+ media.gmp-gmpopenh264.version

+ ....

  

  See a typo, something missing or out of date, or anything else which can be

  improved? Edit this document at https://pagure.io/fedora-docs/quick-docs.

@@ -1,38 +1,5 @@

  = Package management system

  

- '''

- 

- [IMPORTANT]

- ======

- 

- This page was automatically converted from https://fedoraproject.org/wiki/Package_management_system

- 

- It is probably

- 

- * Badly formatted

- * Missing graphics and tables that do not convert well from mediawiki

- * Out-of-date

- * In need of other love

- 

- 

- Pull requests accepted at https://pagure.io/fedora-docs/quick-docs

- 

- Once you've fixed this page, remove this notice, and update

- [filename]`modules/ROOT/nav.adoc`.

- 

- Once the document is live, go to the original wiki page and replace its text

- with the following macro:

- 

- ....

- {{#fedoradocs: https://docs.fedoraproject.org/whatever-the-of-this-new-page}}

- ....

- 

- ======

- 

- '''

- 

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  [[package-management-system]]

  Package Management System

  -------------------------

@@ -1,38 +1,5 @@

  = PackageKit Items Not Found

  

- '''

- 

- [IMPORTANT]

- ======

- 

- This page was automatically converted from https://fedoraproject.org/wiki/PackageKit_Items_Not_Found

- 

- It is probably

- 

- * Badly formatted

- * Missing graphics and tables that do not convert well from mediawiki

- * Out-of-date

- * In need of other love

- 

- 

- Pull requests accepted at https://pagure.io/fedora-docs/quick-docs

- 

- Once you've fixed this page, remove this notice, and update

- [filename]`modules/ROOT/nav.adoc`.

- 

- Once the document is live, go to the original wiki page and replace its text

- with the following macro:

- 

- ....

- {{#fedoradocs: https://docs.fedoraproject.org/whatever-the-of-this-new-page}}

- ....

- 

- ======

- 

- '''

- 

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  [[missing-package]]

  == Missing Package

  
@@ -41,9 +8,9 @@

  Fedora's repositories:

  

  * Fedora does not include software that is

-   link:Package_Not_Found#Patents[ encumbered by software patents].

+   link:Package_Not_Found#Patents[encumbered by software patents].

  * Fedora does not include proprietary software, only software with an

-   link:Licensing[ acceptable license].

+   link:Licensing[acceptable license].

  * It is possible that no one has packaged it yet. You might consider

    adding it to the link:PackageMaintainers/WishList[Package WishList], or

    even link:PackageMaintainers/Join[packaging it yourself]!
@@ -108,7 +75,7 @@

  Fedora's repositories:

  

  * Fedora does not include proprietary fonts, it only uses fonts with an

-   link:Licensing/Fonts[ acceptable font license].

+   link:Licensing/Fonts[acceptable font license].

  * It is possible that no one has packaged that font yet. You might

    consider adding it to the :Category:Font_wishlist[Font WishList], or

    even link:PackageMaintainers/Join[packaging it yourself]!
@@ -132,7 +99,118 @@

  

  [[fedora-position-on-software-patents]]

  == Fedora Position on Software Patents

- '''

+ WARNING: This information is provided only for answering common questions from Fedora users and should not be read as legal advice. What applies to Red Hat and the Fedora Project may not necessarily apply to you. If you need legal assistance, consult your own lawyer. This material does not represent the official views of Red Hat or the Fedora Project.

+ 

+ [[what-is-a-software-patent]]

+ === What is a software patent?

+ A patent is a set of exclusionary rights granted by a government to a patent holder for a limited period of time, usually 20 years from the earliest effective filing date of the patent application. These monopoly rights are granted to patent applicants in exchange for their disclosure of the invention claimed by the patent. Once a patent is granted in a given country, the patent holder may exclude someone from making, using, selling or importing embodiments of the claimed invention in that country. Software patents are different from copyright or trademarks despite being lumped together with them under the collective term link:http://www.gnu.org/philosophy/not-ipr.html[Intellecutal Property].

+ 

+ [[who-is-responsible-for-taking-care-of-any-legal-issues-in-fedora]]

+ === Who is responsible for taking care of any legal issues in Fedora?

+ The Fedora Project is not a separate and distinct legal entity. Red Hat, the primary sponsor of the Fedora Project, is actively involved in legal matters relating to Fedora, along with other Fedora participants. For example, Red Hat lawyers assist Fedora Project contributors in issues pertaining to free and open source software licensing, trademarks and patents. Refer to the link:https://fedoraproject.org/wiki/Legal:Main?rd=Legal[Legal] page for more information.

+ 

+ [[if-software-patents-are-not-recognized-in-all-regions-why-not]]

+ === If Software patents are not recognized in all regions, why can't you distribute Fedora with such software in other regions?

+ Contrary to common belief, software patents are granted in some form or other in most countries, including most of the countries in which most Fedora participants reside.

+ 

+ [[cant-you-pay-the-patent-license-fees-for-patent-encumbered-codecs]]

+ === Can't you pay the patent license fees for patent encumbered codecs?

+ A codec is a set of methods to encode and decode video or audio information into a data stream. In the case of codecs like MP3 or WMV, the company or companies associated with developing the format are also involved in asserting (or restrictively licensing) patents that purportedly cover the format; we refer to such codecs as "patent encumbered". Other codecs, such as WebM, Ogg Theora or Ogg Vorbis, Dirac, and FLAC, are made available by their developers without asserting patents on their implementations; we refer to such codecs as "patent unencumbered". Fedora includes comprehensive support for open, patent-unencumbered codecs but is unable to include support for the patent encumbered ones.

+ 

+ Patent licenses usually require the licensee to pay royalties based on the number of users. Since Fedora is free and open source software, the effective number of users is essentially unrestricted. Patent holders are generally unwilling to give a blanket patent license for unlimited use; moreover, the royalty payments would be too high for it to be practical for the Fedora Project, or its sponsors, to pay them. Proprietary operating systems like Microsoft Windows link:http://www.softwarefreedom.org/resources/2007/patent-tax.html[include the costs of third-party patent licenses paid by Microsoft in the pricing of the product] as sold to end users. Fedora is not sold commercially, so there is no way to recoup these substantial expenses.

+ 

+ Even if funds were available to do so, such royalty-bearing patent licenses would have to be compatible with the free/open source software licenses governing the software covered by the patent license. In practice this is usually challenging. For example, the most widely-used FOSS licenses (GPL and LGPL) place constraints on the ability of distributors to distribute software under benefit of third-party patent licenses. Even if the software in question is placed under some other license, distributing such software under benefit of a patent license may make the software effectively non-free and thus incompatible with Fedora legal policies.

+ 

+ Note that Fluendo offers an link:https://fedoraproject.org/wiki/Installing_the_Fluendo_MP3_plugin[MP3 plugin] for the Gstreamer multimedia framework (used by Totem, Rhythmbox and other multimedia applications) for free and other codecs and DVD player for a price that includes patent licenses. Fedora does not include or endorse these options but you can choose to use them with Fedora if you want to.

+ 

+ [[there-are-free-and-open-software-implementations-of-the-codecs]]

+ === There are free and open software implementations of the codecs. Why don't you include them?

+ When we speak of an implementation being FOSS, usually we are thinking only in terms of copyright licensing. An independent FOSS implementation of a patent-encumbered codec, however, is subject to at least as much patent risk as, say, some proprietary reference implementation of the same codec. Note that while copyright covers only a particular implementation of software, patents are broader because they are more abstract, covering ideas that might be implemented in software in any number of ways.

+ 

+ [[cant-you-link-to-third-party-repositories-and-guide-users-to-find]]

+ === Can't you link to third party repositories and guide users to find such software?

+ In general, no, because of the risk of liability for link:https://en.wikipedia.org/wiki/Patent_infringement[contributory patent infringement]. Refer link:https://www.redhat.com/archives/fedora-advisory-board/2007-November/msg00050.html[here] for more details.

+ 

+ [[how-is-it-that-some-other-linux-distributions-include-such-software]]

+ === How is it that some other Linux distributions include such software?

+ There are different reasons:

+ 

+ * Some of them include proprietary software, in some cases charging users for their product, where the charge incorporates the cost of licensing third-party patents. Fedora is not a commercial product and has a policy of not distributing proprietary software.

+ * They are willing to deal with the risk somehow. In some cases, it is because they are not backed by a large and profitable company like Red Hat. Red Hat, the legal entity and primary sponsor of the Fedora Project determines its own risks which can be different from other organizations.

+ 

+ [[what-is-bad-about-patented-formats]]

+ === What is bad about patented formats?

+ Even if you are willing to pay for patent licenses, there are other things to consider:

+ 

+ * No guarantee that your consumers actually will be able to read the data you're trying to produce. If you've reached this page, you've already experienced this - by producing media in a patented format, you automatically limit your audience to whatever platforms the patent holder has licensed their software to.

+ * No guarantee of being able to access your data forever. If you're using some software to view a patented media format, what happens if that software vendor goes out of business, or refuses to port their software to newer systems? You no longer have access to your data.

+ 

+ Note that this isn't even restricted to patented media formats - the same applies to popular proprietary formats used for word processing, spreadsheets, presentations, etc.

+ 

+ For more information about how software patents are bad, refer to the link:https://ffii.org/[Foundation for a Free Information Infastructure].

+ 

+ [[cant-you-convert-a-patent-encumbered-code-to-an-open-codec]]

+ === Can't you convert a patent encumbered codec to an open codec?

+ Fedora cannot include the decoders necessary to do this since those are patent encumbered as well. Although users might be able to do this, converting from one format to another typically results in a visible loss of quality. The only long term viable method is to encourage the creation of content in open formats and Fedora and Red Hat actively encourage and participate in such activities.

+ 

+ [[how-fedora-works-against-software-patents]]

+ == How Fedora works against software patents

+ * __Fedora sponsors development of free, non-patent-encumbered open formats__

+ 

+ In support of free culture and the open web, and to reduce the hold of proprietary and patent encumbered codecs, Red Hat has been sponsoring improvements on the open Ogg Theora video codec. For example Red Hat has funded work on the newest implementation, codenamed Thusnelda, via Christopher Montgomery (xiphmont), who created the format. That work has resulted in dramatic improvements to the codec.

+ 

+ * __Fedora uses free, non-patented, open formats by default that anyone can implement, use, and view without having to obtain patent licenses__

+ 

+ Instead of MP3, use Ogg Vorbis. Instead of Windows Media, use WebM or Ogg Theora. Instead of Microsoft Office Open XML, use link:https://en.wikipedia.org/wiki/OpenDocument[Open Document format] documents, or even PDF. Vote with your currency by purchasing hardware and solutions that support these free and open formats.

+ 

+ [[the-problem-with-prorietary-and-patent-encumbered-media-formats]]

+ == The problem with proprietary and patent encumbered media formats

+ Imagine sitting down to your email. Your sister has sent you some pictures of your niece. However, when you go to look at them, all you see is:

+ 

+ __I'm sorry, you need Frobozz Viewer 3.0 to view this file. It's only $19.99, please have your credit card ready.__

+ 

+ Later, you go to view your mail on a public computer at the local library. And you get the same dialog box on their computer.

+ 

+ That is the reality for any sound, image, or document format that is encumbered by software patents that require licensing - any application that wishes to view, play, or create them requires paying the patent holders a fee. Normally, software and hardware vendors include this support, but they pass the costs directly onto the consumers in the cost of their software or hardware. For every copy of Microsoft Windows that you buy, or every DVD player that is sold, a portion of that cost goes directly to pay patent licenses; in fact, for DVD players, it can be over a quarter of the final cost.

+ 

+ And, since that patent license applies to every copy in use, it's one of the reasons why you are not allowed to freely copy and redistribute software such as Microsoft Windows (although, to be sure, even if software patents did not exist, Microsoft would be unlikely to make Windows free software).

+ 

+ Fedora, however, has a link:https://docs.fedoraproject.org/en-US/project/objectives/[public promise] to always be freely redistributable by anyone. That is why Fedora cannot include support for patented media formats - it would break this redistribution promise. This means that, out of the box, you can't directly play media files such as Windows Media, MPEG-4 video, or MP3 audio. Fedora supports open media formats such as WebM or Ogg link:http://www.vorbis.com/[Vorbis] and link:https://www.theora.org/[Theora], which are **freely implementable and usable by anyone without a patent license**.

+ 

+ Red Hat has consistently taken the position that software patents generally impede innovation in software development and that software patents are inconsistent with open source/free software. Red Hat holds a number of software patents for defensive purposes and has a patent policy under which it agrees to refrain from enforcing its patents against any party for exercising rights under certain free and open source software licenses, including GPLv2, GPLv3, LGPLv2.1, and LGPLv3.

+ 

+ * http://www.redhat.com/legal/patent_policy.html

+ 

+ Red Hat explained why software patents are problematic to the European Patent Office.

+ 

+ * http://press.redhat.com/2009/04/30/old-world-and-new-world-software-patent-problems/

+ 

+ Red Hat filed a friend of court briefing to the U.S. Federal Court asking it to limit software patents.

+ 

+ * http://press.redhat.com/2008/04/07/red-hat-asks-federal-court-to-limit-patents-on-software/

+ 

+ The court's ruling has been applied by lower courts and the U.S. Patent and Trademark Office to invalidate some software patents.

+ 

+ * http://press.redhat.com/2008/11/03/bilski-and-software-patents-%E2%80%93-good-news-for-foss/

+ 

+ Red Hat again filed a friend of court briefing to the U.S. Supreme Court as a follow-up on the same case.

+ 

+ * http://press.redhat.com/2009/10/01/asking-the-supreme-court-to-address-the-problem-of-software-patents/

+ 

+ Red Hat also filed a response to U.S. patent and trademark office.

+ 

+ * http://press.redhat.com/2010/09/28/red-hat-responds-to-u-s-patent-and-trademark-office-request-for-guidance-on-bilski/

+ 

+ December 2010, Red Hat filed brief with U.S. Supreme Court opposing expansion of standard for inducing patent infringement.

+ 

+ * http://www.redhat.com/about/news/prarchive/2010/amicus.html

+ 

+ [[references]]

+ == References

+ * http://fedoraproject.org/wiki/Forbidden_items

+ * http://fedoraproject.org/wiki/Foundations

+ * http://playogg.org

+ * http://www.gnu.org/philosophy/why-audio-format-matters.html

+ * http://www.dwheeler.com/essays/software-patents.html

  

- See a typo, something missing or out of date, or anything else which can be

- improved? Edit this document at https://pagure.io/fedora-docs/quick-docs.

+ See a typo, something missing or out of date, or anything else which can be improved? Edit this document at https://pagure.io/fedora-docs/quick-docs. 

\ No newline at end of file

file modified
+225 -195
@@ -1,111 +1,94 @@

  = PostgreSQL

  

- '''

- 

- [IMPORTANT]

- ======

- 

- This page was automatically converted from https://fedoraproject.org/wiki/PostgreSQL

- 

- It is probably

- 

- * Badly formatted

- * Missing graphics and tables that do not convert well from mediawiki

- * Out-of-date

- * In need of other love

- 

- 

- Pull requests accepted at https://pagure.io/fedora-docs/quick-docs

- 

- Once you've fixed this page, remove this notice, and update

- [filename]`modules/ROOT/nav.adoc`.

- 

- Once the document is live, go to the original wiki page and replace its text

- with the following macro:

- 

- ....

- {{#fedoradocs: https://docs.fedoraproject.org/whatever-the-of-this-new-page}}

- ....

- 

- ======

- 

- '''

- 

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  [[installation]]

  == Installation

  

  The installation and initialization of the postgresql server is a little

  bit different in comparison to other packages and other linux distros.

  This document aims to summarize basic installation steps relevant to

- recent fedora release. In first place, you may consider to install newer

- version than is packaged for fedora, see http://yum.postgresql.org/[1].

+ recent fedora release. In the first place, you may consider installing a newer

+ version than is packaged for Fedora, see http://yum.postgresql.org/[1].

  However, this is not recommended.

  

- `$ sudo yum install postgresql-server postgresql-contrib`

+ ....

+ $ sudo yum install postgresql-server postgresql-contrib

+ ....

  

  Or with dnf in Fedora 22 and later versions:

  

- `$ sudo dnf install postgresql-server postgresql-contrib`

+ ....

+ $ sudo dnf install postgresql-server postgresql-contrib

+ ....

  

  The postgresql server is turned off and disabled by default. You can

  enable its start during the boot using following command:

  

- `$ sudo systemctl enable postgresql`

+ ....

+ $ sudo systemctl enable postgresql

+ ....

  

  You can start the postgresql server only when necessary as follows.

  

- `$ sudo systemctl start postgresql` +

- `Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.`

+ ....

+ $ sudo systemctl start postgresql 

+ Job for postgresql.service failed. See 'systemctl status postgresql.service' and 'journalctl -xn' for details.

+ ....

  

  The database needs to be populated with initial data after installation.

- The error log describes problem and its solution.

- 

- `$ journalctl -xn` +

- `-- Logs begin at Mon 2013-11-04 14:38:33 CET, end at Thu 2013-11-14 11:45:56 CET. --` +

- `Nov 14 11:45:34 mlich-lenovo.usersys.redhat.com sudo[2054]: jmlich : TTY=pts/2 ; PWD=/home/jmlich ; USER=root ; COMMAND=/bin/systemctl status postgresql` +

- `Nov 14 11:45:37 mlich-lenovo.usersys.redhat.com sudo[2073]: jmlich : TTY=pts/2 ; PWD=/home/jmlich ; USER=root ; COMMAND=/bin/systemctl status postgresql` +

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com sudo[2105]: jmlich : TTY=pts/2 ; PWD=/home/jmlich ; USER=root ; COMMAND=/bin/systemctl start postgresql` +

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com systemd[1]: Starting PostgreSQL database server...` +

- `-- Subject: Unit postgresql.service has begun with start-up` +

- `-- Defined-By: systemd` +

- `-- Support: `http://lists.freedesktop.org/mailman/listinfo/systemd-devel[`http://lists.freedesktop.org/mailman/listinfo/systemd-devel`] +

- `--` +

- `-- Unit postgresql.service has begun starting up.` +

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: An old version of the database format was found.` +

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: Use "postgresql-setup upgrade" to upgrade to version 9.3.` +

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: See /usr/share/doc/postgresql/README.rpm-dist for more information.` +

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com systemd[1]: postgresql.service: control process exited, code=exited status=1` +

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com systemd[1]: Failed to start PostgreSQL database server.` +

- `-- Subject: Unit postgresql.service has failed` +

- `-- Defined-By: systemd` +

- `-- Support: `http://lists.freedesktop.org/mailman/listinfo/systemd-devel[`http://lists.freedesktop.org/mailman/listinfo/systemd-devel`] +

- `-- Documentation: `http://www.freedesktop.org/wiki/Software/systemd/catalog/be02cf6855d2428ba40df7e9d022f03d[`http://www.freedesktop.org/wiki/Software/systemd/catalog/be02cf6855d2428ba40df7e9d022f03d`] +

- `--` +

- `-- Unit postgresql.service has failed.` +

- `--` +

- `-- The result is failed.`

+ The error log describes the problem and its solution.

+ 

+ ....

+ $ journalctl -xn

+ -- Logs begin at Mon 2013-11-04 14:38:33 CET, end at Thu 2013-11-14 11:45:56 CET. --

+ Nov 14 11:45:34 mlich-lenovo.usersys.redhat.com sudo[2054]: jmlich : TTY=pts/2 ; PWD=/home/jmlich ; USER=root ; COMMAND=/bin/systemctl status postgresql

+ Nov 14 11:45:37 mlich-lenovo.usersys.redhat.com sudo[2073]: jmlich : TTY=pts/2 ; PWD=/home/jmlich ; USER=root ; COMMAND=/bin/systemctl status postgresql

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com sudo[2105]: jmlich : TTY=pts/2 ; PWD=/home/jmlich ; USER=root ; COMMAND=/bin/systemctl start postgresql

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com systemd[1]: Starting PostgreSQL database server...

+ -- Subject: Unit postgresql.service has begun with start-up

+ -- Defined-By: systemd

+ - Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel[http://lists.freedesktop.org/mailman/listinfo/systemd-devel]

+ --

+ -- Unit postgresql.service has begun starting up.

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: An old version of the database format was found.

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: Use "postgresql-setup upgrade" to upgrade to version 9.3.

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: See /usr/share/doc/postgresql/README.rpm-dist for more information.

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com systemd[1]: postgresql.service: control process exited, code=exited status=1

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com systemd[1]: Failed to start PostgreSQL database server.

+ -- Subject: Unit postgresql.service has failed

+ -- Defined-By: systemd

+ -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel[http://lists.freedesktop.org/mailman/listinfo/systemd-devel]

+ -- Documentation: `http://www.freedesktop.org/wiki/Software/systemd/catalog/be02cf6855d2428ba40df7e9d022f03d[`http://www.freedesktop.org/wiki/Software/systemd/catalog/be02cf6855d2428ba40df7e9d022f03d]

+ --

+ -- Unit postgresql.service has failed.

+ --

+ -- The result is failed.

+ ....

  

  The database initialization could be done using following command. It

  creates the configuration files postgresql.conf and pg_hba.conf

  

- `$ sudo postgresql-setup initdb`

+ ....

+ $ sudo postgresql-setup initdb

+ ....

  

  Or on Fedora 22 and later:

  

- `$ sudo postgresql-setup --initdb --unit postgresql`

+ ....

+ $ sudo postgresql-setup --initdb --unit postgresql

+ ....

  

  [[upgrade]]

  == Upgrade

  

- As you can see from error message in my example, it is not a fresh

- installation, but ugprade.

+ As you can see from the error message in my example, it is not a fresh

+ installation, but an ugprade.

  

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: An old version of the database format was found.` +

- `Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: Use "postgresql-setup upgrade" to upgrade to version 9.3.`

+ ....

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: An old version of the database format was found.

+ Nov 14 11:45:56 mlich-lenovo.usersys.redhat.com postgresql-check-db-dir[2108]: Use "postgresql-setup upgrade" to upgrade to version 9.3.

+ ....

  

- With version 9 you can use upgrade tool. It is packaged as

+ With version 9 you can use the upgrade tool. It is packaged as

  `postgresql-upgrade`:

  

  ....
@@ -126,28 +109,32 @@

  * /var/lib/pgsql/data-old

  

  The upgrade itself will backup your existing data and migrate your

- database. Don't forget to migrate your configuration (with meld for

+ database. Don't forget to migrate your configuration (with meld, for

  example: `meld /var/lib/pgsql/data{,-old}/postgresql.conf`).

  

- You may need to switch postgresql to trust mode before update. This

+ You may need to switch postgresql to trust mode before updating. This

  should be fixed already.

  

  You can also upgrade by dumping your database and loading it again. For

- more information, see link:#link-upgrade[official documentation].

+ more information, see the link:#link-upgrade[official documentation].

  

  [[tips-and-tricks]]

  == Tips and tricks

  

- For database management is comfortable to use graphical tools such as

+ For database management, it is more user-friendly to use graphical tools such as

  phpPgAdmin or pgadmin3

  

- `$ sudo yum install phpPgAdmin` +

- `$ sudo yum install pgadmin3`

+ ....

+ $ sudo yum install phpPgAdmin

+ $ sudo yum install pgadmin3

+ ....

  

  Or with dnf in Fedora 22 and later versions:

  

- `$ sudo dnf install phpPgAdmin` +

- `$ sudo dnf install pgadmin3`

+ ....

+ $ sudo dnf install phpPgAdmin

+ $ sudo dnf install pgadmin3

+ ....

  

  [[firewall]]

  == Firewall
@@ -155,14 +142,18 @@

  PostgreSQL operates on port 5432 (or whatever else you set in your

  `postgresql.conf`). In firewalld you can open it like this:

  

- `$ # make it last after reboot` +

- `$ firewall-cmd --permanent --add-port=5432/tcp` +

- `$ # change runtime configuration` +

- `$ firewall-cmd --add-port=5432/tcp`

+ ....

+ $ # make it last after reboot

+ $ firewall-cmd --permanent --add-port=5432/tcp

+ $ # change runtime configuration

+ $ firewall-cmd --add-port=5432/tcp

+ ....

  

- In case of iptables:

+ In the case of iptables:

  

- `$ iptables -A INPUT -p tcp --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT`

+ ....

+ $ iptables -A INPUT -p tcp --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT

+ ....

  

  Bear in mind that you probably don't want to open your database server

  to the whole world.
@@ -171,30 +162,37 @@

  == SELinux

  

  If you have SELinux enforced, you may run into trouble when trying to do

- some non-standard configuration. For example if you would like to change

+ some non-standard configuration. For example, if you would like to change

  a location of your database, you have to add new context mapping for the

  new location:

  

- `$ semanage fcontext -a -t postgresql_db_t "/my/new/location(/.*)?"`

+ ....

+ $ semanage fcontext -a -t postgresql_db_t "/my/new/location(/.*)?"

+ ....

  

- If default port doesn't work for you, you may need to map postgre's port

- type to your desired port:

+ If the default port doesn't work for you, you may need to map postgre's port type to your desired port:

  

- `$ semanage port -a -t postgresql_port_t -p tcp 5433`

+ ....

+ $ semanage port -a -t postgresql_port_t -p tcp 5433

+ ....

  

  If you install a webapp that wants to communicate with PostgreSQL via

  TCP/IP, you will have to tell SELinux to allow this on the webserver

  host:

  

- `# setsebool -P httpd_can_network_connect_db on`

+ ....

+ # setsebool -P httpd_can_network_connect_db on

+ ....

  

  [[user-creation-and-database-creation]]

  == User Creation and Database Creation

  

- Soon you run into need of creating a user (and database for the user).

- First, you have to switch user to interact with postgres:

+ Eventually, you need to create a user (and database for the user).

+ First, you have to switch the user to interact with `postgres`:

  

- `# su - postgres`

+ ....

+ # su - postgres

+ ....

  

  and then run postgre's interactive shell:

  
@@ -206,19 +204,25 @@

  postgres=#

  ....

  

- It might be good idea to add password for `postgres` user:

+ From there you can run user creation commands:

  

- `postgres=# \password postgres`

+ ....

+ postgres=# CREATE USER lenny WITH PASSWORD 'leonard';

+ postgres=# CREATE DATABASE carl OWNER lenny;

+ ....

  

- Lets get back to user creation:

+ You can do this from the system shell as well:

  

- `postgres=# CREATE USER lenny WITH PASSWORD 'leonard';` +

- `postgres=# CREATE DATABASE carl OWNER lenny;`

+ ....

+ $ createuser lenny

+ $ createdb --owner=lenny carl

+ ....

  

- this could be done from system shell too:

+ It might be good idea to add password for the `postgres` user:

  

- `$ createuser lenny` +

- `$ createdb --owner=lenny carl`

+ ....

+ postgres=# \password postgres

+ ....

  

  [[configuration]]

  == Configuration
@@ -232,13 +236,15 @@

  === systemd

  

  Some configuration parameters are passed to daemon via command line

- options. This behaviour may override settings in postgresql.conf. For

+ options. This behaviour may override settings in `postgresql.conf`. For

  example, if you want to change the server's port number to 5433, create

- a file named "/etc/systemd/system/postgresql.service" containing:

+ a file named `/etc/systemd/system/postgresql.service` containing:

  

- `.include /lib/systemd/system/postgresql.service` +

- `[Service]` +

- `Environment=PGPORT=5433`

+ ....

+ .include /lib/systemd/system/postgresql.service

+ [Service]

+ Environment=PGPORT=5433

+ ....

  

  Note: changing PGPORT or PGDATA will typically require adjusting SELinux

  configuration as well; see section selinux.
@@ -252,11 +258,15 @@

  

  If you want postgres to accept network connections, you should change

  

- `listen_addresses = 'localhost'`

+ ....

+ listen_addresses = 'localhost'

+ ....

  

  to

  

- `listen_addresses = '*'`

+ ....

+ listen_addresses = '*'

+ ....

  

  [[pg_hba.conf]]

  === pg_hba.conf
@@ -266,16 +276,18 @@

  `/var/lib/pgsql/data/pg_hba.conf`. There are rules like this in the

  file:

  

- `# TYPE    DATABASE        USER            ADDRESS                 METHOD` +

- `  host    all             all             127.0.0.1/32            md5` +

- `  host    all             all             ::1/128                 md5` +

- `  local   all             postgres                                peer`

+ ....

+ # TYPE    DATABASE        USER            ADDRESS                 METHOD

+   host    all             all             127.0.0.1/32            md5

+   host    all             all             ::1/128                 md5

+   local   all             postgres                                peer

+ ....

  

  First field stands for connection type. It can have these values:

  

  * *local* — Unix-domain socket

  * *host* — plain or SSL-encrypted TCP/IP socket

- * *hostssl* — is an SSL-encrypted TCP/IP socket

+ * *hostssl* — an SSL-encrypted TCP/IP socket

  * *hostnossl* — plain TCP/IP socket

  

  Last column specifies which authentication method will be used.
@@ -288,150 +300,169 @@

  * *peer* — obtains user's name from operating system and checks if it

    matches database user name

  

- When database server is authenticating client, it seeks for a record

- with matching connection type, client address, requested database and

- user name. As soon as it finds it, it performs the authentication. If

- authentication fails, no more subsequent records are taken into account.

- If no record matches, client's access is denied.

+ When the database server is authenticating the client, it seeks for a record with a matching connection type, client address, requested database, and user name. As soon as it finds these credentials, it performs the authentication. If the authentication fails, no more subsequent records are taken into account. If no record matches, the client's access is denied.

  

- The default settings is usually restricted to localhost.

+ The default settings are usually restricted to localhost.

  

  When you install your database server and at first you try to "make it

- work", you should turn off firewall, SELinux and make postgres'

- authentication permissive (bear in mind this will greatly expose your

- server, so do it _only_ on trusted network — preferably without not

- network at all):

+ work", you should turn off firewall, SELinux and make the `postgres`

+ authentication permissive. _Bear in mind this will greatly expose your

+ server, so do it [.underline]#only# on a trusted network — preferably with no network at all_:

  

- `host    all             all             127.0.0.1/32            trust`

+ ....

+ host    all             all             127.0.0.1/32            trust

+ ....

  

- As soon as you are able to connect, turn the security systems on one by

+ As soon as you are able to connect, turn on the security systems one by

  one while verifying the connection can be established.

  

  For more information see official documentation for

  link:#link-pghba[pg_hba.conf file].

  

- [[optimisation]]

- == Optimisation

+ [[optimization]]

+ == Optimization

  

- Default configuration of postgres is severely undertuned. It can handle

- simple application with not so often database access but if you require

- higher performance, you should configure your instance better. All the

- magic is happening in `/var/lib/pgsql/data/postgresql.conf\``. Also

- logging mechanism is configured not very intuitively.

+ The default configuration of postgres is severely undertuned. It can handle simple applications without consistent database access, but if you require higher performance, you should re-configure your instance. All the magic is happening in `/var/lib/pgsql/data/postgresql.conf\``. Also, the logging mechanism is not configured very intuitively.

  

  [[performance]]

  === Performance

  

- Number of clients which may be connected to PostgreSQL at the same time:

+ The number of clients which may be connected to PostgreSQL at the same time:

  

- `max_connections = `

+ ....

+ max_connections = <number>

+ ....

  

  `shared_buffers` is the entry point. This is telling PostgreSQL how much

  memory is dedicated for caching. Setting this to 25% of total memory of

  your system is a good start. If it doesn't work for you, try to go for

  something between 15% - 40% of total memory.

  

- `shared_buffers = `

+ ....

+ shared_buffers = <memory unit>

+ ....

  

- This value is used by query planner to know how much memory is available

- in the system. Query planner uses this information to figure out whether

- plan fits into memory or not. Setting this to 50% of total memory is a

- common practise.

+ This value is used by the query planner to know how much memory is available in the system. The query planner uses this information to figure out whether the plan fits into memory or not. Setting this to 50% of total memory is a common practice.

  

- `effective_cache_size = `

+ ....

+ effective_cache_size = <memory unit>

+ ....

  

- When PostgreSQL performs sorting operations it plans its strategy

+ When PostgreSQL performs sorting operations, it plans its strategy

  whether to sort the query on disk or in memory. Bear in mind that this

  memory is available for every sorting instance. In case of multiple

- users submitting queries to your database server, this can rump up

+ users submitting queries to your database server, this can ramp up

  pretty high. Therefore this is tightly bound to `max_connections`.

  

- `work_mem = `

+ ....

+ work_mem = <memory unit>

+ ....

  

- For more information about this topic I advise you to read official

- link:#link-tuning[documentation about] tuning PostgreSQL.

+ For more information about this topic I advise you to read the

+ link:#link-tuning[official documentation] about tuning PostgreSQL.

  

  [[logging]]

  === Logging

  

- By default, logs are rotated every week and you don't find much

- information in there (one could miss log level, date, time, ...). Also

- for simple web applications I prefer to increase verbosity.

+ By default, logs are rotated every week and you might not find much

+ information in there. One could miss a log level, date, time, etc. Also,

+ for simple web applications, some prefer to increase verbosity.

  

- `log_destination = 'stderr'`

+ ....

+ log_destination = 'stderr'

+ ....

  

  This is just fine. If you would like syslog to take care of your logs,

- change it to `'syslog'`, or even `'syslog,stderr'` (if you go for

+ change `'stderr'` to `'syslog'`, or even `'syslog,stderr'`. If you go for

  syslog, don't forget to configure syslog itself too; for more info, see

- link:#link-logging[official documentation])

+ link:#link-logging[official documentation].

  

- `logging_collector = on`

+ ....

+ logging_collector = on

+ ....

  

- In case of logging to stderr, postgres will grab all the logs if you

- enable `logging_collector` option.

+ In case of logging to `stderr`, `postgres` will grab all the logs if you

+ enable the `logging_collector` option.

  

  This is default option:

  

- `log_filename = 'postgresql-%a.log'`

+ ....

+ log_filename = 'postgresql-%a.log'

+ ....

  

- Much preferred could be to name log files by date when they were

+ A preferred method could be to name log files by date when they were

  created:

  

- `log_filename = 'postgresql-%G-%m.log'`

+ ....

+ log_filename = 'postgresql-%G-%m.log

+ ....

  

- Rotation. This really depends on the app itself. In case of simple app

- with a few data in database, all the logs may be kept persistently on

- disk without rotation.

+ Rotation. This really depends on the app itself. In the case of a simple app with little data in the database, all the logs may be kept persistently on disk without rotation.

  

- `log_truncate_on_rotation = off` +

- `log_rotation_age = 31d`

+ ....

+ log_truncate_on_rotation = off

+ log_rotation_age = 31d

+ ....

  

  Increase number of entries in log:

  

- `client_min_messages = notice      # default notice` +

- `log_min_messages = info           # default warning` +

- `log_min_error_statement = notice  # default error`

+ ....

+ client_min_messages = notice      # default notice

+ log_min_messages = info           # default warning

+ log_min_error_statement = notice  # default error

+ ....

  

  If you would like to log slow queries, feel free to use this option:

  

- `log_min_duration_statement = 1000  # in ms`

+ ....

+ log_min_duration_statement = 1000  # in ms

+ ....

  

- Default log entry doesn't contain much info:

+ The default log entry doesn't contain much info:

  

- `FATAL:  Ident authentication failed for user "test"` +

- `DETAIL:  Connection matched pg_hba.conf line 84: "host    all             all             ::1/128                 ident"`

+ ....

+ FATAL:  Ident authentication failed for user "test"

+ DETAIL:  Connection matched pg_hba.conf line 84: "host    all             all             ::1/128                 ident"

+ ....

  

- Lets improve it to:

+ Let's improve it to:

  

- `2013-12-30 17:51:36 CET testx@::1(50867):postgres [11213] FATAL:  password authentication failed for user "testx"` +

- `2013-12-30 17:51:36 CET testx@::1(50867):postgres [11213] DETAIL:  Connection matched pg_hba.conf line 84: "host   all             all             ::1/128                 md5 "`

+ ....

+ 2013-12-30 17:51:36 CET testx@::1(50867):postgres [11213] FATAL:  password authentication failed for user "testx"

+ 2013-12-30 17:51:36 CET testx@::1(50867):postgres [11213] DETAIL:  Connection matched pg_hba.conf line 84: "host   all             all             ::1/128                 md5 "

+ ....

  

- You just have to alter option `log_line_prefix`.

+ You just have to alter the option `log_line_prefix`.

  

- `# %t -- timestamp` +

- `# %u -- user` +

- `# %r -- client's host` +

- `# %d -- database` +

- `# %p -- PID` +

- `log_line_prefix = '%t %u@%r:%d [%p] '`

+ ....

+ # %t -- timestamp

+ # %u -- user

+ # %r -- client's host

+ # %d -- database

+ # %p -- PID

+ log_line_prefix = '%t %u@%r:%d [%p] '

+ ....

  

- If you are running only single database with single user connecting, it

- would make more sense to simplify the prefix to

+ If you are running only a single database with a single user connecting, it makes more sense to simplify the prefix to

  

- `log_line_prefix = '%t [%p] '`

+ ....

+ log_line_prefix = '%t [%p] '

+ ....

  

  [[final-recipe]]

  ==== Final recipe

  

- `log_destination = 'stderr'` +

- `logging_collector = on` +

- `log_filename = 'postgresql-%G-%m.log'` +

- `log_truncate_on_rotation = off` +

- `log_rotation_age = 31d` +

- `client_min_messages = notice` +

- `log_min_messages = info` +

- `log_min_error_statement = notice` +

- `log_line_prefix = '%t %u@%r:%d [%p] '`

+ ....

+ log_destination = 'stderr'

+ logging_collector = on

+ log_filename = 'postgresql-%G-%m.log'

+ log_truncate_on_rotation = off

+ log_rotation_age = 31d

+ client_min_messages = notice

+ log_min_messages = info

+ log_min_error_statement = notice

+ log_line_prefix = '%t %u@%r:%d [%p] '

+ ....

  

  [[reference]]

  == Reference
@@ -449,7 +480,6 @@

  

  http://www.postgresql.org/docs/8.3/static/auth-pg-hba-conf.html[pg_hba.conf

  file]

- '''

  

  See a typo, something missing or out of date, or anything else which can be

  improved? Edit this document at https://pagure.io/fedora-docs/quick-docs.

@@ -0,0 +1,257 @@

+ include::{partialsdir}/attributes.adoc[]

+ 

+ = How to Publish your Software on Copr, Fedora's User Repository

+ :toc:

+ 

+ This is a short tutorial on how to create and maintain a Copr repository for your software in an automated fashion. It assumes some basic familiarity with Git & how to create a RPM package.

+ 

+ In this guide, we'll

+ 

+ - create a RPM package for a program

+ 

+ - create a Copr repository and publish the program to it

+ 

+ - set up automatic management of program version, package release and package changelog

+ 

+ - set up automatic building of new package versions

+ 

+ The aim is to let you keep your software up-to-date in Copr without ever having to interact with anything other than your software's git repository.

+ 

+ TIP: You can set up similar automation when packaging someone else's program, i.e. building from a downloaded source tarball. The needed modifications are described xref:#_packaging_from_source_tarballs[at the end of the tutorial].

+ 

+ == Prerequisites

+ The following is needed:

+ 

+ . Our program's source in a publicly available git repository somewhere. This tutorial uses a simple example program - hellocopr - to demonstrate the process.

+ The program and all files referenced in this guide can be found in the link:https://pagure.io/copr-tito-quickdoc[project's git repository]. It's a very simple (& pointless) python program with a setuptools installer:

+ +

+ ```

+ user@host ~/copr-tito-quickdoc % ls

+ doc  LICENSE  README.md  requirements.txt  setup.py  src

+ 

+ user@host ~/copr-tito-quickdoc % ls src/hellocopr 

+ colors.py  hellocopr.py  __init__.py

+ ```

+ +

+ . A Fedora (FAS) account in order to be able to create repositories on Copr. This tutorial's demo repository can be found link:https://copr.fedorainfracloud.org/coprs/lcts/hellocopr/[here].

+ 

+ . `tito` installed on your system. link:https://github.com/rpm-software-management/tito[Tito] is capable of a lot of advanced automation for package creation, most of which we won't need here. Check out its documentation to learn more.

+ 

+ . A specfile for our program. For more information on how to create one, refer to xref:creating-rpm-packages.adoc[Creating RPM packages] and xref:create-hello-world-rpm.adoc[How to Create a GNU Hello World RPM Package] or adapt this tutorial's link:https://pagure.io/copr-tito-quickdoc/blob/master/f/doc/hellocopr.spec.annotated[annotated example specfile].

+ 

+ TIP: You can follow along with this tutorial by cloning or forking the repository and checking out the `initial` tag. This will put the repository in the state just before the next step. The repo's commit history matches the steps followed in this tutorial.

+ 

+ == Step 1: Creating the package using tito

+ 

+ Copy link:https://pagure.io/copr-tito-quickdoc/c/00963ac9339a13eefd2ab1ca42b1f72af12d3cac?branch=master[the spec file] into the project's base directory. A few changes should be made before proceeding:

+ 

+ . The values of `Version:` and `Release:` do not matter, since these will be managed by tito. It makes sense to set them to `Version: 0.0.0` and `Release: 0%{?dist}` to mark that this package hasn't been built yet.

+ 

+ . tito will also handle the creation of the source tarball from the git repository, so change the `Source0:` URL to the filename `%{name}-%{version}.tar.gz` & add a comment to tell users how to get the tarball

+ 

+ . The changelog can be left empty.

+ +

+ ```

+ user@host ~/copr-tito-quickdoc % cat hellocopr.spec

+ ...

+ Version: 0.0.0

+ Release: 0%{?dist}

+ ...	

+ # Sources can be obtained by

+ # git clone https://pagure.io/copr-tito-quickdoc

+ # cd copr-tito-quickdoc

+ # tito build --tgz

+ Source0: %{name}-%{version}.tar.gz

+ ...	

+ %changelog

+ ```

+ 

+ Commit the changes.

+ 

+ Next, we initialize the project for use with tito.

+ 

+ ```

+ user@host ~/copr-tito-quickdoc % tito init

+ Creating tito metadata in: ~/copr-tito-quickdoc/.tito

+    - created ~/copr-tito-quickdoc/.tito

+    - wrote tito.props

+    - created ~/copr-tito-quickdoc/.tito/packages

+    - wrote ~/copr-tito-quickdoc/.tito/packages/.readme

+    - committed to git

+ Done!

+ ```

+ 

+ This creates link:https://pagure.io/copr-tito-quickdoc/c/7a6919d3dd56943bb988a755f8233157965aa9bb?branch=master[a subdirectory `.tito` with some default configuration], which can be left unchanged for now.

+ 

+ We can now do a test build of the package using `tito build`. Usually, tito will build from a tag, which we haven't created yet. However, using the `--test` flag, we can build from the most recent commit instead, which will be written to `/tmp/tito`:

+ 

+ ```

+ user@host ~/copr-tito-quickdoc % tito build --rpm --test

+ Creating output directory: /tmp/tito

+ WARNING: unable to lookup latest package tag, building untagged test project

+ WARNING: .tito/packages/hellocopr doesn't exist in git, using current directory

+ Building package [hellocopr-0.0.0-0]

+ Wrote: /tmp/tito/hellocopr-git-11.7a6919d.tar.gz

+ ...

+ 

+ Successfully built: /tmp/tito/hellocopr-0.0.0-0.git.11.7a6919d.fc32.src.rpm

+ 	- /tmp/tito/noarch/hellocopr-0.0.0-0.git.11.7a6919d.fc32.noarch.rpm

+ ``` 

+ 

+ Once we've fixed any issues with the package that might crop up, we can let tito create a package release using `tito tag`. Since we haven't set a proper version yet, we need to pass it to tito for the first tag:

+ 

+ ```

+ user@host ~/copr-tito-quickdoc % tito tag --use-version 1.0.0

+ ```

+ 

+ This will open the editor & display a pre-formatted changelog entry build up from all commits since the last release, which we can edit as needed. Since there have been none so far, the entry will just contain "- new package built with tito". Save the file, link:https://pagure.io/copr-tito-quickdoc/c/f44e81d695df669bcdb7237612baf41b80da98e0?branch=master[and tito will]

+ 

+ . set the Version in the specfile to 1.0.0

+ 

+ . set the Release in the specfile to 1

+ 

+ . append the changelog entry to the specfile's `%changelog` section

+ 

+ . commit the result and tag it with `<name>-<version>-<release>`, i.e. `hellocopr-1.0.0-1`

+ +

+ ```

+ user@host ~/copr-tito-quickdoc % tito tag --use-version 1.0.0

+ Creating output directory: /tmp/tito

+ Tagging new version of hellocopr: untagged -> 1.0.0-1

+ Created tag: hellocopr-1.0.0-1

+    View: git show HEAD

+    Undo: tito tag -u

+    Push: git push --follow-tags origin

+ ```

+ 

+ Push to the commits & tags to the remote using `git push --follow-tags`, and we're ready to release the package on Copr.

+ 

+ == Step 2: Publishing the package in a Copr repository

+ 

+ . Go to https://copr.fedorainfracloud.org/ and log in. Once done, click on _New Project_ to start creating a repository for our program. On the following input mask,

+ 

+ .. Under _1. Project information_ -> _Project name_ set the name to what you want your repo to be called - since this will only contain a single package, it makes sense to use projectname = packagename, i.e. _hellocopr_. This is the only settings that cannot be changed later.

+ 

+ .. Under _2. Build options_ tick all distributions you want to create repositories for - usually all Fedora versions & maybe EPEL versions as well

+ 

+ .. Under _4. Other Options_ make sure that _Follow Fedora branching_ is ticked, this will ensure that your repository will automatically update for new Fedora release.

+ 

+ . Go to _Packages_ -> _New Package_

+ 

+ .. Under _1. Provide the source_, set the package name & the URL of your git repository

+ 

+ .. Under _2. How to build SRPM from the source_ select _tito_

+ 

+ .. Under _3. Generic package setup_ tick the box for _Auto-rebuild_

+   

+ . Your package will appear in the list of packages. Hit _Rebuild_ to trigger a build. The following page lets you change any build options if necessary, we'll just use the defaults, i.e. the options we set in the previous step. Hit _Submit_ and Copr will build the package from the tito tag we created in Step 1.

+ 

+ Once the build has finished, you can test installing the package from Copr by activating your repository.

+ ```

+ user@host ~/copr-tito-quickdoc % sudo dnf copr enable <username>/hellocopr

+ 

+ user@host ~/copr-tito-quickdoc % sudo dnf install hellocopr

+ ```

+ 

+ == Step 3: Automate package (re)-builds

+ 

+ Next, we want to set up Copr to automatically build a new package version whenever we create one, so that we no longer need to log in and trigger one manually. To achieve this, we simply need to trigger a build whenever we push a new tag to the repository.

+ 

+ This requires some configuration both of your Git repository and of the Copr project.

+ 

+ Configuration can be found under _Settings_ -> _Integrations_, the page also explains the steps to configure your git repository for all common Git forges (Pagure, Github, Gitlab & Bitbucket).

+ 

+ Now, to test this, let's make some changes to our program that will come in handy for the final layer of automation and create a new release for our software.

+ 

+ Currently, the example program has its version hardcoded at multiple places. link:https://pagure.io/copr-tito-quickdoc/c/61abf1cdf622d8c9fb4f03eb6b06c4ddc1677362?branch=master[Let's change this] so that the version string is sourced from a single file. Which file this is doesn't matter, but ideally the version variable should be the only thing in it that is likely to change. In this case, we use the previously empty `src/hellocopr/pass:[__]initpass:[__].py`. We name this new version '1.0.1'.

+ 

+ Commit the changes, and create a new release with tito

+ ```

+ user@host ~/copr-tito-quickdoc % tito tag                                  

+ Creating output directory: /tmp/tito

+ Tagging new version of hellocopr: 1.0.0-1 -> 1.0.1-1

+ Created tag: hellocopr-1.0.1-1

+    View: git show HEAD

+    Undo: tito tag -u

+    Push: git push --follow-tags origin

+ ```

+ Note that by ommiting the `--use-version` option, tito now updates the version automatically. It does so by

+ 

+ . Increasing the Version's final digit by 1 - `1.0.0` -> `1.0.1`

+ . Resetting the Release to 1 it it isn't already.

+ 

+ If you want to bump to a different version, say `1.1.0`, you can do so again by passing `--use-version`.

+ 

+ Push the resulting commit & tag, and if you now check your projects page on Copr, you'll see that a new build of `hellocopr-1.0.1-1` has been triggered by our pushing a tag.

+ 

+ == Step 4: Let tito manage the program version

+ 

+ If you check the git log, you'll find that I actually forgot to update hellocopr's version variable to 1.0.1. We don't want that to happen again. Luckily, since we single-source our version, we can let tito automatically generate this file from a template.

+ 

+ First, copy the version source file `src/hellocopr/pass:[__]initpass:[__].py` to `.tito/templates/pass:[__]initpass:[__].py.template`. Then, open the template file and replace the version string with `$version`. It also makes sense to add a note that the file is managed by tito and should not be edited manually.

+ ```

+ user@host ~/copr-tito-quickdoc % cat .tito/templates/__init__.py.template

+ ...

+ # This file is automatically created from a template by tito. Do not edit it manually.

+ 

+ __version__ = '$version'

+ ```

+ 

+ Next, add the following to `.tito/tito.props`

+ ```

+ [version_template]

+ destination_file = src/hellocopr/__init__.py

+ template_file = .tito/templates/__init__.py.template

+ ```

+ https://pagure.io/copr-tito-quickdoc/c/28600f6e41d5a4b60f2e47cf077f2fe2d9224e1d?branch=master[Commit the changes]. Now, when we tag a new release, tito will take the template, replace `$version` with whatever version was tagged, and copy the resulting file to `src/hellocopr/pass:[__]initpass:[__].py` before updating the spec file and commiting the changes.

+ 

+ We can test this by tagging a new release:

+ ```

+ user@host ~/copr-tito-quickdoc % % tito tag

+ Creating output directory: /tmp/tito

+ Tagging new version of hellocopr: 1.0.1-1 -> 1.0.2-1

+ Created tag: hellocopr-1.0.2-1

+    View: git show HEAD

+    Undo: tito tag -u

+    Push: git push --follow-tags origin

+ 

+ user@host ~/copr-tito-quickdoc % cat src/hellocopr/__init__.py

+ ...

+ # This file is automatically created from a template by tito. Do not edit it manually.

+ 

+ __version__ = '1.0.2'

+ ```

+ If you again push the tag to the remote repo, Copr will again automatically trigger a rebuild.

+ 

+ == Release procedure in brief

+ From now on, updating your software in the Copr repository is as simple as

+ 

+ . Commit all changes for your new version.

+ . Perform a test build using `tito build --test`

+ . Tag the release with `tito tag` (add `--use-version` if necessary)

+ . Push the tag to your git repo using `git push --follow-tags`

+ 

+ and Copr will take care of the rest.

+ 

+ == Packaging from source tarballs

+ 

+ You can use a similar process to manage someone elses software on Copr, i.e. build from a tarball downloaded from upstream.

+ 

+ To do so, the following changes need to be made to the procedure described above:

+ 

+ . Instead of the unpacked sources, download & commit the source tarball you want to package to your repository

+ . Instead of modifying the source directly, add any changes you need to make in the form of patch files. List these as `PatchX:` in the spec file

+ . Also in the spec file, set the `Version:` back to whatever version the program is at and `Source0:` back to the tarball URL. You can use macros like `%{version}` for the latter to automatically follow version changes.

+ . Modify tito's `.tito/tito.props` to, one, not try to build a source tarball and two, bump the `Release:` instead of the `Version:` when tagging

+ +

+ ```

+ [buildconfig]

+ builder = tito.builder.NoTgzBuilder

+ tagger = tito.tagger.ReleaseTagger

+ ```

+ +

+ . Don't do any tito templating

+ 

+ The rest of the procedure stays the same. If you make changes to the package without changing the source, you can just tag a new release with tito. If you do update the source tarball, you need to update the `Version:` field and reset `Release:` to `0%{?dist}` before tagging.

+ 

+ TIP: The tarball-adapted version of the project can be found in the `https://pagure.io/copr-tito-quickdoc/tree/foreign-sources[foreign-sources]` branch of the git repo.

file modified
+2 -4
@@ -1,7 +1,5 @@

  = How to use QEMU

  

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  QEMU is a very flexible virtualization technology however it is quite slow and it is recommended that you understand and evaluate alternative solutions before picking this one.

  Refer to https://fedoraproject.org/wiki/Getting_started_with_virtualization[Getting started with virtualization]

  
@@ -66,7 +64,7 @@

  Now let's install the OS. Put in the install CD and type into your konsole (all in one line without break):

  

  ....

- $ qemu -cdrom /dev/cdrom -hda fedora.qcow -boot d -net nic -net user -m 196 -localtime

+ $ qemu -cdrom /dev/cdrom -hda fedora.qcow -boot d -net nic -net user -m 196 -rtc base=localtime

  ....

  

  "-user -net" is important to have internet access within your new system.
@@ -77,7 +75,7 @@

  If that happens: just close the qemu window and type the following command into your konsole to launch your new OS:

  

  ....

- $qemu fedora.qcow -boot c -net nic -net user -m 196 -localtime

+ $qemu fedora.qcow -boot c -net nic -net user -m 196 -rtc base=localtime

  ....

  

  [[testing-iso-images]]

@@ -4,10 +4,9 @@

  

  [id='understanding-and-administering-systemd']

  = Understanding and administering systemd

+ :toc:

  

- include::{partialsdir}/unreviewed-message.adoc[]

- 

- Learn the basic principles of systemd: how to configure it and use to administer the system.

+ Learn the basic principles of the _systemd_ init system: how to configure it and use it to administer the system.

  

  include::{partialsdir}/con_understanding-systemd.adoc[leveloffset=+1]

  
@@ -26,14 +25,14 @@

  include::{partialsdir}/ref_mapping-service-commands.adoc[leveloffset=+1]

  

  

- [discrete]

  == Additional resources

  

  * http://www.freedesktop.org/wiki/Software/systemd[Project homepage]

- * http://0pointer.de/blog/projects/ - Lennart's blog has lots of information about systemd. Lennart is the primary systemd developer

- * http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions

- * http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks

- * https://fedoraproject.org/wiki/Features/systemd[ Features Fedora 15:systemd]

+ * http://0pointer.de/blog/[Lennart Poettering's blog] with lots of information about _systemd_. Lennart is the primary _systemd_ developer

+ * http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions[freedesktop.org's _systemd_ FAQ]

+ * http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks[freedesktop.org's _systemd_ Tips & Tricks]

  * http://fosdem.org/2011/interview/lennart-poettering.html[Interview with the developer]

+ 

  ifdef::parent-context[:context: {parent-context}]

  ifndef::parent-context[:!context:]

+ 

@@ -1,40 +1,7 @@

  = Upgrading Fedora using package manager

  

- '''

- 

- [IMPORTANT]

- ======

- 

- This page was automatically converted from https://fedoraproject.org/wiki/Upgrading_Fedora_using_package_manager

- 

- It is probably

- 

- * Badly formatted

- * Missing graphics and tables that do not convert well from mediawiki

- * Out-of-date

- * In need of other love

- 

- 

- Pull requests accepted at https://pagure.io/fedora-docs/quick-docs

- 

- Once you've fixed this page, remove this notice, and update

- [filename]`modules/ROOT/nav.adoc`.

- 

- Once the document is live, go to the original wiki page and replace its text

- with the following macro:

- 

- ....

- {{#fedoradocs: https://docs.fedoraproject.org/whatever-the-of-this-new-page}}

- ....

- 

- ======

- 

- '''

- 

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  This page contains information explaining how to upgrade Fedora online

- using (without the DNF system upgrade plugin).

+ using `dnf` (without the DNF system upgrade plugin).

  

  [[upgrading-fedora-using-dnf-directly]]

  == Upgrading Fedora using dnf directly
@@ -42,21 +9,21 @@

  [[participate]]

  == Participate

  

- If you are upgrading using Dnf and it shows any general dependency

+ If you are upgrading using link:https://fedoraproject.org/wiki/DNF?rd=Dnf[Dnf] and it shows any general dependency

  issues, please file them in http://bugzilla.redhat.com[Bugzilla]. But

  please read this page, all references pages and search the mailing list

  archives before filing bugs. And of course, please help keep this page

  updated.

  

  If you want to help make live upgrades work smoothly, join the

- link:SIGs/LiveUpgrade[ Live Upgrade Special Interest Group].

+ link:SIGs/LiveUpgrade[Live Upgrade Special Interest Group].

  

  [[upgrading-across-multiple-releases]]

  == Upgrading across multiple releases

  

  If you need to upgrade across several releases, it is generally

  recommended to go one release at a time: for example, rather than going

- directly from to , first go to and then from there to . This tends to

+ directly from Fedora 31 to Fedora 33, first go to Fedora 32 and then to Fedora 33. This tends to

  reduce the number of package dependency issues you may encounter. If you

  are upgrading from an link:End_of_life[End of life] release, please also

  see link:#eol[the end-of-life section].
@@ -78,7 +45,7 @@

  dnf upgrades for specific versions. Some of them require attention

  before the upgrade.

  

- General advice on upgrading Fedora can be found on the Upgrading page.

+ General advice on upgrading Fedora can be found on the link:https://docs.fedoraproject.org/en-US/quick-docs/upgrading/[Upgrading] page.

  You should also read the

  http://docs.fedoraproject.org/install-guide/[Installation Guide] and

  http://docs.fedoraproject.org/release-notes/[Release Notes] for the
@@ -93,9 +60,16 @@

  upgrading. (And if you have selinux enabled then remember to check

  security context if you move config files around.)

  

+ TIP: *Find unused config files* + Merge and resolve the changes found by the following script: `dnf install rpmconf; rpmconf -a`. Now find and remove old config which nobody owns: `rpmconf -c`.

+ 

  Now is a good time to remove packages you don't use - especially

  non-standard packages.

  

+ TIP: *Find and review "unused" packages* + You can find packages not required by other packages with the tool `package-cleanup` from the `yum-utils` package: `dnf install yum-utils; package-cleanup --leaves`. These packages could be candidates for removal, but check to see whether you use them directly or if they are used by applications not backed by rpm packages. Remove them with `dnf remove package-name-and-version`.

+ Another useful tool for cleaning up unused packages is `rpmreaper`. It's an ncurses application that lets you view rpm dependency graph and mark packages for deletion. Marking one package can make other packages leaf, which you can see immediately, so you don't have to run the tool several times to get rid of a whole sub-tree unused packages. Install with `dnf install rpmreaper`.

+ 

+ TIP: *Find and review "lost" packages* + You can find orphaned packages (i.e. packages not in the repositories anymore) with `package-cleanup --orphans`. This will also show packages which have been partially uninstalled but where the "%postun" script failed.

+ 

  [[do-the-upgrade]]

  === 4. Do the upgrade

  
@@ -124,7 +98,7 @@

  $ sudo fedora-upgrade

  ....

  

- When performing upgrade via remote shell, it is good idea to use screen

+ When performing upgrade via remote shell, it is a good idea to use screen

  or tmux utility to be able to get back to running transaction in case

  your connection drops.

  
@@ -180,8 +154,8 @@

   # rpm --import (url)

  ....

  

- to install the key. On old releases, may have trouble doing this; if

- that happens, download the file with or and import the downloaded file.

+ to install the key. On old releases, `rpm` may have trouble doing this; if

+ that happens, download the file with `curl -o` or `wget` and import the downloaded file.

  

  [[clean-the-cache]]

  ==== Clean the cache
@@ -196,17 +170,28 @@

  [[upgrade-all-packages]]

  ==== Upgrade all packages

  

+ CAUTION: *Never upgrade on battery power* + Never run the upgrade operation on battery power! Always connect to the mains, if using a laptop. However, if your system does have a battery, it's a good idea to ensure it's charged and connected in case of a power outage during the upgrade.

+ 

+ CAUTION: *Do not interrupt an upgrade for any reason* + Once a live upgrade is started, do not stop the upgrade by rebooting, killing the process, or by any other method until it is complete. Interrupting an upgrade will cause the affected system to be in a mixed state -- partially the old release and partially the new release. In this state, the system will not be reliable and will not operate as expected. You can try running `dnf distro-sync` and `package-cleanup --problems` to try and fix the problems.

+ 

  Run the upgrade command:

  

  ....

  # dnf --releasever=<target_release_number> --setopt=deltarpm=false distro-sync

  ....

  

+ NOTE: *Dependency issues* + If you experience any dependency problems, you have to solve them manually. These are often caused by packages being retired in the newer release, but not properly obsoleted. Often it is enough to remove several problematic package(s).

+ You may find that a package you care about depends on a package that must be removed for the upgrade to proceed. Usually you will be able to reinstall the important package once the upgrade is complete.

+ 

+ If it seems like you must remove a package with many dependencies, especially ones that look important, please be careful. If you are attempting to upgrade across multiple releases, try a smaller jump to see if that avoids the problem.

+ 

+ If you are at all unsure in any way, ask for help on a mailing list, forum or IRC before removing packages.

+ 

  [[make-sure-fedora-is-upgraded]]

  === 5. Make sure Fedora is upgraded

  

  Distro-sync will usually take care of upgrades for the third party

- repositories you have enabled as well. Confirm with after the upgrade

+ repositories you have enabled as well. Confirm with `dnf repolist` after the upgrade

  process is over. `dnf` might complain about conflicts or requirements.

  That is probably because you have used non-standard repositories or

  installed non-standard packages manually. Try to guess which packages
@@ -246,10 +231,10 @@

  /usr/sbin/grub2-install BOOTDEVICE

  ....

  

- - where BOOTDEVICE is often , or for some virtual machine installs. If

+ - where BOOTDEVICE is often `/dev/sda` or `/dev/vda` for some virtual machine installs. If

    you have more than one hard disk, make sure you use the correct device!

  

- If you get an error (e.g. ) from that, then try ).

+ If you get an error (e.g. `/dev/sda does not have any corresponding BIOS drive`) from that, then try `/usr/sbin/grub2-install --recheck BOOTDEVICE`.

  

  It might also be necessary to update the grub config file:

  
@@ -302,13 +287,29 @@

  # touch /.autorelabel

  ....

  

- [[fedora-25]]

- === Fedora 25

+ [[fedora-31]]

+ === Fedora 31

+ Before running

+ 

+ ....

+ dnf distro-sync

+ ....

+ 

+ you must run

+ 

+ ....

+ dnf module reset libgit2 exa bat

+ ....

+ 

+ See link:https://bugzilla.redhat.com/show_bug.cgi?id=1747408[Bug 1747408].

+ 

+ [[fedora-30]]

+ === Fedora 30

  

  No special instructions. Follow the above instructions.

  

- [[fedora-24]]

- === Fedora 24

+ [[fedora-29]]

+ === Fedora 29

  

  No special instructions. Follow the above instructions.

  

@@ -26,7 +26,7 @@

  It will download the upgrade files, then prompt for a reboot to install them, similar to a system update.

  When the upgrade is complete, the system will automatically reboot into the new release.

  

- image:Upgradef24f25-gs.png[Upgradef24f25-gs.png,title="Upgradef24f25-gs.png",width=640]

+ image:Upgradef31f32-gs.png[Upgradef31f32-gs.png,title="Release Upgrade Gnome Software",width=640]

  

  [[sect-upgrading-using-the-dnf-system-upgrade-plugin]]

  == Upgrading using the DNF System Upgrade plugin
@@ -63,14 +63,12 @@

  

  Upgrading between Fedora releases without the xref:dnf-system-upgrade.adoc[DNF System Upgrade Plugin] or Gnome Software are not tested by the Fedora QA team, and are therefore not supported by the community.

  

- [[sect-can-i-update-from-a-pre-release-alpha-beta-or-other-development-snapshot-to-the-final-release]]

- == Can I update from a pre-release (Alpha, Beta, or other development snapshot) to the final release?

- 

- If you are using a pre-release of Fedora, and want to know more about upgrading to the final release, refer to the

- link:++https://fedoraproject.org/wiki/Upgrading_from_pre-release_to_final++[Upgrading from pre-release to final] page.

- This is technically not an 'upgrade' operation, but an update.

- There are some special considerations involved in making sure you stay on the update track you intend to use, which are documented on that page.

- 

+ [[sect-upgrade-from-prerelease-to-final-release]]

+ == Upgrading from pre-release (beta) to final public release (stable)

+ 	

+ If you are using a pre-release of Fedora, you shouldn't need to do anything to get the final public release, other than updating packages as they become available. You can use `sudo dnf update` or wait for desktop notification. When the pre-release is released as final, the `fedora-release*` packages will be updated and your `fedora-updates-testing` repository will be disabled.

+ If dnf is complaining about mismatched package versions even though your updates-testing repo is disabled, it is recommended to run `sudo dnf distro-sync` in order to align package versions with the current release.

+ 	

  [[sect-how-do-i-upgrade-to-rawhide-and-branched]]

  == How do I upgrade to Rawhide and Branched?

  

@@ -5,8 +5,6 @@

  

  include::{partialsdir}/3rdparty-message.adoc[]

  

- include::{partialsdir}/unreviewed-message.adoc[]

- 

  include::{partialsdir}/con_what_is_adobe_flash.adoc[leveloffset=+1]

  

  include::{partialsdir}/proc_checking_fedora_version.adoc[leveloffset=+1]

@@ -95,6 +95,7 @@

  

  [cols=",",]

  |=================

+ |Fedora 33(pre-release) |5.16

  |Fedora 29 |4.5

  |Fedora 28 |3.4

  |Fedora 27 |3.4

@@ -0,0 +1,30 @@

+ = Installing Zoom on Fedora

+  

+ == Description

+ https://www.zoom.us[Zoom Video Communications]. Inc. is an American communications technology company headquartered in San Jose, California.

+ It provides videotelephony and online chat services through a cloud-based peer-to-peer software platform and is used for teleconferencing, telecommuting, distance education, and social relations.

+ 

+ == How to Setup

+ 

+ In Fedora one can setup zoom using the following steps

+ 

+ === Using a graphical installer (Fedora only)

+ 

+ If you're using Fedora Workstation Edition, you can install Zoom using the GNOME application center.

+ 

+ * Download the RPM installer file at our https://zoom.us/download?os=linux[Download Center].

+ * Open the download location using a file manager.

+ * Double click the RPM installer file to open it in the GNOME application center.

+ * Click Install.

+ * Enter your admin password and continue the installation when prompted.

+ 

+ 

+ === Using the Terminal 

+ 

+ * Open Terminal and navigate to ~/Downloads

+ * Download the RPM installer file at our https://zoom.us/download?os=linux[Download Center].

+ * Type in the following command and press Enter to run it. 

+ --------------------------------

+ sudo dnf install zoom_x86_64.rpm 

+ --------------------------------

+ * Enter your admin password and continue the installation when prompted.

file modified
+3 -3
@@ -1,13 +1,13 @@

  #!/bin/sh

  

- if [ "$(uname)" == "Darwin" ]; then

+ if [ "$(uname)" = "Darwin" ]; then

      # Running on macOS.

      # Let's assume that the user has the Docker CE installed

      # which doesn't require a root password.

      echo "The preview will be available at http://localhost:8080/"

-     docker run --rm -v $(pwd):/antora:ro -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx

+     docker run --rm -v "$(pwd):/antora:ro" -v "$(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro" -p 8080:80 nginx

  

- elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then

+ elif [ "$(expr substr "$(uname -s)" 1 5)" = "Linux" ]; then

      # Running on Linux.

      # Fedora Workstation has python3 installed as a default, so using that

      echo ""

This takes the work done in #171 and then adds the remaining bits. It makes some cosmetic changes and removes unneeded information from the page.

@ladnech @pbokoc : could you have a quick look at this when you have a minute please?

Metadata Update from @ankursinha:
- Pull-request tagged with: needs committer review

3 years ago

@t0xic0der : got time for this one too by any chance? (This one has more changes, though)

Got it. Assign it to me.

I am kind of working towards bringing this to perfection but I think I can manage this in my free time.

Metadata Update from @ankursinha:
- Request assigned

3 years ago

Notes:

  • "of a service" -> "of service"
  • "can not" -> "cannot"
  • "you should not use automatic updates" -> "automatic updates should not be used"

yum is an acronym for Yellowdog Updater Modified so I guess it should be in all caps. I may be wrong.

Yum or yum or YUM? Consistent use is suggested.

"than if they updates are done manually" = "than if the updates are done manually"

"latest updates where installed" -> "latest updates were installed"

Maybe change it to, "While you should still be cautious with any automatic update solution on production systems, it is definitely worth considering in some situations."

Suggested to change to "On a fresh install of Fedora 22 or later, the dnf-automatic package is not installed by default.

Change it to "The first command below installs this package"

Change it to "As of Fedora 26, there are now three timers that can be enabled to control dnf-automatic."

Change it to "Usually, you can monitor availability of updates automatically by email after modifying dnf-automatic configuration file"

Notes

  • "times that no one" -> "times when no one"
  • "be best" -> "be the best"

Change it to "This can leave the user feeling that they are secure when they are not."

Notes

  • Lots of "one"s in this sentence alone.
  • Change it to "One of the abilities of a good system administrator is to be able to evaluate the facts and other people's suggestions, and then decide for themselves what they should do."

Sorry, this is on my list, not found time to complete it yet. Will do so in the next few weeks, hopefully.

rebased onto 2d40c00

3 years ago

I've merged master into the branch to work on this, but now the diff doesn't look right here on pagure. I'll make the changes and open a new PR so it's easier to review. Working on this now.

1 new commit added

  • Improve autoupdates pages
3 years ago

Updated, but I'll open a new PR---this one shows lots of unrelated commits and changes.

Pull-Request has been closed by ankursinha

3 years ago

Umm. This PR was closed prematurely. Were the changes dropped?

Changes Summary 55
+6 -6
file changed
build.sh
-0
file removed
modules/ROOT/assets/images/Upgradef24f25-gs.png
+0
file added
modules/ROOT/assets/images/Upgradef31f32-gs.png
+12 -8
file changed
modules/ROOT/nav.adoc
+3 -3
file changed
modules/ROOT/pages/_partials/attributes.adoc
+1 -1
file changed
modules/ROOT/pages/_partials/con_rpm_packaging_overview.adoc
+7 -7
file changed
modules/ROOT/pages/_partials/con_understanding-systemd.adoc
+2 -0
file changed
modules/ROOT/pages/_partials/concept_fedora-virtio-drivers-vs-rhel.adoc
-81
file removed
modules/ROOT/pages/_partials/proc_adding-new-fonts-as-superuser.adoc
-71
file removed
modules/ROOT/pages/_partials/proc_adding-new-fonts-as-user.adoc
+20 -12
file changed
modules/ROOT/pages/_partials/proc_changing-to-enforcing-mode.adoc
+8 -4
file changed
modules/ROOT/pages/_partials/proc_changing-to-permissive-mode.adoc
+13 -10
file changed
modules/ROOT/pages/_partials/proc_converting-sysvinit-services.adoc
+2 -4
file changed
modules/ROOT/pages/_partials/proc_creating-and-using-live-cd.adoc
+19 -9
file changed
modules/ROOT/pages/_partials/proc_creating-new-systemd-services.adoc
+30 -17
file changed
modules/ROOT/pages/_partials/proc_disabling-selinux.adoc
+50 -6
file changed
modules/ROOT/pages/_partials/proc_enabling-selinux.adoc
+37 -7
file changed
modules/ROOT/pages/_partials/proc_installing-openjdk.adoc
+1 -19
file changed
modules/ROOT/pages/_partials/proc_installing-oracle-java.adoc
+22 -13
file changed
modules/ROOT/pages/_partials/proc_modifying-existing-systemd-services.adoc
+11 -8
file changed
modules/ROOT/pages/_partials/proc_starting-stopping-and-querying-systemd-services.adoc
+17
file added
modules/ROOT/pages/_partials/proc_switching-between-java-versions.adoc
+10 -10
file changed
modules/ROOT/pages/_partials/ref_common-service-parameters.adoc
+2 -2
file changed
modules/ROOT/pages/_partials/ref_jdk-tools.adoc
+4 -4
file changed
modules/ROOT/pages/_partials/ref_mapping-runlevel-to-targets.adoc
+4 -4
file changed
modules/ROOT/pages/_partials/ref_mapping-service-commands.adoc
-16
file removed
modules/ROOT/pages/adding-new-fonts-fedora.adoc
+51 -125
file changed
modules/ROOT/pages/autoupdates.adoc
+0 -2
file changed
modules/ROOT/pages/configuring-ip-networking-with-nmcli.adoc
+61
file added
modules/ROOT/pages/contribute-to-quick-docs.adoc
+2 -2
file changed
modules/ROOT/pages/create-hello-world-rpm.adoc
+67 -100
file changed
modules/ROOT/pages/debug-dracut-problems.adoc
+3 -3
file changed
modules/ROOT/pages/dnf-system-upgrade.adoc
+74
file added
modules/ROOT/pages/dnf-vs-apt.adoc
+0 -2
file changed
modules/ROOT/pages/firewalld.adoc
+141
file added
modules/ROOT/pages/fonts.adoc
+1 -6
file changed
modules/ROOT/pages/gnome-shell-extensions.adoc
+37 -26
file changed
modules/ROOT/pages/how-to-set-nvidia-as-primary-gpu-on-optimus-based-laptops.adoc
+3 -0
file changed
modules/ROOT/pages/howto-file-a-bug.adoc
+2 -58
file changed
modules/ROOT/pages/index.adoc
+2 -1
file changed
modules/ROOT/pages/installing-java.adoc
+1 -24
file changed
modules/ROOT/pages/installing-spotify.adoc
+17 -46
file changed
modules/ROOT/pages/openh264.adoc
+0 -33
file changed
modules/ROOT/pages/package-management.adoc
+117 -39
file changed
modules/ROOT/pages/packagekit-not-found.adoc
+225 -195
file changed
modules/ROOT/pages/postgresql.adoc
+257
file added
modules/ROOT/pages/publish-rpm-on-copr.adoc
+2 -4
file changed
modules/ROOT/pages/qemu.adoc
+7 -8
file changed
modules/ROOT/pages/understanding-and-administering-systemd.adoc
+49 -48
file changed
modules/ROOT/pages/upgrading-fedora-online.adoc
+7 -9
file changed
modules/ROOT/pages/upgrading.adoc
+0 -2
file changed
modules/ROOT/pages/using-adobe-flash.adoc
+1 -0
file changed
modules/ROOT/pages/wine.adoc
+30
file added
modules/ROOT/pages/zoom.adoc
+3 -3
file changed
preview.sh