https://wiki.archlinux.org/api.php?action=feedcontributions&user=Electric26&feedformat=atomArchWiki - User contributions [en]2024-03-28T12:13:32ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=LightDM&diff=625383LightDM2020-07-15T19:41:59Z<p>Electric26: add hyperlink to XDMCP page for easier navigation</p>
<hr />
<div>[[Category:Display managers]]<br />
[[Category:Canonical]]<br />
[[es:LightDM]]<br />
[[fr:LightDM]]<br />
[[ja:LightDM]]<br />
[[ru:LightDM]]<br />
[[zh-hans:LightDM]]<br />
{{Related articles start}}<br />
{{Related|Display manager}}<br />
{{Related|GDM}}<br />
{{Related|LXDM}}<br />
{{Related articles end}}<br />
<br />
[https://github.com/canonical/lightdm LightDM] is a cross-desktop [[display manager]]. Its key features are:<br />
* Cross-desktop - supports different desktop technologies.<br />
* Supports different display technologies (X, Mir, Wayland ...).<br />
* Lightweight - low memory usage and high performance.<br />
* Supports guest sessions.<br />
* Supports remote login (incoming - [[XDMCP]], VNC, outgoing - XDMCP, pluggable).<br />
* Comprehensive test suite.<br />
* Low code complexity.<br />
<br />
More details about LightDM's design can be found [http://www.freedesktop.org/wiki/Software/LightDM/Design here].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|lightdm}} package.<br />
{{Tip|Stable releases are even-numbered (1.8, 1.10) while development releases are odd-numbered (1.9, 1.11). These development releases are available with {{AUR|lightdm-devel}}. Also available is {{AUR|lightdm-git}}.}}<br />
<br />
=== Greeter===<br />
<br />
You will probably want to install a greeter. A greeter is a GUI that prompts the user for credentials, lets the user select a session, and so on. It is possible to use LightDM without a greeter, but only if an automatic login is configured; otherwise you will need to install {{pkg|xorg-server}} and one of the greeter packages below.<br />
<br />
The official repositories contain the following greeters:<br />
* {{Pkg|lightdm-gtk-greeter}}: this is the '''default''' greeter LightDM attempts to use when started unless configured to do otherwise.<br />
* lightdm-deepin-greeter ({{Pkg|deepin-session-ui}}): A greeter from the [[Deepin]] project.<br />
* {{Pkg|lightdm-pantheon-greeter}}: A greeter from the elementary OS project.<br />
* {{Pkg|lightdm-webkit2-greeter}}: A greeter that uses Webkit2 for theming. It supersedes {{AUR|lightdm-webkit-greeter}}.<br />
* {{Pkg|lightdm-webkit-theme-litarvan}}: A modern and full-featured Webkit2 LightDM theme.<br />
<br />
Other alternative greeters are available in the [[AUR]]:<br />
* {{AUR|lightdm-slick-greeter}}: A GTK based greeter focused more on appearance than {{Pkg|lightdm-gtk-greeter}}, forked from {{AUR|lightdm-unity-greeter}}, and default in Linux Mint.<br />
* {{AUR|lightdm-unity-greeter}}: The greeter used by Unity.<br />
* {{AUR|lightdm-mini-greeter}}: A minimal, configurable, single-user greeter.<br />
* {{AUR|lightdm-webkit-theme-aether}}: A sleek, straightforward Archlinux themed login screen written on lightdm and the lightdm-webkit2-greeter.<br />
<br />
You can set the default greeter by changing the {{ic|[Seat:*]}} section of the LightDM configuration file, like so:<br />
<br />
{{hc|/etc/lightdm/lightdm.conf|2=<br />
[Seat:*]<br />
...<br />
greeter-session=lightdm-''yourgreeter''-greeter<br />
...<br />
}}<br />
<br />
One way to check which greeters are available is to list the files in the {{ic|/usr/share/xgreeters}} directory; each ''.desktop'' file represents an available greeter. In this example, the {{ic|lightdm-gtk-greeter}} and {{ic|lightdm-kde-greeter}} greeters are available:<br />
$ ls -1 /usr/share/xgreeters/<br />
lightdm-gtk-greeter.desktop<br />
lightdm-kde-greeter.desktop<br />
<br />
== Enabling LightDM ==<br />
<br />
Make sure to [[enable]] {{ic|lightdm.service}} so LightDM will be started at boot; see also [[Display manager#Loading the display manager]].<br />
<br />
== Command line tool ==<br />
<br />
LightDM offers a command line tool, {{ic|dm-tool}}, which can be used to lock the current seat, switch sessions, etc, which is useful with 'minimalist' window managers and for testing. To see a list of available commands, execute:<br />
$ dm-tool --help<br />
<br />
=== User switching ===<br />
<br />
{{Accuracy|Is this warning inappropriate? {{ic|dm-tool lock}} and {{ic|dm-tool switch-to-greeter}} are NOT screen lockers. They only switch to the LightDM greeter and send a notification to lock the session (as {{ic|loginctl lock-session}}). This notification should be processed by a screen locker or redirected by ''xss-lock''. In the absence of a screen locker to listen, there is nothing {{ic|dm-tool ...}} can do - but that's not LightDM's fault. This issue is well known and touched upon [[List_of_applications#Screen_lockers|here]] and [[XScreenSaver#Lock_on_suspend|here]].}}<br />
<br />
{{Warning|1=The use of lightDM's built-in screen lockers like {{ic|dm-tool lock}} or {{ic|dm-tool switch-to-greeter}} are [https://bbs.archlinux.org/viewtopic.php?pid=1712213#p1712213 '''not''' recommended]. Use [[#Lock the screen using light-locker|light-locker]] or something from [[List of applications/Security#Screen lockers]].}}<br />
<br />
LightDM's ''dm-tool'' command can be used to allow multiple users to be logged in on separate ttys. The following will send a signal requesting that the current session be locked and then will initiate a switch to LightDM's greeter, allowing a new user to log in to the system.<br />
<br />
$ dm-tool switch-to-greeter<br />
<br />
== Testing ==<br />
<br />
First, [[install]] {{Pkg|xorg-server-xephyr}} from the [[official repositories]].<br />
<br />
Then, run LightDM as an X application:<br />
$ lightdm --test-mode --debug<br />
<br />
== Optional configuration and tweaks ==<br />
<br />
LightDM can be configured by modifying its config file, {{ic|/etc/lightdm/lightdm.conf}}.<br />
<br />
Some greeters have their own configuration files. For example:<br />
<br />
{{Pkg|lightdm-gtk-greeter}}: {{ic|/etc/lightdm/lightdm-gtk-greeter.conf}} (or you can use the {{Pkg|lightdm-gtk-greeter-settings}} gui).<br />
<br />
{{Pkg|lightdm-webkit2-greeter}}: {{ic|/etc/lightdm/lightdm-webkit2-greeter.conf}}<br />
<br />
=== X session wrapper ===<br />
<br />
{{Merge|Xprofile|Duplicated information}}<br />
<br />
If you are migrating from [[xinit]], you will notice that the display is not launched by your shell. This is because, as opposed to your shell starting the display (and the display inheriting the environment of your shell), LightDM starts your display and does not source your shell. LightDM launches the display by running a wrapper script and that finally exec's your graphic environment. By default, {{ic|/etc/lightdm/Xsession}} is run.<br />
<br />
==== Environment variables ====<br />
<br />
The script checks and sources {{ic|/etc/profile}}, {{ic|~/.profile}}, {{ic|/etc/xprofile}} and {{ic|~/.xprofile}}, in that order. If you are using a shell that does not source any of these files, you can create an {{ic|~/.xprofile}} to do so. (In this example, the login shell is [[zsh]])<br />
<br />
{{hc|~/.xprofile|2=<br />
#!/bin/sh<br />
<nowiki>[[ -f ~/.config/zsh/.zshenv ]] && source ~/.config/zsh/.zshenv</nowiki><br />
}}<br />
<br />
If you have shell variables that are important for your display (such as Gtk or QT themes, GNUPG location, config overrides, etc.) this will let your graphic environment have access to your environment without having to be launched by your login shell.<br />
<br />
==== Keymap ====<br />
<br />
The script runs [[Xkbmap]] with arguments provided in files {{ic|/etc/X11/Xkbmap}}, {{ic|~/.Xkbmap}}. If those files are not found, it runs [[xmodmap]] with {{ic|/etc/X11/Xmodmap}}, {{ic|~/.Xmodmap}}. If using xkbmap, the files are parsed using cat. The following example works<br />
<br />
{{hc|~/.Xmodmap|2=<br />
-model pc105 -layout us,us,tr -variant ,dvorak,f -option grp:caps_toggle<br />
}}<br />
<br />
Otherwise, the session inherits the system default mapping of X11. This mapping can be defined in the xorg configuration files, either manually or with {{ic|localectl set-x11-keymap}}. See [[Xorg/Keyboard configuration#Setting keyboard layout]].<br />
<br />
=== Changing background images/colors ===<br />
<br />
You can set the background to a hex color or an image. Some greeters offer more robust background options like background selection from the login screen, random backgrounds, etc.<br />
<br />
==== GTK greeter ====<br />
<br />
You can use the {{Pkg|lightdm-gtk-greeter-settings}} gui.<br />
<br />
Users wishing to customize the wallpaper on the greeter screen need to edit {{ic|/etc/lightdm/lightdm-gtk-greeter.conf}} and define the {{ic|background}} variable under the {{ic|[greeter]}} section. For example:<br />
{{hc|/etc/lightdm/lightdm-gtk-greeter.conf|2=<br />
[greeter]<br />
background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg<br />
}}<br />
<br />
{{Note|It is recommended to place the PNG or JPG file in {{ic|/usr/share/pixmaps}} since the LightDM user needs read access to the wallpaper file.}}<br />
<br />
===== GTK3 Theme =====<br />
GTK3 themes can be specified with the {{ic|theme-name}} variable in the {{ic|[greeter]}} section of {{ic|/etc/lightdm/lightdm-gtk-greeter.conf}} For example, {{ic|1=theme-name=Adwaita-dark}}.<br />
<br />
==== Webkit2 greeter ====<br />
<br />
The {{Pkg|lightdm-webkit2-greeter}} allows you to choose a background image directly on the login screen. It also offers an option to display a random image each time it starts if you use the [https://github.com/artur9010/lightdm-webkit-material Material theme]. By default, images are sourced from {{ic|/usr/share/backgrounds}}. You can change the background images directory by editing {{ic|lightdm-webkit2-greeter.conf}}. For example:<br />
{{hc|/etc/lightdm/lightdm-webkit2-greeter.conf|2=<br />
[branding]<br />
background_images = /usr/share/backgrounds<br />
}}<br />
<br />
{{Note|The background images directory must be accessible to the LightDM user so it should not be located anywhere under {{ic|/home}}. }}<br />
<br />
==== Unity greeter ====<br />
<br />
Users using the {{AUR|lightdm-unity-greeter}} must edit the {{ic|/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml}} file and then execute:<br />
# glib-compile-schemas /usr/share/glib-2.0/schemas/<br />
<br />
According to [https://bbs.archlinux.org/viewtopic.php?id=149945 this] page.<br />
<br />
==== KDE greeter ====<br />
<br />
Go to ''System Settings > Login Screen (LightDM)'' and change the background image for your theme.<br />
<br />
Alternatively, you can edit the {{ic|Background}} variable in {{ic|lightdm-kde-greeter.conf}} :<br />
<br />
{{hc|/etc/lightdm/lightdm-kde-greeter.conf|2=<br />
[greeter]<br />
theme-name=classic<br />
<br />
[greeter-settings]<br />
Background=/usr/share/archlinux/wallpaper/archlinux-underground.jpg<br />
BackgroundKeepAspectRatio=true<br />
GreetMessage=Welcome to %hostname%<br />
}}<br />
<br />
==== Slick Greeter ====<br />
<br />
Use the {{AUR|lightdm-settings}} GUI <br />
<br />
=== Changing your avatar ===<br />
<br />
{{Tip|If you are using KDE, you can change your avatar in KDE System Settings.}}<br />
<br />
First, make sure the {{Pkg|accountsservice}} package from the [[official repositories]] is installed, then set it up as follows, replacing {{ic|''username''}} with the desired user's login name.<br />
<br />
* Create the file {{ic|/var/lib/AccountsService/icons/''username''.png}} using a 96x96 PNG image file. Different image file formats are possible too, e.g., JPEG.<br />
* Alternatively, create the image file as {{ic|/home/''username''/.face}} and skip the next step if the defaults already point to the user home directory path<br />
* Edit or create the account settings file {{ic|/var/lib/AccountsService/users/''username''}}, and add the lines<br />
<br />
[User]<br />
Icon=/var/lib/AccountsService/icons/''username''.png<br />
<br />
The filename here should point to the icon created in the first step, so adjust the filename extension if necessary.<br />
<br />
{{Note|Make sure that both created files have 644 permissions, use [[chmod]] to correct them.}}<br />
<br />
=== Sources of Arch-centric 64x64 icons ===<br />
<br />
The {{AUR|archlinux-artwork}} package contains some nice examples that install to {{ic|/usr/share/archlinux/icons}} and that can be copied to {{ic|/usr/share/icons/hicolor/64x64/devices}} as follows:<br />
<br />
# find /usr/share/archlinux/icons -name "*64*" -exec cp {} /usr/share/icons/hicolor/64x64/devices \;<br />
<br />
After copying, the {{AUR|archlinux-artwork}} package can be removed.<br />
<br />
=== Enabling autologin ===<br />
<br />
Edit the LightDM configuration file and ensure these lines are uncommented and correctly configured:<br />
<br />
{{hc|/etc/lightdm/lightdm.conf|2=<br />
[Seat:*]<br />
autologin-user=''username''<br />
}}<br />
<br />
You must be part of the {{ic|autologin}} group to be able to login automatically without entering your password:<br />
<br />
# groupadd -r autologin<br />
# gpasswd -a ''username'' autologin<br />
<br />
LightDM logs in using the session specified in the {{ic|~/.dmrc}} of the user getting logged in automatically. To override this file, specify {{ic|autologin-session}} in {{ic|lightdm.conf}}:<br />
<br />
{{hc|/etc/lightdm/lightdm.conf|2=<br />
[Seat:*]<br />
autologin-user=''username''<br />
autologin-session=''session''<br />
}}<br />
<br />
The list of valid session names can be found by listing {{ic|/usr/share/xsessions/*.desktop}} for X's sessions and {{ic|/usr/share/wayland-sessions/*.desktop}} for Wayland's.<br />
<br />
{{Note|GNOME users, and by extension any gnome-keyring user will have to set up a blank password to their keyring for it to be unlocked automatically.}}<br />
<br />
=== Enabling interactive passwordless login ===<br />
<br />
LightDM goes through PAM so you must configure the lightdm configuration of PAM:<br />
<br />
{{hc|/etc/pam.d/lightdm|2=<br />
#%PAM-1.0<br />
'''auth sufficient pam_succeed_if.so user ingroup nopasswdlogin'''<br />
auth include system-login<br />
...<br />
}}<br />
<br />
You must then also be part of the {{ic|nopasswdlogin}} group to be able to login interactively without entering your password:<br />
<br />
# groupadd -r nopasswdlogin<br />
# gpasswd -a ''username'' nopasswdlogin<br />
<br />
{{Note|GNOME users, and by extension any gnome-keyring user may have to follow the instructions at the end of the previous section on enabling autologin.}}<br />
<br />
To create a new user account that logs in automatically and additionally able to login again without a password the user can be created with supplementary membership of both groups, e.g.:<br />
<br />
# useradd -mG autologin,nopasswdlogin -s /bin/bash ''username''<br />
<br />
=== Hiding system and services users ===<br />
To prevent system users from showing-up in the login, install the optional dependency {{Pkg|accountsservice}}, or add the user names to {{ic|/etc/lightdm/users.conf}} under {{ic|hidden-users}}. The first option has the advantage of not needing to update the list when more users are added or removed.<br />
<br />
=== Migrating from SLiM ===<br />
<br />
{{Merge|Display Manager|Not LightDM specific (or even SLiM specific for that matter as [[XDM]] also uses [[xinitrc]]). Perhaps this merits a one-liner somewhere on the [[Display Manager]] page?}}<br />
<br />
Move the contents of [[xinitrc]] to [[xprofile]], removing the call to start the [[window manager]] or [[desktop environment]].<br />
<br />
=== Login using ~/.xinitrc ===<br />
<br />
See [[Display manager#Run ~/.xinitrc as a session]].<br />
<br />
=== NumLock on by default ===<br />
<br />
Install the {{Pkg|numlockx}} package and then edit {{ic|/etc/lightdm/lightdm.conf}}:<br />
{{hc|/etc/lightdm/lightdm.conf|2=<br />
[Seat:*]<br />
greeter-setup-script=/usr/bin/numlockx on<br />
}}<br />
<br />
=== Default session ===<br />
<br />
Lightdm, like other DMs, stores the last-selected xsession in {{ic|~/.dmrc}}. See [[Display manager#Session configuration]] for more info.<br />
<br />
=== Adjusting the login window's position ===<br />
<br />
==== GTK greeter ====<br />
<br />
Users need to edit {{ic|/etc/lightdm/lightdm-gtk-greeter.conf}} and enter a value for the {{ic|position}} variable. It accepts {{ic|x}} and {{ic|y}} values, either absolute (in pixels) or relative (in percent). Each value can also have an additional anchor location for the window, {{ic|start}}, {{ic|center}} and {{ic|end}} separated from the value by a comma.<br />
<br />
Example:<br />
<br />
position=200,start 50%,center<br />
<br />
=== VNC Server ===<br />
Lightdm can also be used to connect to via VNC. Make sure to install {{pkg|tigervnc}} on the server side and optionally as your VNC client on the client PC.<br />
<br />
Setup an authentication password on the server as root:<br />
<br />
# vncpasswd /etc/vncpasswd<br />
<br />
Edit the LightDM configuration file as shown below. Note that {{ic|listen-address}} configures the VNC to only listen to connections from localhost. This is used to only allow connections via [[TigerVNC#On_the_client|SSH and port forwarding]]. On the SSH client, make sure that you use {{ic|localhost:5900}} for the tunnel destination; using {{ic|127.0.0.1:5900}} or {{ic|::1:5900}} is not reliable on dual stack network connections. If you want to allow insecure connections you can disable this setting.<br />
<br />
{{hc|/etc/lightdm/lightdm.conf|2=<br />
[VNCServer]<br />
enabled=true<br />
command=Xvnc -rfbauth /etc/vncpasswd<br />
port=5900<br />
listen-address=localhost<br />
width=1024<br />
height=768<br />
depth=24<br />
}}<br />
<br />
Now open an SSH tunnel and connect to localhost as described in [[TigerVNC#On the client]].<br />
<br />
{{Note|If you get a blank screen upon opening the VNC connection, try a different LightDM greeter.}}<br />
<br />
=== Lock the screen using light-locker ===<br />
{{Pkg|light-locker}} is a simple screen locker using LightDM to authenticate the user. Once it is installed and running you can lock your session using<br />
$ light-locker-command -l<br />
This requires {{ic|light-locker}} to be started at the beginning of your session - see [[Autostarting]].<br />
<br />
== Troubleshooting ==<br />
=== LightDM not starting and screen flashing ===<br />
If you encounter consistent screen flashing and ultimately no LightDM on boot, ensure that you have defined the greeter correctly in LightDM's config file. And if you have correctly defined the GTK greeter, make sure the {{ic|xsessions-directory}} (default: {{ic|/usr/share/xsessions}}) exists and contains at least one .desktop file.<br />
<br />
The same error can happen on lightdm startup if the last used session is not available anymore (eg. you last used gnome and then removed the gnome-session package): the easiest workaround is to temporarily restore the removed package. Another solution might be:<br />
<br />
# dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetXSession string:xfce<br />
<br />
This example sets the session "xfce" as default for the user 1000.<br />
<br />
=== Wrong locale displayed ===<br />
<br />
In case of your locale not being displayed correctly in Lightdm add your locale to {{ic|/etc/environment}}<br />
LANG=pt_PT.utf8<br />
<br />
Alternatively if you want LightDM and its greeters to be in a language other than your set system locale, you can use the {{ic|1=Environment=}} option in [[Systemd#Drop-in files]].<br />
<br />
=== Unresponsive for a few minutes after startup ===<br />
<br />
You may have to download more entropy. Install and enable haveged, c.f. https://github.com/canonical/lightdm/issues/17<br />
<br />
=== Missing icons with GTK greeter ===<br />
<br />
If you are using {{Pkg|lightdm-gtk-greeter}} as a greeter and it shows placeholder images as icons, make sure valid icon themes and themes are installed and configured. Check the following file:<br />
<br />
{{hc|/etc/lightdm/lightdm-gtk-greeter.conf|2=<br />
[greeter]<br />
theme-name=mate # this should be the name of a directory under /usr/share/themes/<br />
icon-theme-name=mate # this should be the name of a fully featured icons set directory under /usr/share/icons/<br />
}}<br />
<br />
=== LightDM freezes on login attempt ===<br />
<br />
You may find that after entering the correct username and password and attempting to log in, LightDM freezes and you are unable to continue to the desktop. To fix the issue, reinstall the {{Pkg|gdk-pixbuf2}} package. See [https://bbs.archlinux.org/viewtopic.php?id=179031 this forum thread].<br />
<br />
=== LightDM displaying in wrong monitor ===<br />
<br />
If you are using multiple monitors, LightDM may display in the wrong one (e.g. if your primary monitor is on the right). To force the LightDM login screen to display on a specific monitor, edit {{ic|/etc/lightdm/lightdm.conf}} and change the ''display-setup-script'' parameter like this:<br />
{{hc|/etc/lightdm/lightdm.conf|2=<br />
display-setup-script=xrandr --output ''HDMI1'' --primary<br />
}}<br />
<br />
Replace ''HDMI1'' with your real monitor ID, which you can find from '''xrandr''' command output.<br />
<br />
Alternatively, if you are using the GTK greeter, you can edit {{ic|/etc/lightdm/lightdm-gtk-greeter.conf}} and add the ''active-monitor'' parameter like this:<br />
{{hc|/etc/lightdm/lightdm-gtk-greeter.conf|2=<br />
[greeter]<br />
active-monitor=0<br />
}}<br />
<br />
Replace 0 with the desired display number.<br />
<br />
=== LightDM does not appear or monitor only displays TTY output===<br />
<br />
It may happen that your system boots so fast that LightDM service is started before your graphics drivers are properly loaded. If this is your case, you will want to add the following config to your lightdm.conf file:<br />
<br />
[LightDM]<br />
logind-check-graphical=true<br />
<br />
This setting will tell LightDM to wait until graphics devices are ready before spawning greeters/autostarting sessions on them.<br />
<br />
=== LightDM is running with low FPS on Intel Graphics ===<br />
<br />
See [[Intel graphics#SNA issues]]{{Broken section link}}.<br />
<br />
=== Pulseaudio not starting automatically ===<br />
<br />
See [[PulseAudio#Running]].<br />
<br />
=== Long pause before LightDM shows up when home is encrypted ===<br />
<br />
Some LightDM themes try to access the user avatar located in HOME. If your HOME is encrypted, LightDM cannot access it and hangs. To prevent this from happening, you can either:<br />
<br />
* Set your avatar as explained in [[#Changing your avatar]]<br />
* for {{Pkg|lightdm-gtk-greeter}} only: {{Ic|<nowiki>hide-user-image = true</nowiki>}} in {{Ic|/etc/lightdm/lightdm-gtk-greeter.conf}}<br />
<br />
=== Boot hangs on "[ OK ] Reached target Graphical Interface." ===<br />
<br />
There is a possibility that user and group lookups fail if you modified /etc/nsswitch.conf. That happens when:<br />
<br />
* nsswitch.conf group: includes {{Ic|<nowiki>ldap</nowiki>}} without setting {{Ic|<nowiki>nss_initgroups_ignoreusers ALLLOCAL</nowiki>}} in {{Ic|<nowiki>/etc/nslcd.conf</nowiki>}}<br />
<br />
=== Wayland session not working with duplicate GNOME entries in greeter ===<br />
* Some greeters ({{Pkg|lightdm-webkit2-greeter}} for example) do not support two sessions with the same name [https://github.com/CanonicalLtd/lightdm/issues/16]. To check for duplicate entries:<br />
ls -1 /usr/share/wayland-sessions /usr/share/xsessions<br />
* Rename the duplicate entry in /usr/share/xsessions. For example:<br />
mv /usr/share/xsessions/gnome.desktop /usr/share/xsessions/gnome.desktop.disabled<br />
<br />
=== Login always segfaults on first attempt ===<br />
<br />
Set a hostname as described in [[Network_configuration#Set_the_hostname|Network Page]]. See also {{Bug|47694}}.<br />
<br />
== See also ==<br />
<br />
* [https://wiki.ubuntu.com/LightDM Ubuntu Wiki article]<br />
* [http://wiki.gentoo.org/wiki/LightDM Gentoo Wiki article]<br />
* [https://launchpad.net/lightdm Launchpad Page] obsolete<br />
* [http://www.mattfischer.com/blog/?tag=lightdm LightDM blog]<br />
* [https://github.com/CanonicalLtd/lightdm LightDM on GitHub]</div>Electric26https://wiki.archlinux.org/index.php?title=Pacman&diff=622832Pacman2020-06-30T03:47:35Z<p>Electric26: added troubleshooting for partial upgrades (pacman -Sy)</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Package management]]<br />
[[Category:Arch projects]]<br />
[[Category:Commands]]<br />
[[ar:Pacman]]<br />
[[cs:Pacman]]<br />
[[da:Pacman]]<br />
[[de:Pacman]]<br />
[[el:Pacman]]<br />
[[es:Pacman]]<br />
[[fa:Pacman]]<br />
[[fr:Pacman]]<br />
[[id:Pacman]]<br />
[[it:Pacman]]<br />
[[ja:Pacman]]<br />
[[ko:Pacman]]<br />
[[nl:Pacman]]<br />
[[pl:Pacman]]<br />
[[pt:Pacman]]<br />
[[ru:Pacman]]<br />
[[sr:Pacman]]<br />
[[sv:Pacman]]<br />
[[zh-hans:Pacman]]<br />
[[zh-hant:Pacman]]<br />
{{Related articles start}}<br />
{{Related|Creating packages}}<br />
{{Related|Downgrading packages}}<br />
{{Related|pacman/Package signing}}<br />
{{Related|pacman/Pacnew and Pacsave}}<br />
{{Related|pacman/Restore local database}}<br />
{{Related|pacman/Rosetta}}<br />
{{Related|pacman/Tips and tricks}}<br />
{{Related|FAQ#Package management}}<br />
{{Related|System maintenance}}<br />
{{Related|Arch Build System}}<br />
{{Related|Official repositories}}<br />
{{Related|Arch User Repository}}<br />
{{Related articles end}}<br />
<br />
The [https://www.archlinux.org/pacman/ pacman] [[Wikipedia:Package manager|package manager]] is one of the major distinguishing features of Arch Linux. It combines a simple binary package format with an easy-to-use [[Arch Build System|build system]]. The goal of ''pacman'' is to make it possible to easily manage packages, whether they are from the [[official repositories]] or the user's own builds.<br />
<br />
''Pacman'' keeps the system up to date by synchronizing package lists with the master server. This server/client model also allows the user to download/install packages with a simple command, complete with all required dependencies.<br />
<br />
''Pacman'' is written in the [[C]] programming language and uses the {{man|1|bsdtar}} [[w:tar (computing)|tar]] format for packaging.<br />
<br />
{{Tip|1=The {{Pkg|pacman}} package contains tools such as [[makepkg]] and {{man|8|vercmp}}. Other useful tools such as [[#Pactree|pactree]] and [[checkupdates]] are found in {{Pkg|pacman-contrib}} ([https://git.archlinux.org/pacman.git/commit/?id=0c99eabd50752310f42ec808c8734a338122ec86 formerly] part of pacman). Run {{ic|pacman -Ql pacman pacman-contrib {{!}} grep -E 'bin/.+'}} to see the full list.}}<br />
<br />
== Usage ==<br />
<br />
What follows is just a small sample of the operations that ''pacman'' can perform. To read more examples, refer to {{man|8|pacman}}.<br />
<br />
{{Tip|For those who have used other Linux distributions before, there is a helpful [[Pacman Rosetta]] article.}}<br />
<br />
=== Installing packages ===<br />
<br />
A package is an archive containing:<br />
<br />
* all of the (compiled) files of an application<br />
* metadata about the application, such as application name, version, dependencies, ...<br />
* installation files and directives for pacman<br />
* (optionally) extra files to make your life easier, such as a start/stop script<br />
<br />
Arch's package manager pacman can install, update, and remove those packages. Using packages instead of compiling and installing programs yourself has various benefits:<br />
<br />
* easily updatable: pacman will update existing packages as soon as updates are available<br />
* dependency checks: pacman handles dependencies for you, you only need to specify the program and pacman installs it together with every other program it needs<br />
* clean removal: pacman has a list of every file in a package; this way, no files are unintentionally left behind when you decide to remove a package.<br />
<br />
{{Note|<br />
* Packages often have [[PKGBUILD#optdepends|optional dependencies]] which are packages that provide additional functionality to the application but not strictly required for running it. When installing a package, ''pacman'' will list a package's optional dependencies, but they will not be found in {{ic|pacman.log}}. Use the [[#Querying package databases]] command to view the optional dependencies of a package.<br />
* When installing a package which you require only as (optional) dependency of some other package (i.e. not required by you explicitly otherwise), it is recommended to use {{ic|--asdeps}} option. For details see the [[#Installation reason]] section.}}<br />
<br />
{{Warning|1=When installing packages in Arch, avoid refreshing the package list without [[#Upgrading packages|upgrading the system]] (for example, when a [[#Packages cannot be retrieved on installation|package is no longer found]] in the official repositories). In practice, do '''not''' run {{ic|pacman -Sy ''package_name''}} instead of {{ic|pacman -Sy'''u''' ''package_name''}}, as this could lead to dependency issues. See [[System maintenance#Partial upgrades are unsupported]] and [https://bbs.archlinux.org/viewtopic.php?id=89328 BBS#89328].}}<br />
<br />
==== Installing specific packages ====<br />
<br />
To install a single package or list of packages, including dependencies, issue the following command:<br />
<br />
# pacman -S ''package_name1'' ''package_name2'' ...<br />
<br />
To install a list of packages with regex (see [https://bbs.archlinux.org/viewtopic.php?id=7179 this forum thread]):<br />
<br />
# pacman -S $(pacman -Ssq ''package_regex'')<br />
<br />
Sometimes there are multiple versions of a package in different repositories (e.g. ''extra'' and ''testing''). To install the version from the ''extra'' repository in this example, the repository needs to be defined in front of the package name:<br />
<br />
# pacman -S extra/''package_name''<br />
<br />
To install a number of packages sharing similar patterns in their names one can use curly brace expansion. For example:<br />
<br />
# pacman -S plasma-{desktop,mediacenter,nm}<br />
<br />
This can be expanded to however many levels needed:<br />
<br />
# pacman -S plasma-{workspace{,-wallpapers},pa}<br />
<br />
==== Installing package groups ====<br />
<br />
Some packages belong to a [[Package group|group of packages]] that can all be installed simultaneously. For example, issuing the command:<br />
<br />
# pacman -S gnome<br />
<br />
will prompt you to select the packages from the {{Grp|gnome}} group that you wish to install.<br />
<br />
Sometimes a package group will contain a large amount of packages, and there may be only a few that you do or do not want to install. Instead of having to enter all the numbers except the ones you do not want, it is sometimes more convenient to select or exclude packages or ranges of packages with the following syntax:<br />
<br />
Enter a selection (default=all): 1-10 15<br />
<br />
which will select packages 1 through 10 and 15 for installation, or:<br />
<br />
Enter a selection (default=all): ^5-8 ^2<br />
<br />
which will select all packages except 5 through 8 and 2 for installation.<br />
<br />
To see what packages belong to the gnome group, run:<br />
<br />
# pacman -Sg gnome<br />
<br />
Also visit https://www.archlinux.org/groups/ to see what package groups are available.<br />
<br />
{{Note|If a package in the list is already installed on the system, it will be reinstalled even if it is already up to date. This behavior can be overridden with the {{ic|--needed}} option.}}<br />
<br />
=== Removing packages ===<br />
<br />
To remove a single package, leaving all of its dependencies installed:<br />
<br />
# pacman -R ''package_name''<br />
<br />
To remove a package and its dependencies which are not required by any other installed package:<br />
<br />
# pacman -Rs ''package_name''<br />
<br />
The above may sometimes refuse to run when removing a group which contains otherwise needed packages. In this case try:<br />
<br />
# pacman -Rsu ''package_name''<br />
<br />
To remove a package, its dependencies and all the packages that depend on the target package:<br />
<br />
{{Warning|This operation is recursive, and must be used with care since it can remove many potentially needed packages.}}<br />
<br />
# pacman -Rsc ''package_name''<br />
<br />
To remove a package, which is required by another package, without removing the dependent package:<br />
<br />
{{Warning|The following operation can break a system and should be avoided. See [[System maintenance#Avoid certain pacman commands]].}}<br />
<br />
# pacman -Rdd ''package_name''<br />
<br />
''Pacman'' saves important configuration files when removing certain applications and names them with the extension: ''.pacsave''. To prevent the creation of these backup files use the {{ic|-n}} option:<br />
<br />
# pacman -Rn ''package_name''<br />
<br />
{{Note|''Pacman'' will not remove configurations that the application itself creates (for example "dotfiles" in the home folder).}}<br />
<br />
=== Upgrading packages ===<br />
<br />
{{Warning|<br />
*Users are expected to follow the guidance in the [[System maintenance#Upgrading the system]] section to upgrade their systems regularly and not blindly run the following command.<br />
*Arch only supports full system upgrades. See [[System maintenance#Partial upgrades are unsupported]] and [[#Installing packages]] for details.}}<br />
<br />
''Pacman'' can update all packages on the system with just one command. This could take quite a while depending on how up-to-date the system is. The following command synchronizes the repository databases ''and'' updates the system's packages, excluding "local" packages that are not in the configured repositories:<br />
<br />
# pacman -Syu<br />
<br />
=== Querying package databases ===<br />
<br />
''Pacman'' queries the local package database with the {{ic|-Q}} flag, the sync database with the {{ic|-S}} flag and the files database with the {{ic|-F}} flag. See {{ic|pacman -Q --help}}, {{ic|pacman -S --help}} and {{ic|pacman -F --help}} for the respective suboptions of each flag.<br />
<br />
''Pacman'' can search for packages in the database, searching both in packages' names and descriptions:<br />
<br />
$ pacman -Ss ''string1'' ''string2'' ...<br />
<br />
Sometimes, {{Ic|-s}}'s builtin ERE (Extended Regular Expressions) can cause a lot of unwanted results, so it has to be limited to match the package name only; not the description nor any other field:<br />
<br />
$ pacman -Ss '^vim-'<br />
<br />
To search for already installed packages:<br />
<br />
$ pacman -Qs ''string1'' ''string2'' ...<br />
<br />
To search for package file names in remote packages:<br />
<br />
$ pacman -F ''string1'' ''string2'' ...<br />
<br />
To display extensive information about a given package:<br />
<br />
$ pacman -Si ''package_name''<br />
<br />
For locally installed packages:<br />
<br />
$ pacman -Qi ''package_name''<br />
<br />
Passing two {{ic|-i}} flags will also display the list of backup files and their modification states:<br />
<br />
$ pacman -Qii ''package_name''<br />
<br />
To retrieve a list of the files installed by a package:<br />
<br />
$ pacman -Ql ''package_name''<br />
<br />
To retrieve a list of the files installed by a remote package:<br />
<br />
$ pacman -Fl ''package_name''<br />
<br />
To verify the presence of the files installed by a package:<br />
<br />
$ pacman -Qk ''package_name''<br />
<br />
Passing the {{ic|k}} flag twice will perform a more thorough check.<br />
<br />
To query the database to know which package a file in the file system belongs to:<br />
<br />
$ pacman -Qo ''/path/to/file_name''<br />
<br />
To query the database to know which remote package a file belongs to:<br />
<br />
$ pacman -F ''/path/to/file_name''<br />
<br />
To list all packages no longer required as dependencies (orphans):<br />
<br />
$ pacman -Qdt<br />
<br />
{{Tip|Add the above command to a pacman post-transaction [[#Hooks|hook]] to be notified if a transaction orphaned a package. This can be useful for being notified when a package has been dropped from a repository, since any dropped package will also be orphaned on a local installation (unless it was explicitly installed). To avoid any "failed to execute command" errors when no orphans are found, use the following command for {{ic|Exec}} in your hook: {{ic|<nowiki>/usr/bin/bash -c "/usr/bin/pacman -Qtd || /usr/bin/echo '=> None found.'"</nowiki>}}}}<br />
<br />
To list all packages explicitly installed and not required as dependencies:<br />
<br />
$ pacman -Qet<br />
<br />
See [[Pacman/Tips and tricks]] for more examples.<br />
<br />
==== Pactree ====<br />
{{Note|{{man|8|pactree}} is not part of the {{Pkg|pacman}} package anymore. Instead it can be found in {{Pkg|pacman-contrib}}.}}<br />
<br />
To view the dependency tree of a package:<br />
<br />
$ pactree ''package_name''<br />
<br />
To view the dependant tree of a package, pass the reverse flag {{ic|-r}} to ''pactree'', or use ''whoneeds'' from {{AUR|pkgtools}}.<br />
<br />
==== Database structure ====<br />
<br />
The ''pacman'' databases are normally located at {{ic|/var/lib/pacman/sync}}. For each repository specified in {{ic|/etc/pacman.conf}} there will be a corresponding database file located there. Database files are gzipped tar archives containing one directory for each package, for example for the {{Pkg|which}} package:<br />
<br />
{{hc|$ tree which-2.21-5|<br />
which-2.21-5<br />
{{!}}-- desc<br />
}}<br />
<br />
The {{ic|desc}} file contains meta data such as the package description, dependencies, file size and MD5 hash.<br />
<br />
=== Cleaning the package cache ===<br />
<br />
''Pacman'' stores its downloaded packages in {{ic|/var/cache/pacman/pkg/}} and does not remove the old or uninstalled versions automatically. This has some advantages:<br />
# It allows to [[downgrade]] a package without the need to retrieve the previous version through other means, such as the [[Arch Linux Archive]].<br />
# A package that has been uninstalled can easily be reinstalled directly from the cache folder, not requiring a new download from the repository.<br />
<br />
However, it is necessary to deliberately clean up the cache periodically to prevent the folder to grow indefinitely in size.<br />
<br />
The {{man|8|paccache}} script, provided within the {{Pkg|pacman-contrib}} package, deletes all cached versions of installed and uninstalled packages, except for the most recent 3, by default:<br />
<br />
# paccache -r<br />
<br />
[[Enable]] and [[start]] {{ic|paccache.timer}} to discard unused packages weekly.<br />
<br />
{{Tip|1=You can create a [[#Hooks|hook]] to run this automatically after every pacman transaction, see [https://bbs.archlinux.org/viewtopic.php?pid=1694743#p1694743 examples] and {{AUR|pacman-cleanup-hook}}.}}<br />
<br />
You can also define how many recent versions you want to keep. To retain only one past version use:<br />
<br />
# paccache -rk1<br />
<br />
Add the {{ic|-u}}/{{ic|--uninstalled}} switch to limit the action of ''paccache'' to uninstalled packages. For example to remove all cached versions of uninstalled packages, use the following:<br />
<br />
# paccache -ruk0<br />
<br />
See {{ic|paccache -h}} for more options.<br />
<br />
''Pacman'' also has some built-in options to clean the cache and the leftover database files from repositories which are no longer listed in the configuration file {{ic|/etc/pacman.conf}}. However ''pacman'' does not offer the possibility to keep a number of past versions and is therefore more aggressive than ''paccache'' default options.<br />
<br />
To remove all the cached packages that are not currently installed, and the unused sync database, execute:<br />
<br />
# pacman -Sc<br />
<br />
To remove all files from the cache, use the clean switch twice, this is the most aggressive approach and will leave nothing in the cache folder:<br />
<br />
# pacman -Scc<br />
<br />
{{Warning|One should avoid deleting from the cache all past versions of installed packages and all uninstalled packages unless one desperately needs to free some disk space. This will prevent downgrading or reinstalling packages without downloading them again.}}<br />
<br />
{{AUR|pkgcacheclean}} and {{AUR|pacleaner}} are two further alternatives to clean the cache.<br />
<br />
=== Additional commands ===<br />
<br />
Download a package without installing it:<br />
<br />
# pacman -Sw ''package_name''<br />
<br />
Install a 'local' package that is not from a remote repository (e.g. the package is from the [[AUR]]):<br />
<br />
# pacman -U ''/path/to/package/package_name-version.pkg.tar.xz''<br />
<br />
To keep a copy of the local package in ''pacman'''s cache, use:<br />
<br />
# pacman -U file:///''path/to/package/package_name-version.pkg.tar.xz''<br />
<br />
Install a 'remote' package (not from a repository stated in ''pacman'''s configuration files):<br />
<br />
# pacman -U ''<nowiki>http://www.example.com/repo/example.pkg.tar.xz</nowiki>''<br />
<br />
To inhibit the {{ic|-S}}, {{ic|-U}} and {{ic|-R}} actions, {{ic|-p}} can be used.<br />
<br />
''Pacman'' always lists packages to be installed or removed and asks for permission before it takes action.<br />
<br />
=== Installation reason ===<br />
<br />
The ''pacman'' database distinguishes the installed packages in two groups according to the reason why they were installed:<br />
<br />
* '''explicitly-installed''': the packages that were literally passed to a generic ''pacman'' {{ic|-S}} or {{ic|-U}} command;<br />
* '''dependencies''': the packages that, despite never (in general) having been passed to a ''pacman'' installation command, were implicitly installed because [[dependency|required]] by another package that was explicitly installed.<br />
<br />
When installing a package, it is possible to force its installation reason to ''dependency'' with:<br />
<br />
# pacman -S --asdeps ''package_name''<br />
<br />
{{Tip|Installing optional dependencies with {{ic|--asdeps}} will cause it such that if you [[Pacman/Tips_and_tricks#Removing_unused_packages_.28orphans.29|remove orphans]], ''pacman'' will also remove leftover optional dependencies.}}<br />
<br />
When '''re'''installing a package, though, the current installation reason is preserved by default.<br />
<br />
The list of explicitly-installed packages can be shown with {{ic|pacman -Qe}}, while the complementary list of dependencies can be shown with {{ic|pacman -Qd}}.<br />
<br />
To change the installation reason of an already installed package, execute:<br />
<br />
# pacman -D --asdeps ''package_name''<br />
<br />
Use {{ic|--asexplicit}} to do the opposite operation.<br />
<br />
{{Note|Using {{ic|--asdeps}} and {{ic|--asexplicit}} options when upgrading, such as with {{ic|pacman -Syu ''package_name'' --asdeps}}, is discouraged. This would change the installation reason of not only the package being installed, but also the packages being upgraded.}}<br />
<br />
=== Search for a package that contains a specific file ===<br />
<br />
Sync the files database:<br />
<br />
# pacman -Fy<br />
<br />
Search for a package containing a file, e.g.:<br />
<br />
{{hc|$ pacman -F pacman|<br />
core/pacman 5.2.1-1 (base base-devel) [installed]<br />
usr/bin/pacman<br />
usr/share/bash-completion/completions/pacman<br />
extra/xscreensaver 5.43-1<br />
usr/lib/xscreensaver/pacman<br />
}}<br />
<br />
{{Tip|You can set a cron job or a systemd timer to sync the files database regularly.}}<br />
<br />
For advanced functionality install [[pkgfile]], which uses a separate database with all files and their associated packages.<br />
<br />
== Configuration ==<br />
<br />
''Pacman'''s settings are located in {{ic|/etc/pacman.conf}}: this is the place where the user configures the program to work in the desired manner. In-depth information about the configuration file can be found in {{man|5|pacman.conf}}.<br />
<br />
=== General options ===<br />
<br />
General options are in the {{ic|[options]}} section. Read {{man|5|pacman.conf}} or look in the default {{ic|pacman.conf}} for information on what can be done here.<br />
<br />
==== Comparing versions before updating ====<br />
<br />
To see old and new versions of available packages, uncomment the "VerbosePkgLists" line in {{ic|/etc/pacman.conf}}. The output of {{ic|pacman -Syu}} will be like this:<br />
<br />
Package (6) Old Version New Version Net Change Download Size<br />
<br />
extra/libmariadbclient 10.1.9-4 10.1.10-1 0.03 MiB 4.35 MiB<br />
extra/libpng 1.6.19-1 1.6.20-1 0.00 MiB 0.23 MiB<br />
extra/mariadb 10.1.9-4 10.1.10-1 0.26 MiB 13.80 MiB<br />
<br />
==== Skip package from being upgraded ====<br />
<br />
{{Warning|Be careful in skipping packages, since [[partial upgrades]] are unsupported.}}<br />
<br />
To have a specific package skipped when [[#Upgrading packages|upgrading]] the system, specify it as such:<br />
<br />
IgnorePkg=linux<br />
<br />
For multiple packages use a space-separated list, or use additional {{ic|IgnorePkg}} lines. Also, [[Wikipedia:glob (programming)|glob]] patterns can be used. If you want to skip packages just once, you can also use the {{ic|--ignore}} option on the command-line - this time with a comma-separated list.<br />
<br />
It will still be possible to upgrade the ignored packages using {{ic|pacman -S}}: in this case ''pacman'' will remind you that the packages have been included in an {{ic|IgnorePkg}} statement.<br />
<br />
==== Skip package group from being upgraded ====<br />
<br />
{{Warning|Be careful in skipping package groups, since [[partial upgrades]] are unsupported.}}<br />
<br />
As with packages, skipping a whole package group is also possible:<br />
<br />
IgnoreGroup=gnome<br />
<br />
==== Skip file from being upgraded ====<br />
<br />
All files listed with a {{Ic|NoUpgrade}} directive will never be touched during a package install/upgrade, and the new files will be installed with a ''.pacnew'' extension.<br />
<br />
NoUpgrade=''path/to/file''<br />
<br />
{{Note|The path refers to files in the package archive. Therefore, do not include the leading slash.}}<br />
<br />
==== Skip files from being installed to system ====<br />
<br />
To always skip installation of specific directories list them under {{Ic|NoExtract}}. For example, to avoid installation of [[systemd]] units use this:<br />
<br />
NoExtract=usr/lib/systemd/system/*<br />
<br />
Later rules override previous ones, and you can negate a rule by prepending {{ic|!}}.<br />
<br />
{{Tip|''Pacman'' issues warning messages about missing locales when updating a package for which locales have been cleared by ''localepurge'' or ''bleachbit''. Commenting the {{ic|CheckSpace}} option in {{ic|pacman.conf}} suppresses such warnings, but consider that the space-checking functionality will be disabled for all packages.}}<br />
<br />
==== Maintain several configuration files ====<br />
<br />
If you have several configuration files (e.g. main configuration and configuration with [[testing]] repository enabled) and would have to share options between configurations you may use {{ic|Include}} option declared in the configuration files, e.g.:<br />
<br />
Include = ''/path/to/common/settings''<br />
<br />
where {{ic|''/path/to/common/settings''}} file contains the same options for both configurations.<br />
<br />
==== Hooks ====<br />
<br />
''Pacman'' can run pre- and post-transaction hooks from the {{ic|/usr/share/libalpm/hooks/}} directory; more directories can be specified with the {{ic|HookDir}} option in {{ic|pacman.conf}}, which defaults to {{ic|/etc/pacman.d/hooks}}. Hook file names must be suffixed with ''.hook''. Pacman hooks are not interactive.<br />
<br />
''Pacman'' hooks are used, for example, in combination with {{ic|systemd-sysusers}} and {{ic|systemd-tmpfiles}} to automatically create system users and files during the installation of packages. For example, package {{ic|tomcat8}} specifies that it wants a system user called {{ic|tomcat8}} and certain directories owned by this user. The ''pacman'' hooks {{ic|systemd-sysusers.hook}} and {{ic|systemd-tmpfiles.hook}} invoke {{ic|systemd-sysusers}} and {{ic|systemd-tmpfiles}} when ''pacman'' determines that package {{ic|tomcat8}} contains files specifying users and tmp files.<br />
<br />
For more information on alpm hooks, see {{man|5|alpm-hooks}}.<br />
<br />
=== Repositories and mirrors ===<br />
<br />
Besides the special [[#General options|[options]]] section, each other {{ic|[section]}} in {{ic|pacman.conf}} defines a package repository to be used. A ''repository'' is a ''logical'' collection of packages, which are ''physically'' stored on one or more servers: for this reason each server is called a ''mirror'' for the repository.<br />
<br />
Repositories are distinguished between [[Official repositories|official]] and [[Unofficial user repositories|unofficial]]. The order of repositories in the configuration file matters; repositories listed first will take precedence over those listed later in the file when packages in two repositories have identical names, regardless of version number. In order to use a repository after adding it, you will need to [[#Upgrading packages|upgrade]] the whole system first.<br />
<br />
Each repository section allows defining the list of its mirrors directly or in a dedicated external file through the {{ic|Include}} directive: for example, the mirrors for the official repositories are included from {{ic|/etc/pacman.d/mirrorlist}}. See the [[Mirrors]] article for mirror configuration.<br />
<br />
==== Package security ====<br />
<br />
''Pacman'' supports package signatures, which add an extra layer of security to the packages. The default configuration, {{ic|1=SigLevel = Required DatabaseOptional}}, enables signature verification for all the packages on a global level: this can be overridden by per-repository {{ic|SigLevel}} lines. For more details on package signing and signature verification, take a look at [[pacman-key]].<br />
<br />
== Troubleshooting ==<br />
<br />
=== "Failed to commit transaction (conflicting files)" error ===<br />
<br />
If you see the following error: [https://bbs.archlinux.org/viewtopic.php?id=56373]<br />
<br />
error: could not prepare transaction<br />
error: failed to commit transaction (conflicting files)<br />
''package'': ''/path/to/file'' exists in filesystem<br />
Errors occurred, no packages were upgraded.<br />
<br />
This is happening because ''pacman'' has detected a file conflict, and by design, will not overwrite files for you. This is by design, not a flaw.<br />
<br />
The problem is usually trivial to solve. A safe way is to first check if another package owns the file ({{ic|pacman -Qo ''/path/to/file''}}). If the file is owned by another package, [[Reporting bug guidelines|file a bug report]]. If the file is not owned by another package, rename the file which 'exists in filesystem' and re-issue the update command. If all goes well, the file may then be removed.<br />
<br />
If you had installed a program manually without using ''pacman'', for example through {{ic|make install}}, you have to remove/uninstall this program with all of its files. See also [[Pacman tips#Identify files not owned by any package]].<br />
<br />
Every installed package provides a {{ic|/var/lib/pacman/local/''package-version''/files}} file that contains metadata about this package. If this file gets corrupted, is empty or goes missing, it results in {{ic|file exists in filesystem}} errors when trying to update the package. Such an error usually concerns only one package. Instead of manually renaming and later removing all the files that belong to the package in question, you may explicitly run {{ic|pacman -S --overwrite ''glob'' ''package''}} to force ''pacman'' to overwrite files that match {{ic|''glob''}}.<br />
<br />
{{Warning|Generally avoid using the {{ic|--overwrite}} switch. See [[System maintenance#Avoid certain pacman commands]].}}<br />
<br />
=== "Failed to commit transaction (invalid or corrupted package)" error ===<br />
<br />
Look for ''.part'' files (partially downloaded packages) in {{ic|/var/cache/pacman/pkg/}} and remove them (often caused by usage of a custom {{ic|XferCommand}} in {{ic|pacman.conf}}).<br />
<br />
# find /var/cache/pacman/pkg/ -iname "*.part" -delete<br />
<br />
=== "Failed to init transaction (unable to lock database)" error ===<br />
<br />
When ''pacman'' is about to alter the package database, for example installing a package, it creates a lock file at {{ic|/var/lib/pacman/db.lck}}. This prevents another instance of ''pacman'' from trying to alter the package database at the same time.<br />
<br />
If ''pacman'' is interrupted while changing the database, this stale lock file can remain. If you are certain that no instances of ''pacman'' are running then delete the lock file:<br />
<br />
# rm /var/lib/pacman/db.lck<br />
<br />
=== Packages cannot be retrieved on installation ===<br />
<br />
This error manifests as {{ic|Not found in sync db}}, {{ic|Target not found}} or {{ic|Failed retrieving file}}.<br />
<br />
Firstly, ensure the package actually exists. If certain the package exists, your package list may be out-of-date. Try running {{ic|pacman -Syu}} to force a refresh of all package lists and upgrade. Also make sure the selected [[mirrors]] are up-to-date and [[#Repositories and mirrors|repositories]] are correctly configured.<br />
<br />
It could also be that the repository containing the package is not enabled on your system, e.g. the package could be in the [[multilib]] repository, but ''multilib'' is not enabled in your {{ic|pacman.conf}}.<br />
<br />
See also [[FAQ#Why is there only a single version of each shared library in the official repositories?]].<br />
<br />
=== Pacman crashes during an upgrade ===<br />
<br />
In the case that ''pacman'' crashes with a "database write" error while removing packages, and reinstalling or upgrading packages fails thereafter, do the following:<br />
<br />
# Boot using the Arch installation media. Preferably use a recent media so that the ''pacman'' version matches/is newer than the system. <br />
# Mount the system's root filesystem, e.g. {{ic|mount /dev/sdaX /mnt}} as root, and check the mount has sufficient space with {{ic|df -h}}<br />
# Mount the proc, sys and dev filesystems as well: {{ic|mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev }} <br />
# If the system uses default database and directory locations, you can now update the system's ''pacman'' database and upgrade it via {{ic|1=pacman --sysroot /mnt -Syu}} as root. <br />
# After the upgrade, one way to double-check for not upgraded but still broken packages: {{ic|find /mnt/usr/lib -size 0}} <br />
# Followed by a re-install of any still broken package via {{ic|1=pacman --sysroot /mnt -S ''package''}}.<br />
<br />
=== Manually reinstalling pacman ===<br />
<br />
{{Warning|It is extremely easy to break your system even worse using this approach. Use this only as a last resort if the method from [[#Pacman crashes during an upgrade]] is not an option.}}<br />
<br />
Even if ''pacman'' is terribly broken, you can fix it manually by downloading the latest packages and extracting them to the correct locations. The rough steps to perform are:<br />
<br />
# Determine the {{pkg|pacman}} dependencies to install<br />
# Download each package from a [[mirror]] of your choice<br />
# Extract each package to root<br />
# Reinstall these packages with {{ic|pacman -S --overwrite}} to update the package database accordingly<br />
# Do a full system upgrade<br />
<br />
If you have a healthy Arch system on hand, you can see the full list of dependencies with:<br />
<br />
$ pacman -Q $(pactree -u pacman)<br />
<br />
But you may only need to update a few of them depending on your issue. An example of extracting a package is<br />
<br />
# tar -xvpwf ''package.tar.xz'' -C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO<br />
<br />
Note the use of the {{ic|w}} flag for interactive mode. Running non-interactively is very risky since you might end up overwriting an important file. Also take care to extract packages in the correct order (i.e. dependencies first). [https://bbs.archlinux.org/viewtopic.php?id=95007 This forum post] contains an example of this process where only a couple ''pacman'' dependencies are broken.<br />
<br />
=== "Unable to find root device" error after rebooting ===<br />
<br />
Most likely the [[initramfs]] became corrupted during a [[kernel]] update (improper use of ''pacman'''s {{ic|--overwrite}} option can be a cause). There are two options; first, try the ''Fallback'' entry.<br />
<br />
{{Tip|In case you removed the ''Fallback'' entry, you can always press the {{ic|Tab}} key when the boot loader menu shows up (for Syslinux) or {{ic|e}} (for GRUB or systemd-boot), rename it {{ic|initramfs-linux-fallback.img}} and press {{ic|Enter}} or {{ic|b}} (depending on your [[boot loader]]) to boot with the new parameters.}}<br />
<br />
Once the system starts, run this command (for the stock {{Pkg|linux}} kernel) either from the console or from a terminal to rebuild the initramfs image:<br />
<br />
# mkinitcpio -p linux<br />
<br />
If that does not work, from a current Arch release (CD/DVD or USB stick), [[mount]] your root and boot partitions. Then [[chroot]] using ''arch-chroot'':<br />
<br />
# arch-chroot /mnt<br />
# pacman -Syu mkinitcpio systemd linux<br />
<br />
{{Note|<br />
* If you do not have a current release or if you only have some other "live" Linux distribution laying around, you can [[chroot]] using the old fashioned way. Obviously, there will be more typing than simply running the {{ic|arch-chroot}} script.<br />
* If ''pacman'' fails with {{ic|Could not resolve host}}, please [[Network configuration#Check the connection|check your internet connection]].<br />
* If you cannot enter the arch-chroot or chroot environment but need to re-install packages you can use the command {{ic|pacman --sysroot /mnt -Syu foo bar}} to use ''pacman'' on your root partition.}}<br />
<br />
Reinstalling the kernel (the {{Pkg|linux}} package) will automatically re-generate the initramfs image with {{ic|mkinitcpio -p linux}}. There is no need to do this separately.<br />
<br />
Afterwards, it is recommended that you run {{ic|exit}}, {{ic|umount /mnt/{boot,} }} and {{ic|reboot}}.<br />
<br />
=== Signature from "User <email@example.org>" is unknown trust, installation failed ===<br />
<br />
Potential solutions:<br />
* Update the known keys, i.e. {{ic|pacman-key --refresh-keys}}<br />
* Manually upgrade {{Pkg|archlinux-keyring}} package first, i.e. {{ic|pacman -Sy archlinux-keyring && pacman -Su}}<br />
* Follow [[pacman-key#Resetting all the keys]]<br />
<br />
=== Request on importing PGP keys ===<br />
<br />
If installing Arch with an outdated ISO, you are likely prompted to import PGP keys. Agree to download the key to proceed. If you are unable to add the PGP key successfully, update the keyring or upgrade {{Pkg|archlinux-keyring}} (see [[#Signature from "User <email@example.org>" is unknown trust, installation failed|above]]).<br />
<br />
=== Error: key "0123456789ABCDEF" could not be looked up remotely ===<br />
<br />
If packages are signed with new keys, which were only recently added to {{Pkg|archlinux-keyring}}, these keys are not locally available during update (chicken-egg-problem). The installed {{Pkg|archlinux-keyring}} does not contain the key, until it is updated. Pacman tries to bypass this by a lookup through a key-server, which might not be possible e.g. behind proxys or firewalls and results in the stated error. Upgrade {{Pkg|archlinux-keyring}} first as shown [[#Signature from "User <email@example.org>" is unknown trust, installation failed|above]].<br />
<br />
=== Signature from "User <email@archlinux.org>" is invalid, installation failed ===<br />
<br />
When the system time is faulty, signing keys are considered expired (or invalid) and signature checks on packages will fail with the following error:<br />
<br />
error: ''package'': signature from "User <email@archlinux.org>" is invalid<br />
error: failed to commit transaction (invalid or corrupted package (PGP signature))<br />
Errors occured, no packages were upgraded.<br />
<br />
Make sure to correct the [[system time]], for example with {{ic|ntpd -qg}} run as root, and run {{ic|hwclock -w}} as root before subsequent installations or upgrades.<br />
<br />
=== "Warning: current locale is invalid; using default "C" locale" error ===<br />
<br />
As the error message says, your locale is not correctly configured. See [[Locale]].<br />
<br />
=== Pacman does not honor proxy settings ===<br />
<br />
Make sure that the relevant environment variables ({{ic|$http_proxy}}, {{ic|$ftp_proxy}} etc.) are set up. If you use ''pacman'' with [[sudo]], you need to configure sudo to [[sudo#Environment variables|pass these environment variables to pacman]]. Also, ensure the configuration of [[GnuPG#Use_a_keyserver|dirmngr]] has {{ic|honor-http-proxy}} in {{ic|/etc/pacman.d/gnupg/dirmngr.conf}} to honor the proxy when refreshing the keys.<br />
<br />
=== How do I reinstall all packages, retaining information on whether something was explicitly installed or as a dependency? ===<br />
<br />
To reinstall all the native packages: {{ic|pacman -Qnq {{!}} pacman -S -}} or {{ic|pacman -S $(pacman -Qnq)}} (the {{ic|-S}} option preserves the installation reason by default).<br />
<br />
You will then need to reinstall all the foreign packages, which can be listed with {{ic|pacman -Qmq}}.<br />
<br />
=== "Cannot open shared object file" error ===<br />
<br />
It looks like previous ''pacman'' transaction removed or corrupted shared libraries needed for ''pacman'' itself.<br />
<br />
To recover from this situation you need to unpack required libraries to your filesystem manually. First find what package contains the missed library and then locate it in the ''pacman'' cache ({{ic|/var/cache/pacman/pkg/}}). Unpack required shared library to the filesystem. This will allow to run ''pacman''.<br />
<br />
Now you need to [[#Installing specific packages|reinstall]] the broken package. Note that you need to use {{ic|--overwrite}} flag as you just unpacked system files and ''pacman'' does not know about it. ''Pacman'' will correctly replace our shared library file with one from package.<br />
<br />
That's it. Update the rest of the system.<br />
<br />
=== Freeze of package downloads ===<br />
<br />
Some issues have been reported regarding network problems that prevent ''pacman'' from updating/synchronizing repositories. [https://bbs.archlinux.org/viewtopic.php?id&#61;68944] [https://bbs.archlinux.org/viewtopic.php?id&#61;65728] When installing Arch Linux natively, these issues have been resolved by replacing the default ''pacman'' file downloader with an alternative (see [[Improve pacman performance]] for more details). When installing Arch Linux as a guest OS in [[VirtualBox]], this issue has also been addressed by using ''Host interface'' instead of ''NAT'' in the machine properties.<br />
<br />
=== Failed retrieving file 'core.db' from mirror ===<br />
<br />
If you receive this error message with correct [[mirrors]], try setting a different [[Resolv.conf|name server]].<br />
<br />
=== error: 'local-package.pkg.tar': permission denied ===<br />
<br />
If you want to install a package on an sshfs mount using {{ic|pacman -U}} and receive this error, move the package to a local directory and try to install again.<br />
<br />
=== Partial upgrade ===<br />
<br />
{{Warning|1=I don't know what could go wrong, I just know it worked for me. Proceed with caution.}}<br />
<br />
If you run a [[System_maintenance#Partial_upgrades_are_unsupported|partial upgrade]] you can try running the following command.<br />
<br />
# pacman -Syyu --overwrite '*'<br />
<br />
== Understanding ==<br />
<br />
=== What happens during package install/upgrade/removal ===<br />
<br />
{{Accuracy|1=From [https://bbs.archlinux.org/viewtopic.php?pid=1775592 the forum], may be incomplete/incorrect so far. Move above [[#Troubleshooting]] or even inside [[#Installing packages]]?}}<br />
<br />
When successfully completing a package transaction, ''pacman'' performs the following high-level steps:<br />
<br />
# ''pacman'' obtains the to-be installed package file for all packages queued in a transaction.<br />
# ''pacman'' performs various checks that the packages can likely be installed.<br />
# If pre-existing ''pacman'' {{ic|PreTransaction}} hooks apply, they are executed.<br />
# Each package is installed/upgraded/removed in turn.<br />
## If the package has an install script, its {{ic|pre_install}} function is executed (or {{ic|pre_upgrade}} or {{ic|pre_remove}} in the case of an upgraded or removed package).<br />
## ''pacman'' deletes all the files from a pre-existing version of the package (in the case of an upgraded or removed package). However, files that were marked as configuration files in the package are kept (see [[Pacman/Pacnew and Pacsave]]).<br />
## ''pacman'' untars the package and dumps its files into the file system (in the case of an installed or upgraded package). Files that would overwrite kept, and manually modified, configuration files (see previous step), are stored with a new name (.pacnew).<br />
## If the package has an install script, its {{ic|post_install}} function is executed (or {{ic|post_upgrade}} or {{ic|post_remove}} in the case of an upgraded or removed package).<br />
# If ''pacman'' {{ic|PostTransaction}} hooks that exist at the end of the transaction apply, they are executed.<br />
<br />
== See also ==<br />
<br />
* [https://www.archlinux.org/pacman/ Pacman Home Page]<br />
* {{man|3|libalpm}}<br />
* {{man|8|pacman}}<br />
* {{man|5|pacman.conf}}<br />
* {{man|8|repo-add}}</div>Electric26https://wiki.archlinux.org/index.php?title=Steam/Troubleshooting&diff=622395Steam/Troubleshooting2020-06-27T19:38:40Z<p>Electric26: am dumb</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam/トラブルシューティング]]<br />
== Introduction ==<br />
<br />
# Make sure that you have followed [[Steam#Installation]].<br />
# If the Steam client / a game is not starting and/or you have error message about a library, read [[#Steam runtime]] and see [[#Debugging shared libraries]].<br />
# If the issue is related to networking, make sure that you have forwarded the [https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711 required ports for Steam].<br />
# If the issue is about a game, consult [[Steam/Game-specific troubleshooting]].<br />
<br />
=== Relevant online resources ===<br />
<br />
* [https://bbs.archlinux.org/viewforum.php?id=32 Multimedia and Games / Arch Linux Forums]<br />
* [https://github.com/ValveSoftware/steam-for-linux ValveSoftware/steam-for-linux] – Issue tracking for the Steam for Linux client<br />
* [https://steamcommunity.com/ Steam Community discussions of the game]<br />
* [https://help.steampowered.com/en/ Steam Support FAQ]<br />
<br />
== Steam runtime ==<br />
<br />
Steam for Linux ships with its own set of libraries called the [https://github.com/ValveSoftware/steam-runtime Steam runtime]. By default Steam launches all Steam Applications within the runtime environment.<br />
The Steam runtime is located at {{ic|~/.steam/root/ubuntu12_32/steam-runtime/}}.<br />
<br />
If you mix the Steam runtime libraries with system libraries you will run into binary incompatibility issues, see [https://github.com/ValveSoftware/steam-for-linux/issues/4768 steam-for-linux issue #4768].<br />
Binary incompatibility can lead to the Steam client and games not starting (manifesting as a crash, as hanging or silently returning), audio issues and various other problems.<br />
<br />
The {{Pkg|steam}} package offers three ways to launch Steam:<br />
<br />
* {{ic|steam-runtime}} (alias {{ic|steam}}), which overrides runtime libraries known to cause problems via the {{ic|LD_PRELOAD}} [[environment variable]] (see {{man|8|ld.so}}).<br />
* {{ic|steam-native}}, see [[#Steam native runtime]]<br />
* {{ic|/usr/lib/steam/steam}}, the default Steam launch script<br />
<br />
As the Steam runtime libraries are older they can lack newer features, e.g. the OpenAL version of the Steam runtime lacks [[Gaming#Binaural_Audio_with_OpenAL|HRTF]] and surround71 support.<br />
<br />
=== Steam native runtime ===<br />
<br />
{{Warning|Using the Steam native runtime is not recommended as it might break some games due to binary incompatibility and it might miss some libraries present in the Steam runtime.}}<br />
<br />
The {{ic|steam-native}} script launches Steam with the {{ic|1=STEAM_RUNTIME=0}} environment variable making it ignore its runtime and only use system libraries.<br />
<br />
The {{Pkg|steam-native-runtime}} meta package depends on over 120 packages to pose a native replacement of the Steam runtime, some games may however still require additional packages. You can also use the Steam native runtime without {{Pkg|steam-native-runtime}} by manually installing just the packages you need. See [[#Finding missing runtime libraries]].<br />
<br />
== Debugging shared libraries ==<br />
<br />
To see the shared libraries required by a program or a shared library run the {{ic|ldd}} command on it, see {{man|1|ldd}}. The {{ic|LD_LIBRARY_PATH}} and {{ic|LD_PRELOAD}} [[environment variables]] can alter which shared libraries are loaded, see {{man|8|ld.so}}. <br />
To correctly debug a program or shared library it is therefore important that these environment variables in your debug environment match the environment you wish to debug.<br />
<br />
If you figure out a missing library you can use [[pacman]] or [[pkgfile]] to search for packages that contain the missing library.<br />
<br />
=== Finding missing game libraries ===<br />
<br />
If a game fails to start, a possible reason is that it is missing required libraries. You can find out what libraries it requests by running {{ic|ldd ''game_executable''}}. {{ic|''game_executable''}} is likely located somewhere in {{ic|~/.steam/root/steamapps/common/}}. Please note that most of these "missing" libraries are actually already included with Steam, and do not need to be installed globally.<br />
<br />
=== Finding missing runtime libraries ===<br />
<br />
If individual games or Steam itself is failing to launch when using {{ic|steam-native}} you are probably missing libraries. To find the required libraries run:<br />
<br />
$ cd ~/.steam/root/ubuntu12_32<br />
$ file * | grep ELF | cut -d: -f1 | LD_LIBRARY_PATH=. xargs ldd | grep 'not found' | sort | uniq<br />
<br />
Alternatively, run Steam with {{ic|steam-runtime}} and use the following command to see which non-system libraries Steam is using (not all of these are part of the Steam runtime):<br />
<br />
$ for i in $(pgrep steam); do sed '/\.local/!d;s/.* //g' /proc/$i/maps; done | sort | uniq<br />
<br />
== Debugging Steam ==<br />
<br />
The Steam launcher redirects its stdout and stderr to {{ic|/tmp/dumps/''USER''_stdout.txt}}.<br />
This means you do not have to run Steam from the command-line to see that output.<br />
<br />
It is possible to debug Steam to gain more information which could be useful to find out why something does not work.<br />
<br />
You can set {{ic|DEBUGGER}} environment variable with one of {{ic|gdb}}, {{ic|cgdb}}, {{ic|valgrind}}, {{ic|callgrind}}, {{ic|strace}} and then start {{ic|steam}}.<br />
<br />
For example with {{Pkg|gdb}}<br />
{{bc|1=$ DEBUGGER=gdb steam}}<br />
<br />
{{ic|gdb}} will open, then type {{ic|run}} which will start {{ic|steam}} and once crash happens you can type {{ic|backtrace}} to see call stack.<br />
<br />
== Runtime issues ==<br />
<br />
=== Segmentation fault when disabling runtime ===<br />
<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3863 steam-for-linux issue #3863]<br />
<br />
As per the bug report above, Steam crashes with the following error message when run with {{ic|1=STEAM_RUNTIME=0}}:<br />
<br />
/home/''USER''/.local/share/Steam/steam.sh: line 756: <variable numeric code> Segmentation fault (core dumped)<br />
<br />
This happens because {{ic|steamclient.so}} is linked to {{ic|libudev.so.0}} ({{AUR|lib32-libudev0}}{{Broken package link|package not found}}) which conflicts with {{ic|libudev.so.1}} ({{Pkg|lib32-systemd}}).<br />
<br />
A proposed workaround is to copy Steam's packaged 32-bit versions of libusb and libgudev to {{ic|/usr/lib32}}:<br />
<br />
# cp ~/.steam/root/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libgudev* /usr/lib32<br />
# cp ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libusb* /usr/lib32<br />
<br />
Notice that the workaround is necessary because the bug affects systems with lib32-libgudev and lib32-libusb installed.<br />
<br />
Alternatively it has been successful to prioritize the loading of the libudev.so.1 (see [https://github.com/ValveSoftware/steam-for-linux/issues/3863#issuecomment-203929113 comment on the same issue]):<br />
{{bc|1=$ LD_PRELOAD=/usr/lib32/libudev.so.1 STEAM_RUNTIME=0 steam}}<br />
<br />
=== 'GLBCXX_3.X.XX' not found when using Bumblebee ===<br />
<br />
This error is likely caused because Steam packages its own out of date {{ic|libstdc++.so.6}}. See [[#Finding missing runtime libraries]] about working around the bad library. See also [https://github.com/ValveSoftware/steam-for-linux/issues/3773 steam-for-linux issue 3773].<br />
<br />
=== Game crashes immediately ===<br />
<br />
This is likely due to [[#Steam runtime]] issues, see [[#Debugging shared libraries]].<br />
<br />
Disabling the in-game Steam Overlay in the game properties might help.<br />
<br />
And finally, if those don't work, you should check Steam's output for any error from the game. You may encounter the following:<br />
* {{ic|munmap_chunk(): invalid pointer}}<br />
* {{ic|free(): invalid pointer}}<br />
<br />
In these cases, try replacing the {{ic|libsteam_api.so}} file from the problematic game with one of a game that works. This error usually happens for games that were not updated recently when Steam runtime is disabled. This error has been encountered with AYIM, Bastion and Monaco.<br />
<br />
=== Game and Steam crashes after game start ===<br />
If the following error is output:<br />
failed to dlopen engine.so error=/home/''GAMEPATH''/bin/libgcc_s.so.1: version `GCC_7.0.0' not found (required by /usr/lib32/libopenal.so.1)<br />
<br />
moving the incompatible lib can be a workaround.<br />
mv .local/share/Steam/steamapps/common/''GAME''/bin/libgcc_s.so.1 .local/share/Steam/steamapps/common/''GAME''/bin/libgcc_s.so.1.b<br />
<br />
=== Version `CURL_OPENSSL_3` not found ===<br />
<br />
This is because {{Pkg|curl}} alone is not compatible with previous versions. You need to install the compatibility libraries:<br />
<br />
One of the following messages may show up:<br />
<br />
# Nuclear Throne<br />
./nuclearthrone: /usr/lib32/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./nuclearthrone)<br />
<br />
# Devil Daggers<br />
./devildaggers: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./devildaggers)<br />
<br />
You need to install either {{Pkg|libcurl-compat}} or {{Pkg|lib32-libcurl-compat}} and link the compatibility library manually:<br />
<br />
# Nuclear Throne<br />
$ ln -s /usr/lib32/libcurl-compat.so.4.4.0 "''LIBRARY''/steamapps/common/Nuclear Throne/lib/libcurl.so.4"<br />
<br />
# Devil Daggers<br />
$ ln -s /usr/lib/libcurl-compat.so.4.4.0 ''LIBRARY''/steamapps/common/devildaggers/lib64/libcurl.so.4<br />
<br />
=== Steam webview/game browser not working in native runtime (Black screen) ===<br />
Since the new Steam Friends UI update, the client webview isn't working correctly with the native-runtime.<br />
<br />
./steamwebhelper: error while loading shared libraries: libpcre.so.3: cannot open shared object file: No such file or directory<br />
It can be solved preloading glib libraries; Those don't require libpcre and selinux to work.<br />
<br />
$ LD_PRELOAD="/usr/lib/libgio-2.0.so.0 /usr/lib/libglib-2.0.so.0" steam-native<br />
<br />
Alternatively, you may create a symbolic link to the native Arch libpcre library.<br />
<br />
# ln -s /usr/lib/libpcre.so /usr/lib64/libpcre.so.3<br />
<br />
=== Steam: An X Error occurred ===<br />
When using an NVidia GPU and proprietary drivers, Steam may fail to start and (if run from the terminal) produce errors of the form:<br />
<br />
Steam: An X Error occurred<br />
X Error of failed request: GLXBadContext<br />
Major opcode of failed request: 151<br />
Serial number of failed request: 51<br />
xerror_handler: X failed, continuing<br />
<br />
Install the package {{Pkg|lib32-nvidia-utils}} (or {{AUR|lib32-nvidia-390xx-utils}} if using an old GPU).<br />
<br />
== Audio issues ==<br />
<br />
If the sections below do not address the issue, using the [[#Steam native runtime]] might help.<br />
<br />
=== Configure PulseAudio ===<br />
<br />
Games that explicitly depend on ALSA can break PulseAudio. Follow the directions for [[PulseAudio#ALSA]] to make these games use PulseAudio instead.<br />
<br />
=== No audio or 756 Segmentation fault ===<br />
<br />
First [[#Configure PulseAudio]] and see if that resolves the issue. If you do not have audio in the videos which play within the Steam client, it is possible that the ALSA libraries packaged with Steam are not working.<br />
<br />
Attempting to playback a video within the steam client results in an error similar to:<br />
<br />
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave<br />
<br />
A workaround is to rename or delete the {{ic|alsa-lib}} folder and the {{ic|libasound.so.*}} files. They can be found at:<br />
<br />
~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/<br />
<br />
An alternative workaround is to add the {{ic|libasound.so.*}} library to the {{ic|LD_PRELOAD}} environment variable:<br />
<br />
LD_PRELOAD='/usr/$LIB/libasound.so.2 '${LD_PRELOAD} steam<br />
<br />
If audio still won't work, adding the Pulseaudio-libs to the {{ic|LD_PRELOAD}} variable may help:<br />
<br />
LD_PRELOAD='/usr/$LIB/libpulse.so.0 /usr/$LIB/libpulse-simple.so.0 '${LD_PRELOAD}<br />
<br />
Be advised that their names may change over time. If so, it is necessary to take a look in <br />
<br />
~/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu<br />
<br />
and find the new libraries and their versions.<br />
<br />
Bugs reports have been filed: [https://github.com/ValveSoftware/steam-for-linux/issues/3376 #3376] and [https://github.com/ValveSoftware/steam-for-linux/issues/3504 #3504]<br />
<br />
=== FMOD sound engine ===<br />
{{Accuracy|No source / bug report.}}<br />
<br />
The [https://www.fmod.com/ FMOD] audio middleware package is a bit buggy, and as a result games using it may have sound problems.<br />
<br />
It usually occurs when an unused sound device is used as default for ALSA. See [[Advanced Linux Sound Architecture#Set the default sound card]].<br />
<br />
:Affected games: Hotline Miami, Hotline Miami 2, Transistor<br />
<br />
=== PulseAudio & OpenAL: Audio streams can't be moved between devices ===<br />
<br />
If you use [[PulseAudio]] and cannot move an audio stream between sinks, it might be because recent OpenAL versions default to disallow audio streams from being moved. Try to add the following to your {{ic|~/.alsoftrc}}:<br />
<br />
[pulse]<br />
allow-moves=true<br />
<br />
== Steam client issues ==<br />
<br />
=== Cannot add library folder because of missing execute permissions ===<br />
<br />
If you add another Steam library folder on another drive, you might get the error message:<br />
<br />
New Steam library folder must be on a filesystem mounted with execute permissions<br />
<br />
Make sure you are mounting the filesystem with the correct flags in your {{ic|/etc/fstab}}, usually by adding {{ic|exec}} to the list of mount parameter. The parameter must occur after any {{ic|user}} or {{ic|users}} parameter since these can imply {{ic|noexec}}.<br />
<br />
This error might also occur if your library folder does not contain a {{ic|steamapps}} directory. Previous versions used {{ic|SteamApps}} instead, so ensure the name is fully lowercase.<br />
<br />
This error can also occur because of Steam runtime issues and may be fixed following the [[#Finding missing runtime libraries]] section or due to no space being left on the device. For debugging purposes it might be useful to run Steam from the console and observe the log.<br />
<br />
=== Unusually slow download speed ===<br />
<br />
If your Steam apps (games, software…) download speed through the client is unusually slow, but browsing the Steam store and streaming videos is unaffected, installing a DNS cache program, such as [[dnsmasq]] can help [https://steamcommunity.com/app/221410/discussions/2/616189106498372437/].<br />
<br />
Something else that might help would be disabling [[IPv6]][https://github.com/ValveSoftware/steam-for-linux/issues/6126].<br />
<br />
=== "Needs to be online" error ===<br />
If the Steam launcher refuses to start and you get an error saying: "''Fatal Error: Steam needs to be online to update''" while you are online, then there might be issues with name resolving. <br />
<br />
Try to install {{Pkg|lib32-libcurl-compat}} or {{Pkg|nss-mdns}} or {{Pkg|lib32-nss}}.<br />
<br />
This may also be as simple as DNS resolution not correctly working and is not always obvious since modern browsers will user their own DNS servers. A possible fix if you didn't follow all the directions from the resolved wiki article. Make sure /run/systemd/resolve/resolv.conf contains name servers as expected:<br />
<br />
cat /run/systemd/resolve/resolv.conf<br />
<br />
Create the symbolic link (the -f option will force overwrite any current file):<br />
<br />
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf<br />
<br />
=== Steam forgets password ===<br />
<br />
:Related: [https://github.com/ValveSoftware/steam-for-linux/issues/5030 steam-for-linux#5030]<br />
Steam for Linux has a bug which causes it to forget the password of some users.<br />
<br />
As a workaround, after logging in to Steam, run<br />
$ chmod -w ~/.steam/registry.vdf<br />
This will make the file read-only so Steam cannot modify it, and thus not log you out.<br />
<br />
=== Preventing crash memory dumps ===<br />
<br />
Every time Steam crashes, it writes a memory dump to {{ic|/tmp/dumps/}}. If Steam falls into a crash loop, the dump files can become quite large. When {{ic|/tmp}} is mounted as [[tmpfs]], memory and swap file can be consumed needlessly.<br />
<br />
To prevent this, link {{ic|/tmp/dumps/}} to {{ic|/dev/null}}:<br />
# ln -s /dev/null /tmp/dumps<br />
<br />
Or alternatively, create and modify permissions on {{ic|/tmp/dumps}}. Then Steam will be unable to write dump files to the directory.<br />
<br />
# mkdir /tmp/dumps<br />
# chmod 600 /tmp/dumps<br />
<br />
This also has the added benefit of Steam not uploading these dumps to Valve's servers.<br />
<br />
=== Steam license problem with playing videos ===<br />
<br />
Steam uses [[w:Widevine|Google's Widevine DRM]] for some videos. If it is not installed you will get the following error:<br />
<br />
This video requires a license to play which cannot be retrieved. This may be a temporary network condition. Please restart the video to try again.<br />
<br />
To solve this issue follow the [https://support.steampowered.com/kb_article.php?ref=8699-OASD-1871#15 ''Streaming Videos on Steam'' support page].<br />
<br />
=== No context menu for joining/inviting friends ===<br />
<br />
Since the new Steam Friends UI update, it may be the case that in the right-click menu the entries for "Join Game", "Invite to Game" and "View Game Info" are missing.<br />
<br />
In order to fix this, it maybe be necessary to install {{Pkg|lsof}}.<br />
<br />
=== Slow and unresponsive user interface ===<br />
<br />
If you experience extremely slow and sluggish performance when using the Steam client it might help to disable the option "Enable GPU accelerated rendering in web views" under the "Interface" tab in the Steam client settings.<br />
<br />
=== Steam fails to start correctly ===<br />
<br />
One troubleshooting step is to run <br />
<br />
# steam-runtime --reset<br />
<br />
This can fix various issues that come with a broken install.<br />
<br />
== Steam Remote Play issues ==<br />
<br />
See [[Steam#Steam Remote Play]].<br />
<br />
=== Remote Play does not work from Arch Linux host to Arch Linux guest ===<br />
<br />
Chances are you are missing {{Pkg|lib32-libcanberra}}. Once you [[install]] that, it should work as expected.<br />
<br />
With that, Steam should no longer crash when trying to launch a game through Remote Play.<br />
<br />
=== Hardware decoding not available ===<br />
<br />
Remote Play hardware decoding uses {{ic|vaapi}}, but steam requires {{ic|libva2_32bit}}, where as Arch defaults to 64bit.<br />
<br />
As a basic set, this is {{Pkg|libva}} and {{Pkg|lib32-libva}}. Intel graphics users will also require both {{Pkg|libva-intel-driver}} and {{Pkg|lib32-libva-intel-driver}}. <br />
<br />
For more information about vaapi see [[hardware video acceleration]].<br />
<br />
It may also be necessary to remove the steam runtime version of libva, in order to force it to use system libraries. The current library in use can be found by using:<br />
<br />
pgrep steam | xargs -I {} cat /proc/{}/maps | grep libva<br />
<br />
If this shows locations in {{ic|~/.local/Share/steam}} steam is still using it's packaged version of libva. This can be rectified by deleting the libva library files at {{ic|~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libva*}}, so that steam falls back to the system libraries.<br />
<br />
=== Big Picture Mode minimizes itself after losing focus ===<br />
<br />
This can occur when you play a game via Remote Play or if you have a multi-monitor setup and move the mouse outside of BPM's window. To prevent this, set the following environment variable and restart Steam<br />
<br />
export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0<br />
<br />
See also the [https://github.com/ValveSoftware/steam-for-linux/issues/4769 steam-for-linux issue 4769].<br />
<br />
== Other issues ==<br />
<br />
=== Steam Library in NTFS partition ===<br />
<br />
If your Steam library resides in NTFS partition it is probable that games residing there could not start.<br />
<br />
The trouble is that Wine uses a colon in it's $WINE_PREFIX/dosdevices folder, and NTFS seems to have trouble supporting this.<br />
<br />
Workaround: move the 'steamapps/common/Proton 3.7' and 'steamapps/compatdata' to a non-NTFS drive, then create symbolic link in their original locations.<br />
<br />
$ mv SteamLibrary/steamapps/common/Proton\ 3.7 /home/user/dir/<br />
$ mv SteamLibrary/steamapps/compatdata /home/user/dir/<br />
$ ln -s /home/user/dir/Proton\ 3.7/ SteamLibrary/steamapps/common/Proton\ 3.7<br />
$ ln -s /home/user/dir/compatdata/ SteamLibrary/steamapps/common/compatdata<br />
<br />
=== Wrong ELF class ===<br />
<br />
If you see this message in Steam's console output<br />
<br />
ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.<br />
<br />
you can safely ignore it. It is not really any error: Steam includes both 64- and 32-bit versions of some libraries and only one version will load successfully. This "error" is displayed even when Steam (and the in-game overlay) is working perfectly.<br />
<br />
=== Multiple monitors setup ===<br />
{{Expansion|Is this Nvidia-only? Can this be reproduced by anyone? Is there an upstream report?}}<br />
A setup with multiple monitors may prevent games from starting. Try to disable all additional displays, and then run a game. You can enable them after the game successfully started. <br />
<br />
Also you can try running Steam with this environment variable set:<br />
<br />
export LD_LIBRARY_PATH=/usr/lib32/nvidia:/usr/lib/nvidia:$LD_LIBRARY_PATH<br />
<br />
=== Text is corrupt or missing ===<br />
<br />
The Steam Support [https://support.steampowered.com/kb_article.php?ref=1974-YFKL-4947 instructions] for Windows seem to work on Linux also.<br />
<br />
You can install them via the {{AUR|steam-fonts}} package, or manually by downloading and [[fonts#Manual installation|installing]] [https://support.steampowered.com/downloads/1974-YFKL-4947/SteamFonts.zip SteamFonts.zip].<br />
<br />
{{Note|When steam cannot find the Arial fonts, font-config likes to fall back onto the Helveticia bitmap font. Steam does not render this and possibly other bitmap fonts correctly, so either removing problem fonts or [[Font configuration#Disable bitmap fonts|disabling bitmap fonts]] will most likely fix the issue without installing the Arial or ArialBold fonts.<br />
<br />
The font being used in place of Arial can be found with the command {{bc|$ fc-match -v Arial}}}}<br />
<br />
=== SetLocale('en_US.UTF-8') fails at game startup or typing non-ASCII characters does not work in the Steam client ===<br />
<br />
You need to generate the {{ic|en_US.UTF-8 UTF-8}} locale. See [[Locale#Generating locales]].<br />
<br />
=== Missing libc ===<br />
<br />
This could be due to a corrupt Steam executable. Check the output of:<br />
<br />
$ ldd ~/.local/share/Steam/ubuntu12_32/steam<br />
<br />
Should {{ic|ldd}} claim that it is not a dynamic executable, then Steam likely corrupted the binary during an update. The following should fix the issue:<br />
<br />
$ cd ~/.local/share/Steam/<br />
$ ./steam.sh --reset<br />
<br />
If it doesn't, try to delete the {{ic|~/.local/share/Steam/}} directory and launch Steam again, telling it to reinstall itself.<br />
<br />
This error message can also occur due to a bug in Steam which occurs when your {{ic|$HOME}} directory ends in a slash (Valve GitHub [https://github.com/ValveSoftware/steam-for-linux/issues/3730 issue 3730]). This can be fixed by editing {{ic|/etc/passwd}} and changing {{ic|/home/<username>/}} to {{ic|home/<username>}}, then logging out and in again. Afterwards, Steam should repair itself automatically.<br />
<br />
=== Games do not launch on older Intel hardware ===<br />
<br />
:[https://steamcommunity.com/app/8930/discussions/1/540744299927655197/ source]<br />
<br />
On older Intel hardware which doesn't support OpenGL 3, such as Intel GMA chips or Westmere CPUs, games may immediately crash when run. It appears as a {{ic|gameoverlayrenderer.so}} error in {{ic|/tmp/dumps/mobile_stdout.txt}}, but looking in {{ic|/tmp/gameoverlayrenderer.log}} it shows a GLXBadFBConfig error. <br />
<br />
This can be fixed, by forcing the game to use a later version of OpenGL than it wants.<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140}} to your [[launch option]]s.<br />
<br />
=== Mesa: Game does not launch, complaining about OpenGL version supported by the card ===<br />
<br />
Some games are badly programmed, to use any OpenGL version above 3.0.<br />
With Mesa, an application has to request a specific core profile.<br />
If it doesn't make such a request, only OpenGL 3.0 and lower are available.<br />
<br />
This can be fixed, by forcing the game to use a version of OpenGL it actually needs.<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1 MESA_GLSL_VERSION_OVERRIDE=410}} to your [[launch option]]s.<br />
<br />
=== 2K games do not run on XFS partitions ===<br />
<br />
{{Expansion|Seems to be a general issue, e.g. [https://github.com/ValveSoftware/Source-1-Games/issues/1685]}}<br />
<br />
If you are running 2K games such as Civilization 5 on [[XFS]] partitions, then the game may not start or run properly due to how the game loads files as it starts.<br />
[https://bbs.archlinux.org/viewtopic.php?id=185222]<br />
<br />
=== Steam controller not being detected correctly ===<br />
<br />
See [[Gamepad#Steam Controller]].<br />
<br />
=== Steam controller makes a game crash ===<br />
<br />
See [[Gamepad#Steam Controller makes a game crash or not recognized]].<br />
<br />
=== Steam hangs on "Installing breakpad exception handler..." ===<br />
<br />
[https://bbs.archlinux.org/viewtopic.php?id=177245 BBS#177245]<br />
<br />
You have an Nvidia GPU and Steam has the following output:<br />
<br />
Running Steam on arch rolling 64-bit<br />
STEAM_RUNTIME is enabled automatically<br />
Installing breakpad exception handler for appid(steam)/version(0_client)<br />
<br />
Then nothing else happens. Ensure you have the correct drivers installed as well as their 32-bit versions (the 64-bit and 32-bit variants have to have the same versions): see [[NVIDIA#Installation]].<br />
<br />
=== Killing standalone compositors when launching games ===<br />
<br />
Further to this, utilising the {{ic|%command%}} switch, you can kill standalone compositors (such as Xcompmgr or [[Compton]]) - which can cause lag and tearing in some games on some systems - and relaunch them after the game ends by adding the following to your game's launch options.<br />
<br />
killall compton && %command%; compton -b &<br />
<br />
Replace {{ic|compton}} in the above command with whatever your compositor is. You can also add -options to {{ic|%command%}} or {{ic|compton}}, of course.<br />
<br />
Steam will latch on to any processes launched after {{ic|%command%}} and your Steam status will show as in game. So in this example, we run the compositor through {{ic|nohup}} so it is not attached to Steam (it will keep running if you close Steam) and follow it with an ampersand so that the line of commands ends, clearing your Steam status.<br />
<br />
=== Symbol lookup error using DRI3 ===<br />
<br />
Steam outputs this error and exits.<br />
<br />
symbol lookup error: /usr/lib/libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds<br />
<br />
To work around this, run Steam with {{ic|1=LIBGL_DRI3_DISABLE=1}}, disabling DRI3 for Steam.<br />
<br />
=== Launching games on Nvidia optimus laptops ===<br />
<br />
To be able to play games which require using Nvidia GPU (for example, Hitman 2016) on optimus enabled laptop, you should start game with ''primusrun'' prefix in launch options. Otherwise, game will not work.<br />
<br />
Find the game in steam library, right click -> Properties -> SET LAUNCH OPTIONS. Change options to<br />
<br />
{{ic|1=primusrun %command%}}<br />
<br />
Running steam with primusrum used to work. While steam has changed some behavior that now running steam with primusrun would not have effect on launching games. As a result, you need to set launch options for each game (and you do NOT have to run steam with primusrun).<br />
<br />
For primusrun, VSYNC is enabled by default it could result in a mouse input delay lag, slightly decrease performance and in-game FPS might be locked to a refresh rate of a monitor/display.<br />
In order to disable VSYNC for primusrun default value of option vblank_mode needs to be overridden by environment variable.<br />
<br />
{{ic|1=vblank_mode=0 primusrun %command%}}<br />
<br />
Same with optirun that uses primus as a bridge. <br />
<br />
{{ic|1=vblank_mode=0 optirun -b primus %command%}}<br />
<br />
If that did not work try:<br />
<br />
{{ic|1=LD_PRELOAD="libpthread.so.0 libGL.so.1" __GL_THREADED_OPTIMIZATIONS=1 optirun %command%}}<br />
<br />
For more details see [[Bumblebee#Primusrun mouse delay (disable VSYNC)]].<br />
<br />
=== HiDPI ===<br />
[[HiDPI]] support should work out of the box, although on some systems it is necessary to [[HiDPI#Steam|force it]] setting the {{ic|1=GDK_SCALE=}} environment variable to set the desired scale factor.<br />
<br />
=== Protocol support under KDE Plasma ===<br />
If you are getting an error after running a game through web browser ''(or executing the link through xdg-open)''<br />
Error — KIOExec <br />
File not found: steam://run/440<br />
Go to '''System Settings -> Applications -> File Associations''', add new, select {{ic|inode}} group and name it {{ic|vnd.kde.service.steam}}, then under '''Application Preference Order''' you have to add Steam. Apply changes, It should be working now.</div>Electric26https://wiki.archlinux.org/index.php?title=Steam/Troubleshooting&diff=622394Steam/Troubleshooting2020-06-27T19:37:43Z<p>Electric26: merged 2 commands for easier copy and pasting & so you don't need to cd back to home dir</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam/トラブルシューティング]]<br />
== Introduction ==<br />
<br />
# Make sure that you have followed [[Steam#Installation]].<br />
# If the Steam client / a game is not starting and/or you have error message about a library, read [[#Steam runtime]] and see [[#Debugging shared libraries]].<br />
# If the issue is related to networking, make sure that you have forwarded the [https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711 required ports for Steam].<br />
# If the issue is about a game, consult [[Steam/Game-specific troubleshooting]].<br />
<br />
=== Relevant online resources ===<br />
<br />
* [https://bbs.archlinux.org/viewforum.php?id=32 Multimedia and Games / Arch Linux Forums]<br />
* [https://github.com/ValveSoftware/steam-for-linux ValveSoftware/steam-for-linux] – Issue tracking for the Steam for Linux client<br />
* [https://steamcommunity.com/ Steam Community discussions of the game]<br />
* [https://help.steampowered.com/en/ Steam Support FAQ]<br />
<br />
== Steam runtime ==<br />
<br />
Steam for Linux ships with its own set of libraries called the [https://github.com/ValveSoftware/steam-runtime Steam runtime]. By default Steam launches all Steam Applications within the runtime environment.<br />
The Steam runtime is located at {{ic|~/.steam/root/ubuntu12_32/steam-runtime/}}.<br />
<br />
If you mix the Steam runtime libraries with system libraries you will run into binary incompatibility issues, see [https://github.com/ValveSoftware/steam-for-linux/issues/4768 steam-for-linux issue #4768].<br />
Binary incompatibility can lead to the Steam client and games not starting (manifesting as a crash, as hanging or silently returning), audio issues and various other problems.<br />
<br />
The {{Pkg|steam}} package offers three ways to launch Steam:<br />
<br />
* {{ic|steam-runtime}} (alias {{ic|steam}}), which overrides runtime libraries known to cause problems via the {{ic|LD_PRELOAD}} [[environment variable]] (see {{man|8|ld.so}}).<br />
* {{ic|steam-native}}, see [[#Steam native runtime]]<br />
* {{ic|/usr/lib/steam/steam}}, the default Steam launch script<br />
<br />
As the Steam runtime libraries are older they can lack newer features, e.g. the OpenAL version of the Steam runtime lacks [[Gaming#Binaural_Audio_with_OpenAL|HRTF]] and surround71 support.<br />
<br />
=== Steam native runtime ===<br />
<br />
{{Warning|Using the Steam native runtime is not recommended as it might break some games due to binary incompatibility and it might miss some libraries present in the Steam runtime.}}<br />
<br />
The {{ic|steam-native}} script launches Steam with the {{ic|1=STEAM_RUNTIME=0}} environment variable making it ignore its runtime and only use system libraries.<br />
<br />
The {{Pkg|steam-native-runtime}} meta package depends on over 120 packages to pose a native replacement of the Steam runtime, some games may however still require additional packages. You can also use the Steam native runtime without {{Pkg|steam-native-runtime}} by manually installing just the packages you need. See [[#Finding missing runtime libraries]].<br />
<br />
== Debugging shared libraries ==<br />
<br />
To see the shared libraries required by a program or a shared library run the {{ic|ldd}} command on it, see {{man|1|ldd}}. The {{ic|LD_LIBRARY_PATH}} and {{ic|LD_PRELOAD}} [[environment variables]] can alter which shared libraries are loaded, see {{man|8|ld.so}}. <br />
To correctly debug a program or shared library it is therefore important that these environment variables in your debug environment match the environment you wish to debug.<br />
<br />
If you figure out a missing library you can use [[pacman]] or [[pkgfile]] to search for packages that contain the missing library.<br />
<br />
=== Finding missing game libraries ===<br />
<br />
If a game fails to start, a possible reason is that it is missing required libraries. You can find out what libraries it requests by running {{ic|ldd ''game_executable''}}. {{ic|''game_executable''}} is likely located somewhere in {{ic|~/.steam/root/steamapps/common/}}. Please note that most of these "missing" libraries are actually already included with Steam, and do not need to be installed globally.<br />
<br />
=== Finding missing runtime libraries ===<br />
<br />
If individual games or Steam itself is failing to launch when using {{ic|steam-native}} you are probably missing libraries. To find the required libraries run:<br />
<br />
$ file ~/.steam/root/ubuntu12_32/* | grep ELF | cut -d: -f1 | LD_LIBRARY_PATH=. xargs ldd | grep 'not found' | sort | uniq<br />
<br />
Alternatively, run Steam with {{ic|steam-runtime}} and use the following command to see which non-system libraries Steam is using (not all of these are part of the Steam runtime):<br />
<br />
$ for i in $(pgrep steam); do sed '/\.local/!d;s/.* //g' /proc/$i/maps; done | sort | uniq<br />
<br />
== Debugging Steam ==<br />
<br />
The Steam launcher redirects its stdout and stderr to {{ic|/tmp/dumps/''USER''_stdout.txt}}.<br />
This means you do not have to run Steam from the command-line to see that output.<br />
<br />
It is possible to debug Steam to gain more information which could be useful to find out why something does not work.<br />
<br />
You can set {{ic|DEBUGGER}} environment variable with one of {{ic|gdb}}, {{ic|cgdb}}, {{ic|valgrind}}, {{ic|callgrind}}, {{ic|strace}} and then start {{ic|steam}}.<br />
<br />
For example with {{Pkg|gdb}}<br />
{{bc|1=$ DEBUGGER=gdb steam}}<br />
<br />
{{ic|gdb}} will open, then type {{ic|run}} which will start {{ic|steam}} and once crash happens you can type {{ic|backtrace}} to see call stack.<br />
<br />
== Runtime issues ==<br />
<br />
=== Segmentation fault when disabling runtime ===<br />
<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3863 steam-for-linux issue #3863]<br />
<br />
As per the bug report above, Steam crashes with the following error message when run with {{ic|1=STEAM_RUNTIME=0}}:<br />
<br />
/home/''USER''/.local/share/Steam/steam.sh: line 756: <variable numeric code> Segmentation fault (core dumped)<br />
<br />
This happens because {{ic|steamclient.so}} is linked to {{ic|libudev.so.0}} ({{AUR|lib32-libudev0}}{{Broken package link|package not found}}) which conflicts with {{ic|libudev.so.1}} ({{Pkg|lib32-systemd}}).<br />
<br />
A proposed workaround is to copy Steam's packaged 32-bit versions of libusb and libgudev to {{ic|/usr/lib32}}:<br />
<br />
# cp ~/.steam/root/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libgudev* /usr/lib32<br />
# cp ~/.steam/root/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libusb* /usr/lib32<br />
<br />
Notice that the workaround is necessary because the bug affects systems with lib32-libgudev and lib32-libusb installed.<br />
<br />
Alternatively it has been successful to prioritize the loading of the libudev.so.1 (see [https://github.com/ValveSoftware/steam-for-linux/issues/3863#issuecomment-203929113 comment on the same issue]):<br />
{{bc|1=$ LD_PRELOAD=/usr/lib32/libudev.so.1 STEAM_RUNTIME=0 steam}}<br />
<br />
=== 'GLBCXX_3.X.XX' not found when using Bumblebee ===<br />
<br />
This error is likely caused because Steam packages its own out of date {{ic|libstdc++.so.6}}. See [[#Finding missing runtime libraries]] about working around the bad library. See also [https://github.com/ValveSoftware/steam-for-linux/issues/3773 steam-for-linux issue 3773].<br />
<br />
=== Game crashes immediately ===<br />
<br />
This is likely due to [[#Steam runtime]] issues, see [[#Debugging shared libraries]].<br />
<br />
Disabling the in-game Steam Overlay in the game properties might help.<br />
<br />
And finally, if those don't work, you should check Steam's output for any error from the game. You may encounter the following:<br />
* {{ic|munmap_chunk(): invalid pointer}}<br />
* {{ic|free(): invalid pointer}}<br />
<br />
In these cases, try replacing the {{ic|libsteam_api.so}} file from the problematic game with one of a game that works. This error usually happens for games that were not updated recently when Steam runtime is disabled. This error has been encountered with AYIM, Bastion and Monaco.<br />
<br />
=== Game and Steam crashes after game start ===<br />
If the following error is output:<br />
failed to dlopen engine.so error=/home/''GAMEPATH''/bin/libgcc_s.so.1: version `GCC_7.0.0' not found (required by /usr/lib32/libopenal.so.1)<br />
<br />
moving the incompatible lib can be a workaround.<br />
mv .local/share/Steam/steamapps/common/''GAME''/bin/libgcc_s.so.1 .local/share/Steam/steamapps/common/''GAME''/bin/libgcc_s.so.1.b<br />
<br />
=== Version `CURL_OPENSSL_3` not found ===<br />
<br />
This is because {{Pkg|curl}} alone is not compatible with previous versions. You need to install the compatibility libraries:<br />
<br />
One of the following messages may show up:<br />
<br />
# Nuclear Throne<br />
./nuclearthrone: /usr/lib32/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./nuclearthrone)<br />
<br />
# Devil Daggers<br />
./devildaggers: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./devildaggers)<br />
<br />
You need to install either {{Pkg|libcurl-compat}} or {{Pkg|lib32-libcurl-compat}} and link the compatibility library manually:<br />
<br />
# Nuclear Throne<br />
$ ln -s /usr/lib32/libcurl-compat.so.4.4.0 "''LIBRARY''/steamapps/common/Nuclear Throne/lib/libcurl.so.4"<br />
<br />
# Devil Daggers<br />
$ ln -s /usr/lib/libcurl-compat.so.4.4.0 ''LIBRARY''/steamapps/common/devildaggers/lib64/libcurl.so.4<br />
<br />
=== Steam webview/game browser not working in native runtime (Black screen) ===<br />
Since the new Steam Friends UI update, the client webview isn't working correctly with the native-runtime.<br />
<br />
./steamwebhelper: error while loading shared libraries: libpcre.so.3: cannot open shared object file: No such file or directory<br />
It can be solved preloading glib libraries; Those don't require libpcre and selinux to work.<br />
<br />
$ LD_PRELOAD="/usr/lib/libgio-2.0.so.0 /usr/lib/libglib-2.0.so.0" steam-native<br />
<br />
Alternatively, you may create a symbolic link to the native Arch libpcre library.<br />
<br />
# ln -s /usr/lib/libpcre.so /usr/lib64/libpcre.so.3<br />
<br />
=== Steam: An X Error occurred ===<br />
When using an NVidia GPU and proprietary drivers, Steam may fail to start and (if run from the terminal) produce errors of the form:<br />
<br />
Steam: An X Error occurred<br />
X Error of failed request: GLXBadContext<br />
Major opcode of failed request: 151<br />
Serial number of failed request: 51<br />
xerror_handler: X failed, continuing<br />
<br />
Install the package {{Pkg|lib32-nvidia-utils}} (or {{AUR|lib32-nvidia-390xx-utils}} if using an old GPU).<br />
<br />
== Audio issues ==<br />
<br />
If the sections below do not address the issue, using the [[#Steam native runtime]] might help.<br />
<br />
=== Configure PulseAudio ===<br />
<br />
Games that explicitly depend on ALSA can break PulseAudio. Follow the directions for [[PulseAudio#ALSA]] to make these games use PulseAudio instead.<br />
<br />
=== No audio or 756 Segmentation fault ===<br />
<br />
First [[#Configure PulseAudio]] and see if that resolves the issue. If you do not have audio in the videos which play within the Steam client, it is possible that the ALSA libraries packaged with Steam are not working.<br />
<br />
Attempting to playback a video within the steam client results in an error similar to:<br />
<br />
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave<br />
<br />
A workaround is to rename or delete the {{ic|alsa-lib}} folder and the {{ic|libasound.so.*}} files. They can be found at:<br />
<br />
~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/<br />
<br />
An alternative workaround is to add the {{ic|libasound.so.*}} library to the {{ic|LD_PRELOAD}} environment variable:<br />
<br />
LD_PRELOAD='/usr/$LIB/libasound.so.2 '${LD_PRELOAD} steam<br />
<br />
If audio still won't work, adding the Pulseaudio-libs to the {{ic|LD_PRELOAD}} variable may help:<br />
<br />
LD_PRELOAD='/usr/$LIB/libpulse.so.0 /usr/$LIB/libpulse-simple.so.0 '${LD_PRELOAD}<br />
<br />
Be advised that their names may change over time. If so, it is necessary to take a look in <br />
<br />
~/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu<br />
<br />
and find the new libraries and their versions.<br />
<br />
Bugs reports have been filed: [https://github.com/ValveSoftware/steam-for-linux/issues/3376 #3376] and [https://github.com/ValveSoftware/steam-for-linux/issues/3504 #3504]<br />
<br />
=== FMOD sound engine ===<br />
{{Accuracy|No source / bug report.}}<br />
<br />
The [https://www.fmod.com/ FMOD] audio middleware package is a bit buggy, and as a result games using it may have sound problems.<br />
<br />
It usually occurs when an unused sound device is used as default for ALSA. See [[Advanced Linux Sound Architecture#Set the default sound card]].<br />
<br />
:Affected games: Hotline Miami, Hotline Miami 2, Transistor<br />
<br />
=== PulseAudio & OpenAL: Audio streams can't be moved between devices ===<br />
<br />
If you use [[PulseAudio]] and cannot move an audio stream between sinks, it might be because recent OpenAL versions default to disallow audio streams from being moved. Try to add the following to your {{ic|~/.alsoftrc}}:<br />
<br />
[pulse]<br />
allow-moves=true<br />
<br />
== Steam client issues ==<br />
<br />
=== Cannot add library folder because of missing execute permissions ===<br />
<br />
If you add another Steam library folder on another drive, you might get the error message:<br />
<br />
New Steam library folder must be on a filesystem mounted with execute permissions<br />
<br />
Make sure you are mounting the filesystem with the correct flags in your {{ic|/etc/fstab}}, usually by adding {{ic|exec}} to the list of mount parameter. The parameter must occur after any {{ic|user}} or {{ic|users}} parameter since these can imply {{ic|noexec}}.<br />
<br />
This error might also occur if your library folder does not contain a {{ic|steamapps}} directory. Previous versions used {{ic|SteamApps}} instead, so ensure the name is fully lowercase.<br />
<br />
This error can also occur because of Steam runtime issues and may be fixed following the [[#Finding missing runtime libraries]] section or due to no space being left on the device. For debugging purposes it might be useful to run Steam from the console and observe the log.<br />
<br />
=== Unusually slow download speed ===<br />
<br />
If your Steam apps (games, software…) download speed through the client is unusually slow, but browsing the Steam store and streaming videos is unaffected, installing a DNS cache program, such as [[dnsmasq]] can help [https://steamcommunity.com/app/221410/discussions/2/616189106498372437/].<br />
<br />
Something else that might help would be disabling [[IPv6]][https://github.com/ValveSoftware/steam-for-linux/issues/6126].<br />
<br />
=== "Needs to be online" error ===<br />
If the Steam launcher refuses to start and you get an error saying: "''Fatal Error: Steam needs to be online to update''" while you are online, then there might be issues with name resolving. <br />
<br />
Try to install {{Pkg|lib32-libcurl-compat}} or {{Pkg|nss-mdns}} or {{Pkg|lib32-nss}}.<br />
<br />
This may also be as simple as DNS resolution not correctly working and is not always obvious since modern browsers will user their own DNS servers. A possible fix if you didn't follow all the directions from the resolved wiki article. Make sure /run/systemd/resolve/resolv.conf contains name servers as expected:<br />
<br />
cat /run/systemd/resolve/resolv.conf<br />
<br />
Create the symbolic link (the -f option will force overwrite any current file):<br />
<br />
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf<br />
<br />
=== Steam forgets password ===<br />
<br />
:Related: [https://github.com/ValveSoftware/steam-for-linux/issues/5030 steam-for-linux#5030]<br />
Steam for Linux has a bug which causes it to forget the password of some users.<br />
<br />
As a workaround, after logging in to Steam, run<br />
$ chmod -w ~/.steam/registry.vdf<br />
This will make the file read-only so Steam cannot modify it, and thus not log you out.<br />
<br />
=== Preventing crash memory dumps ===<br />
<br />
Every time Steam crashes, it writes a memory dump to {{ic|/tmp/dumps/}}. If Steam falls into a crash loop, the dump files can become quite large. When {{ic|/tmp}} is mounted as [[tmpfs]], memory and swap file can be consumed needlessly.<br />
<br />
To prevent this, link {{ic|/tmp/dumps/}} to {{ic|/dev/null}}:<br />
# ln -s /dev/null /tmp/dumps<br />
<br />
Or alternatively, create and modify permissions on {{ic|/tmp/dumps}}. Then Steam will be unable to write dump files to the directory.<br />
<br />
# mkdir /tmp/dumps<br />
# chmod 600 /tmp/dumps<br />
<br />
This also has the added benefit of Steam not uploading these dumps to Valve's servers.<br />
<br />
=== Steam license problem with playing videos ===<br />
<br />
Steam uses [[w:Widevine|Google's Widevine DRM]] for some videos. If it is not installed you will get the following error:<br />
<br />
This video requires a license to play which cannot be retrieved. This may be a temporary network condition. Please restart the video to try again.<br />
<br />
To solve this issue follow the [https://support.steampowered.com/kb_article.php?ref=8699-OASD-1871#15 ''Streaming Videos on Steam'' support page].<br />
<br />
=== No context menu for joining/inviting friends ===<br />
<br />
Since the new Steam Friends UI update, it may be the case that in the right-click menu the entries for "Join Game", "Invite to Game" and "View Game Info" are missing.<br />
<br />
In order to fix this, it maybe be necessary to install {{Pkg|lsof}}.<br />
<br />
=== Slow and unresponsive user interface ===<br />
<br />
If you experience extremely slow and sluggish performance when using the Steam client it might help to disable the option "Enable GPU accelerated rendering in web views" under the "Interface" tab in the Steam client settings.<br />
<br />
=== Steam fails to start correctly ===<br />
<br />
One troubleshooting step is to run <br />
<br />
# steam-runtime --reset<br />
<br />
This can fix various issues that come with a broken install.<br />
<br />
== Steam Remote Play issues ==<br />
<br />
See [[Steam#Steam Remote Play]].<br />
<br />
=== Remote Play does not work from Arch Linux host to Arch Linux guest ===<br />
<br />
Chances are you are missing {{Pkg|lib32-libcanberra}}. Once you [[install]] that, it should work as expected.<br />
<br />
With that, Steam should no longer crash when trying to launch a game through Remote Play.<br />
<br />
=== Hardware decoding not available ===<br />
<br />
Remote Play hardware decoding uses {{ic|vaapi}}, but steam requires {{ic|libva2_32bit}}, where as Arch defaults to 64bit.<br />
<br />
As a basic set, this is {{Pkg|libva}} and {{Pkg|lib32-libva}}. Intel graphics users will also require both {{Pkg|libva-intel-driver}} and {{Pkg|lib32-libva-intel-driver}}. <br />
<br />
For more information about vaapi see [[hardware video acceleration]].<br />
<br />
It may also be necessary to remove the steam runtime version of libva, in order to force it to use system libraries. The current library in use can be found by using:<br />
<br />
pgrep steam | xargs -I {} cat /proc/{}/maps | grep libva<br />
<br />
If this shows locations in {{ic|~/.local/Share/steam}} steam is still using it's packaged version of libva. This can be rectified by deleting the libva library files at {{ic|~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libva*}}, so that steam falls back to the system libraries.<br />
<br />
=== Big Picture Mode minimizes itself after losing focus ===<br />
<br />
This can occur when you play a game via Remote Play or if you have a multi-monitor setup and move the mouse outside of BPM's window. To prevent this, set the following environment variable and restart Steam<br />
<br />
export SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0<br />
<br />
See also the [https://github.com/ValveSoftware/steam-for-linux/issues/4769 steam-for-linux issue 4769].<br />
<br />
== Other issues ==<br />
<br />
=== Steam Library in NTFS partition ===<br />
<br />
If your Steam library resides in NTFS partition it is probable that games residing there could not start.<br />
<br />
The trouble is that Wine uses a colon in it's $WINE_PREFIX/dosdevices folder, and NTFS seems to have trouble supporting this.<br />
<br />
Workaround: move the 'steamapps/common/Proton 3.7' and 'steamapps/compatdata' to a non-NTFS drive, then create symbolic link in their original locations.<br />
<br />
$ mv SteamLibrary/steamapps/common/Proton\ 3.7 /home/user/dir/<br />
$ mv SteamLibrary/steamapps/compatdata /home/user/dir/<br />
$ ln -s /home/user/dir/Proton\ 3.7/ SteamLibrary/steamapps/common/Proton\ 3.7<br />
$ ln -s /home/user/dir/compatdata/ SteamLibrary/steamapps/common/compatdata<br />
<br />
=== Wrong ELF class ===<br />
<br />
If you see this message in Steam's console output<br />
<br />
ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.<br />
<br />
you can safely ignore it. It is not really any error: Steam includes both 64- and 32-bit versions of some libraries and only one version will load successfully. This "error" is displayed even when Steam (and the in-game overlay) is working perfectly.<br />
<br />
=== Multiple monitors setup ===<br />
{{Expansion|Is this Nvidia-only? Can this be reproduced by anyone? Is there an upstream report?}}<br />
A setup with multiple monitors may prevent games from starting. Try to disable all additional displays, and then run a game. You can enable them after the game successfully started. <br />
<br />
Also you can try running Steam with this environment variable set:<br />
<br />
export LD_LIBRARY_PATH=/usr/lib32/nvidia:/usr/lib/nvidia:$LD_LIBRARY_PATH<br />
<br />
=== Text is corrupt or missing ===<br />
<br />
The Steam Support [https://support.steampowered.com/kb_article.php?ref=1974-YFKL-4947 instructions] for Windows seem to work on Linux also.<br />
<br />
You can install them via the {{AUR|steam-fonts}} package, or manually by downloading and [[fonts#Manual installation|installing]] [https://support.steampowered.com/downloads/1974-YFKL-4947/SteamFonts.zip SteamFonts.zip].<br />
<br />
{{Note|When steam cannot find the Arial fonts, font-config likes to fall back onto the Helveticia bitmap font. Steam does not render this and possibly other bitmap fonts correctly, so either removing problem fonts or [[Font configuration#Disable bitmap fonts|disabling bitmap fonts]] will most likely fix the issue without installing the Arial or ArialBold fonts.<br />
<br />
The font being used in place of Arial can be found with the command {{bc|$ fc-match -v Arial}}}}<br />
<br />
=== SetLocale('en_US.UTF-8') fails at game startup or typing non-ASCII characters does not work in the Steam client ===<br />
<br />
You need to generate the {{ic|en_US.UTF-8 UTF-8}} locale. See [[Locale#Generating locales]].<br />
<br />
=== Missing libc ===<br />
<br />
This could be due to a corrupt Steam executable. Check the output of:<br />
<br />
$ ldd ~/.local/share/Steam/ubuntu12_32/steam<br />
<br />
Should {{ic|ldd}} claim that it is not a dynamic executable, then Steam likely corrupted the binary during an update. The following should fix the issue:<br />
<br />
$ cd ~/.local/share/Steam/<br />
$ ./steam.sh --reset<br />
<br />
If it doesn't, try to delete the {{ic|~/.local/share/Steam/}} directory and launch Steam again, telling it to reinstall itself.<br />
<br />
This error message can also occur due to a bug in Steam which occurs when your {{ic|$HOME}} directory ends in a slash (Valve GitHub [https://github.com/ValveSoftware/steam-for-linux/issues/3730 issue 3730]). This can be fixed by editing {{ic|/etc/passwd}} and changing {{ic|/home/<username>/}} to {{ic|home/<username>}}, then logging out and in again. Afterwards, Steam should repair itself automatically.<br />
<br />
=== Games do not launch on older Intel hardware ===<br />
<br />
:[https://steamcommunity.com/app/8930/discussions/1/540744299927655197/ source]<br />
<br />
On older Intel hardware which doesn't support OpenGL 3, such as Intel GMA chips or Westmere CPUs, games may immediately crash when run. It appears as a {{ic|gameoverlayrenderer.so}} error in {{ic|/tmp/dumps/mobile_stdout.txt}}, but looking in {{ic|/tmp/gameoverlayrenderer.log}} it shows a GLXBadFBConfig error. <br />
<br />
This can be fixed, by forcing the game to use a later version of OpenGL than it wants.<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140}} to your [[launch option]]s.<br />
<br />
=== Mesa: Game does not launch, complaining about OpenGL version supported by the card ===<br />
<br />
Some games are badly programmed, to use any OpenGL version above 3.0.<br />
With Mesa, an application has to request a specific core profile.<br />
If it doesn't make such a request, only OpenGL 3.0 and lower are available.<br />
<br />
This can be fixed, by forcing the game to use a version of OpenGL it actually needs.<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1 MESA_GLSL_VERSION_OVERRIDE=410}} to your [[launch option]]s.<br />
<br />
=== 2K games do not run on XFS partitions ===<br />
<br />
{{Expansion|Seems to be a general issue, e.g. [https://github.com/ValveSoftware/Source-1-Games/issues/1685]}}<br />
<br />
If you are running 2K games such as Civilization 5 on [[XFS]] partitions, then the game may not start or run properly due to how the game loads files as it starts.<br />
[https://bbs.archlinux.org/viewtopic.php?id=185222]<br />
<br />
=== Steam controller not being detected correctly ===<br />
<br />
See [[Gamepad#Steam Controller]].<br />
<br />
=== Steam controller makes a game crash ===<br />
<br />
See [[Gamepad#Steam Controller makes a game crash or not recognized]].<br />
<br />
=== Steam hangs on "Installing breakpad exception handler..." ===<br />
<br />
[https://bbs.archlinux.org/viewtopic.php?id=177245 BBS#177245]<br />
<br />
You have an Nvidia GPU and Steam has the following output:<br />
<br />
Running Steam on arch rolling 64-bit<br />
STEAM_RUNTIME is enabled automatically<br />
Installing breakpad exception handler for appid(steam)/version(0_client)<br />
<br />
Then nothing else happens. Ensure you have the correct drivers installed as well as their 32-bit versions (the 64-bit and 32-bit variants have to have the same versions): see [[NVIDIA#Installation]].<br />
<br />
=== Killing standalone compositors when launching games ===<br />
<br />
Further to this, utilising the {{ic|%command%}} switch, you can kill standalone compositors (such as Xcompmgr or [[Compton]]) - which can cause lag and tearing in some games on some systems - and relaunch them after the game ends by adding the following to your game's launch options.<br />
<br />
killall compton && %command%; compton -b &<br />
<br />
Replace {{ic|compton}} in the above command with whatever your compositor is. You can also add -options to {{ic|%command%}} or {{ic|compton}}, of course.<br />
<br />
Steam will latch on to any processes launched after {{ic|%command%}} and your Steam status will show as in game. So in this example, we run the compositor through {{ic|nohup}} so it is not attached to Steam (it will keep running if you close Steam) and follow it with an ampersand so that the line of commands ends, clearing your Steam status.<br />
<br />
=== Symbol lookup error using DRI3 ===<br />
<br />
Steam outputs this error and exits.<br />
<br />
symbol lookup error: /usr/lib/libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds<br />
<br />
To work around this, run Steam with {{ic|1=LIBGL_DRI3_DISABLE=1}}, disabling DRI3 for Steam.<br />
<br />
=== Launching games on Nvidia optimus laptops ===<br />
<br />
To be able to play games which require using Nvidia GPU (for example, Hitman 2016) on optimus enabled laptop, you should start game with ''primusrun'' prefix in launch options. Otherwise, game will not work.<br />
<br />
Find the game in steam library, right click -> Properties -> SET LAUNCH OPTIONS. Change options to<br />
<br />
{{ic|1=primusrun %command%}}<br />
<br />
Running steam with primusrum used to work. While steam has changed some behavior that now running steam with primusrun would not have effect on launching games. As a result, you need to set launch options for each game (and you do NOT have to run steam with primusrun).<br />
<br />
For primusrun, VSYNC is enabled by default it could result in a mouse input delay lag, slightly decrease performance and in-game FPS might be locked to a refresh rate of a monitor/display.<br />
In order to disable VSYNC for primusrun default value of option vblank_mode needs to be overridden by environment variable.<br />
<br />
{{ic|1=vblank_mode=0 primusrun %command%}}<br />
<br />
Same with optirun that uses primus as a bridge. <br />
<br />
{{ic|1=vblank_mode=0 optirun -b primus %command%}}<br />
<br />
If that did not work try:<br />
<br />
{{ic|1=LD_PRELOAD="libpthread.so.0 libGL.so.1" __GL_THREADED_OPTIMIZATIONS=1 optirun %command%}}<br />
<br />
For more details see [[Bumblebee#Primusrun mouse delay (disable VSYNC)]].<br />
<br />
=== HiDPI ===<br />
[[HiDPI]] support should work out of the box, although on some systems it is necessary to [[HiDPI#Steam|force it]] setting the {{ic|1=GDK_SCALE=}} environment variable to set the desired scale factor.<br />
<br />
=== Protocol support under KDE Plasma ===<br />
If you are getting an error after running a game through web browser ''(or executing the link through xdg-open)''<br />
Error — KIOExec <br />
File not found: steam://run/440<br />
Go to '''System Settings -> Applications -> File Associations''', add new, select {{ic|inode}} group and name it {{ic|vnd.kde.service.steam}}, then under '''Application Preference Order''' you have to add Steam. Apply changes, It should be working now.</div>Electric26https://wiki.archlinux.org/index.php?title=Unreal_Engine_4&diff=616402Unreal Engine 42020-05-26T17:28:08Z<p>Electric26: fix broken link</p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Gaming]]<br />
[[es:Unreal Engine 4]]<br />
[[fa:Unreal Engine 4]]<br />
[[ja:Unreal Engine 4]]<br />
[[ru:Unreal Engine 4]]<br />
{{Related articles start}}<br />
{{Related|Unreal Tournament 4}}<br />
{{Related articles end}}<br />
<br />
[https://www.unrealengine.com/ Unreal Engine 4] is the latest version of the videogame Engine Created By Epic Games<br />
<br />
The content of this article was originally written on [https://wiki.unrealengine.com/Building_On_Linux#Setting_up_on_Arch_Linux Unreal Engine wiki] and adapted specifically for Arch Linux.<br />
<br />
== Prerequisites ==<br />
<br />
See [https://wiki.unrealengine.com/Recommended_Hardware Recommended Hardware].<br />
<br />
=== Gain access to the source code ===<br />
<br />
The Unreal Engine source code is in a [https://github.com/EpicGames/UnrealEngine private Github repository] requiring free registration with the developer (Epic Games) for access[https://www.unrealengine.com/en-US/ue4-on-github].<br />
<br />
To gain access, login or register at [https://accounts.epicgames.com/login Epic Games Accounts] and provide an accessible GitHub username at the bottom of the Epic Games [https://www.unrealengine.com/dashboard/connected 'Connected Accounts Dashboard'] page. You will then receive an invite to access the private Github repository.<br />
<br />
== Compilation ==<br />
<br />
You can compile manually from a downloaded GitHub release or install from AUR.<br />
<br />
=== Compile manually from source code ===<br />
<br />
You can get [https://github.com/EpicGames/UnrealEngine/releases the most recent releases] on GitHub as zips.<br />
<br />
Setup:<br />
$ ./Setup.sh<br />
<br />
Generate project files:<br />
$ ./GenerateProjectFiles.sh <br />
<br />
Then compile:<br />
$ make -j1<br />
<br />
This will compile the Unreal Engine and the Unreal Editor.<br />
<br />
=== Installing from the AUR ===<br />
<br />
Unreal Engine 4 is available in the [[AUR]] as the {{AUR|unreal-engine}} package. You might have to fix permissions for UE4 to precompile shaders on first launch: {{ic|sudo chmod -R a+rwX /opt/unreal-engine/Engine}}.<br />
<br />
The package is ~70 GiB installed (after compiling shaders on first launch) and needs ~120 GiB to build with an output ABS package of ~9 GiB when compressed. This AUR package downloads ~10 GiB of source files plus ~5 GiB of dependencies.<br />
<br />
Since the repository is private, you can [https://help.github.com/articles/generating-an-ssh-key/ set up an SSH key] so your GitHub account is used to download the source.<br />
<br />
For a smaller download [https://github.com/EpicGames/UnrealEngine/releases you can use .zip releases] as a source for PKGBUILD. Note that this link will not work unless you first follow the steps outlined [[#Gain access to the source code|above]].<br />
<br />
=== Compilation time ===<br />
<br />
The compilation can take from 20 minutes up to a few hours depending on your machine.<br />
As an example on a AMD FX-8350 (8 threads) with 16GB DDR3 on a SSD and Clang 3.8.1 takes roughly 40 minutes. <br />
(This doesn't include shaders compilation)<br />
<br />
== Troubleshooting ==<br />
<br />
=== Compilation problems ===<br />
<br />
If the compilation fails you should try building the Editor using the Debug profile[https://wiki.unrealengine.com/Building_On_Linux#Setting_up_on_Arch_Linux]:<br />
<br />
$ make UE4Editor-Linux-Debug<br />
<br />
However, this might have some performance impact.<br />
<br />
Another approach would be to use different clang version (e.g. 3.8 or 4.0)<br />
<br />
=== Runtime problems ===<br />
<br />
If the editor doesn't start from the menu, or something doesn't work right, start it in a console and check the output for errors.<br />
<br />
$ /opt/unreal-engine/Engine/Binaries/Linux/UE4Editor<br />
<br />
=== C++ code project problems ===<br />
<br />
After creating a code project, the new project opens in a text editor instead of in UE4Editor as it should. After re-launching the editor, the new project shows up and can be opened, but on the first run, it takes a half-hour or so to compile, and since this happens in the background (no GUI) it might not seem to be doing anything. The CPU usage should show that it's still compiling, and you may want to launch the editor from a console to see progress.<br />
<br />
If while trying to open the project in UE for the first time, you get a message about editor modules being out of date, you need to build the {{ic|UE4Editor}} target in your IDE. Do not abort this build, or you will brick UE4 and will need to reinstall {{ic|unreal-engine}}. Afterwards, it will open and ask you to rebuild the project class, after which you can actually start working on your new project.<br />
<br />
Note that completing both of these rebuilds can very well take over an hour, depending on your system specs.<br />
<br />
=== Disable Tooltips ===<br />
<br />
UE4's mouse-over tooltips might be rendered very slow. They can be disabled by adding to <br />
{{hc|head=Engine/Config/ConsoleVariables.ini|output=Slate.AllowToolTips=0}}<br />
<br />
=== Random freeze under KDE ===<br />
Disable index file content in the KDE file search options.<br />
<br />
=== Slow rendered tooltips in KDE ===<br />
Epic suggest to allow compositing for the Unreal Editor, which is stopped by default. Source: https://www.ue4community.wiki/Legacy/Linux_Known_Issues#KDE<br />
<br />
=== Blank window in Blueprint with multi-monitor configuration ===<br />
For fix big blank window go to Edit Preferences -> User interface -> Enable Window Animation and activate the checkbox<br />
<br />
== Additional Content ==<br />
<br />
=== Starter Content ===<br />
<br />
The StarterContent project is installed to /opt/unreal-engine/Samples/StarterContent/StarterContent.uproject, you can browse to it from the launcher.<br />
<br />
=== Marketplace Apps ===<br />
<br />
The launcher with the Unreal Marketplace is not available for Linux yet[https://forums.unrealengine.com/showthread.php?52166-Unreal-launcher-for-linux], so apps like the ContentExamples project cannot be installed from Linux[https://answers.unrealengine.com/questions/301869/download-content-from-marketplace-on-linux.html].<br />
<br />
The marketplace apps can be downloaded using the [https://www.unrealengine.com/download launcher] on Windows (or Mac), they are stored in:<br />
<br />
/Program Files (x86)/Epic Games/Launcher/VaultCache/<br />
<br />
Also there is an implementation of [https://github.com/Allar/ue4-mp-downloader UE4 Marketplace Downloader] written in JS.</div>Electric26