<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.astro.louisville.edu/astrowiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiSysop</id>
	<title>SharedSkies - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.astro.louisville.edu/astrowiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiSysop"/>
	<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php/Special:Contributions/WikiSysop"/>
	<updated>2026-05-21T02:27:11Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1216</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1216"/>
		<updated>2024-04-02T13:17:09Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.5 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy and Stellarium.   We have been using Tumbleweed as well since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Tumbleweed installs Python 3.11. The default system python command in /etc/alternatives. Do not use its pip3 option for installing packages, and instead install them from Yast if the are available.  If not,  the preferred scientific Python solution is to install from source as an end user in your /home directory and build a version that is independent of the operating system&amp;#039;s Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages unless they are needed for system routines (e.g. in an Apache service) but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages could go to the system Python 3.11 for useful code run system-wide.   If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates that will change repositories as needed can be done from the command line &lt;br /&gt;
  &lt;br /&gt;
  zypper dup&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Your own local binary file directory ==&lt;br /&gt;
&lt;br /&gt;
The Unix system resource directory /usr/local with its bin, src, lib, lib64 and other subdirectories is the normal place to drop software that is not available as a package and is used system wide.  There are potential conflicts with identically named code in the system that may be resolved by the PATH environment, and by rename files to be distinctive.  Python installed in /usr/local/bin/ can be especially problematic because it is used for system utilities, and if the system Python is set up to run a virtual environment for an end user who has venv activated, even knowing which Python is running a code can be uncertain.  The preferred solution for our systems is to let any end user install their own versions of software in their personal /home/user/local directory and put the /home/user/local/bin/ directory in their search PATH.  That works for AstroImageJ as well, which can be installed anywhere in a user&amp;#039;s space with a softlink from /home/user/bin or from /home/user/local/bin to the executable &amp;quot;AstroImageJ&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
Some distributions of software source files require fine tuning to compile and install in other than the default directories, notably astrometry.net uses&lt;br /&gt;
&lt;br /&gt;
  make install INSTALL_DIR=/home/user/local/astrometry CFITS_INC=&amp;quot;-I/home/john/local/include&amp;quot; CFITS_LIB=&amp;quot;-L/home/user/local/lib64 -lcfitsio&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for a &amp;quot;user&amp;quot; where cfitsio is also installed in that local directory.  &lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE Tumbleweed (current as of March 2024)  Python-3.11 is installed. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /home/user/local/bin/. You can also set your PATH so that it searches /home/user/local/bin before /usr/bin to circumvent the system version. You can make code in your personal /local/bin readable by other uses if you want to share executable.  This technique may be preferrable to running in a virtual environment using the &amp;quot;venv&amp;quot; option of recent Python3 since it offers the explicit execution of a version with its installed packages, and no possibility of conflict with the system python or its updates.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from OpenSUEnoted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar fil, for example Python-3.11.8.tar.xz and as a normal user create in your home directory a &amp;quot;local&amp;quot; directory with /local/bin and /local/src.  Copy to this /local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure --prefix=/home/user/local/ --exec-prefx=/home/user/local/  where &amp;quot;user&amp;quot; is your user ID on this system.&lt;br /&gt;
&lt;br /&gt;
There may be missing system development packages which this process will reveal.  Simply add them one at a time until you can successfully configure the code and build  with &amp;quot;make&amp;quot; below.  One to look for is &amp;quot;readline&amp;quot;, which is essential for core python and is not packaged with it as a module.&lt;br /&gt;
&lt;br /&gt;
 # The other defaults will be fine.  Your new Python will go into your /user/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test (if in doubt)&lt;br /&gt;
 # make install (running as a user, not as su or root)&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make,  make install again. The in OpenSUSE you must provide a link in the &amp;quot;lib&amp;quot; directory for lib-dynload pointing to the libraries in lib64.  &lt;br /&gt;
&lt;br /&gt;
 # ln -s /home/user/local/lib64/python3.11/lib-dynload/ /home/user/local/lib/python3.11/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in your /local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.11&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3&amp;#039;&amp;#039;. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSUSE for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.11 in Tumbleweed .  Our separately installed python has your /local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with NVidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
Mplayer is no longer recommended because it may not build, or will build with errors even from the most recent source.  Instead, install mpv from the OpenSUSE repository. Use ffmpeg as installed by the most recent version of Tumbleweed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Blender ==&lt;br /&gt;
&lt;br /&gt;
Blender is available in the OpenSUSE archive but as of March 2023 it is the outdated version 2.8.  As a single user, install Blender from its website using the executable package because it comes with all the components and runs flawlessly.  See [https://www.blender.org/download/] for details on version 4.0, current as of March 2024.&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed comes with Pulseaudio and Pipewire installed and working with Bluetooth as well.  Add Audacity for sound editing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conferencing with Zoom  ==&lt;br /&gt;
&lt;br /&gt;
[https://www.zoom.us Zoom] conferencing requires the installation of a package from their website. As root user you would run&lt;br /&gt;
&lt;br /&gt;
  zypper install zoom_openSUSE_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
It may be necessary to ignore the missing or incomplete public key signing.  If a working key is available, then first add it with rpm where &amp;quot;RPM-KEY&amp;quot; is the downloaded key file&lt;br /&gt;
&lt;br /&gt;
  rpm --import RPM-KEY&lt;br /&gt;
&lt;br /&gt;
Zoom provides access to select and control the audio and video sources for your meeting.  Sometimes the audio connections will have to be reviewed since these are automatic.  Pipewire appears to work better than Pulseaudio with Tumbleweed following changes implemented in the distribution in July 2022.&lt;br /&gt;
&lt;br /&gt;
Google Meet works in the Chrome browser.  Microsoft TEAMS has a browser version and a downloadable application.  If you chose to use TEAMS or are required to do so by your institution then consider disabling its default which is to run it whenever you are logged in.  This is controlled by the contents of the hidden directory&lt;br /&gt;
&lt;br /&gt;
  .config/autostart&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
OpenSUSE does not provide the Chrome browser.  To install it follow these steps from the command line as root or sudo&lt;br /&gt;
&lt;br /&gt;
*zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome&lt;br /&gt;
*wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
*rpm --import linux_signing_key.pub&lt;br /&gt;
*zypper ref -f&lt;br /&gt;
*zypper in google-chrome-stable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tight VNC ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed and Leap 15.5 need the the &amp;quot;vncserver&amp;quot; script to start a persistent session with the user&amp;#039;s preferences.  The script may be copied from other recent installations and edited. It is not currently in either Leap or Tumbleweed, but should be available online elsewhere.  The previously distributed script will start a VNC server &lt;br /&gt;
&lt;br /&gt;
Using the one from 15.4, comment out the line&lt;br /&gt;
&lt;br /&gt;
  #$default_opts{rfbwait} = 30000;&lt;br /&gt;
&lt;br /&gt;
which requires a feature of Xvnc that is not included in the 15.5 system.  Also use zypper or YAST to install the package &lt;br /&gt;
&lt;br /&gt;
  xorg-x11-vnc&lt;br /&gt;
&lt;br /&gt;
to implement the TigerVNC version used by the script.&lt;br /&gt;
&lt;br /&gt;
The VNC server uses a configuration file .vnc in the user&amp;#039;s home directory.  Two typical entries are&lt;br /&gt;
&lt;br /&gt;
  geometry=2000x1200&lt;br /&gt;
  localhost&lt;br /&gt;
&lt;br /&gt;
which set the size of the virtual terminal and make the service only available locally for security.  Use SSH to tunnel to this service from the remote user&lt;br /&gt;
&lt;br /&gt;
  ssh -L 5901:localhost:5901 user@remote.site&lt;br /&gt;
&lt;br /&gt;
as an example.&lt;br /&gt;
&lt;br /&gt;
Once the server is running, use TigerVNC from the distribution to access it remotely rather than TightVNC because TigerVNC will interactively adapt to the available screen size if as end user you resize the window on the client.  However, TigerVNC does not have an option to tunnel through SSH, so from the client&lt;br /&gt;
&lt;br /&gt;
ssh -L 5901:localhost:5901 user@server &lt;br /&gt;
&lt;br /&gt;
to create a tunnel and then point the client to the port on which the server has VNC.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1215</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1215"/>
		<updated>2024-03-15T19:46:47Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.5 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy and Stellarium.   We have been using Tumbleweed as well since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Tumbleweed installs Python 3.11. The default system python command in /etc/alternatives. Do not use its pip3 option for installing packages, and instead install them from Yast if the are available.  If not,  the preferred scientific Python solution is to install from source as an end user in your /home directory and build a version that is independent of the operating system&amp;#039;s Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages unless they are needed for system routines (e.g. in an Apache service) but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages could go to the system Python 3.11 for useful code run system-wide.   If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Your own local binary file directory ==&lt;br /&gt;
&lt;br /&gt;
The Unix system resource directory /usr/local with its bin, src, lib, lib64 and other subdirectories is the normal place to drop software that is not available as a package and is used system wide.  There are potential conflicts with identically named code in the system that may be resolved by the PATH environment, and by rename files to be distinctive.  Python installed in /usr/local/bin/ can be especially problematic because it is used for system utilities, and if the system Python is set up to run a virtual environment for an end user who has venv activated, even knowing which Python is running a code can be uncertain.  The preferred solution for our systems is to let any end user install their own versions of softare in their personal /home/user/local directory and but the /home/user/local/bin/ directory in their search PATH.  That works for AstroImageJ as well, which can be installed anywhere in a user&amp;#039;s space with a softlink from /home/user/bin or from /home/user/local/bin to the executable &amp;quot;AstroImageJ&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE Tumbleweed (current as of March 2024)  Python-3.11 is installed. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /home/user/local/bin/. You can also set your PATH so that it searches /home/user/local/bin before /usr/bin to circumvent the system version. You can make code in your personal /local/bin readable by other uses if you want to share executable.  This technique may be preferrable to running in a virtual environment using the &amp;quot;venv&amp;quot; option of recent Python3 since it offers the explicit execution of a version with its installed packages, and no possibility of conflict with the system python or its updates.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from OpenSUEnoted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar fil, for example Python-3.11.8.tar.xz and as a normal user create in your home directory a &amp;quot;local&amp;quot; directory with /local/bin and /local/src.  Copy to this /local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure --prefix=/home/user/local/ --exec-prefx=/home/user/local/  where &amp;quot;user&amp;quot; is your user ID on this system.&lt;br /&gt;
&lt;br /&gt;
There may be missing system development packages which this process will reveal.  Simply add them one at a time until you can successfully configure the code and build  with &amp;quot;make&amp;quot; below.  One to look for is &amp;quot;readline&amp;quot;, which is essential for core python and is not packaged with it as a module.&lt;br /&gt;
&lt;br /&gt;
 # The other defaults will be fine.  Your new Python will go into your /user/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test (if in doubt)&lt;br /&gt;
 # make install (running as a user, not as su or root)&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make,  make install again. The in OpenSUSE you must provide a link in the &amp;quot;lib&amp;quot; directory for lib-dynload pointing to the libraries in lib64.  &lt;br /&gt;
&lt;br /&gt;
 # ln -s /home/user/local/lib64/python3.11/lib-dynload/ /home/user/local/lib/python3.11/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in your /local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.11&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3&amp;#039;&amp;#039;. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSUSE for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.11 in Tumbleweed .  Our separately installed python has your /local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with NVidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
Mplayer is no longer recommended because it may not build, or will build with errors even from the most recent source.  Instead, install mpv from the OpenSUSE repository. Use ffmpeg as installed by the most recent version of Tumbleweed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Blender ==&lt;br /&gt;
&lt;br /&gt;
Blender is available in the OpenSUSE archive but as of March 2023 it is the outdated version 2.8.  As a single user, install Blender from its website using the executable package because it comes with all the components and runs flawlessly.  See [https://www.blender.org/download/] for details on version 4.0, current as of March 2024.&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed comes with Pulseaudio and Pipewire installed and working with Bluetooth as well.  Add Audacity for sound editing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conferencing with Zoom  ==&lt;br /&gt;
&lt;br /&gt;
[https://www.zoom.us Zoom] conferencing requires the installation of a package from their website. As root user you would run&lt;br /&gt;
&lt;br /&gt;
  zypper install zoom_openSUSE_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
It may be necessary to ignore the missing or incomplete public key signing.  If a working key is available, then first add it with rpm where &amp;quot;RPM-KEY&amp;quot; is the downloaded key file&lt;br /&gt;
&lt;br /&gt;
  rpm --import RPM-KEY&lt;br /&gt;
&lt;br /&gt;
Zoom provides access to select and control the audio and video sources for your meeting.  Sometimes the audio connections will have to be reviewed since these are automatic.  Pipewire appears to work better than Pulseaudio with Tumbleweed following changes implemented in the distribution in July 2022.&lt;br /&gt;
&lt;br /&gt;
Google Meet works in the Chrome browser.  Microsoft TEAMS has a browser version and a downloadable application.  If you chose to use TEAMS or are required to do so by your institution then consider disabling its default which is to run it whenever you are logged in.  This is controlled by the contents of the hidden directory&lt;br /&gt;
&lt;br /&gt;
  .config/autostart&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
OpenSUSE does not provide the Chrome browser.  To install it follow these steps from the command line as root or sudo&lt;br /&gt;
&lt;br /&gt;
*zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome&lt;br /&gt;
*wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
*rpm --import linux_signing_key.pub&lt;br /&gt;
*zypper ref -f&lt;br /&gt;
*zypper in google-chrome-stable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tight VNC ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed and Leap 15.5 need the the &amp;quot;vncserver&amp;quot; script to start a persistent session with the user&amp;#039;s preferences.  The script may be copied from other recent installations and edited. It is not currently in either Leap or Tumbleweed, but should be available online elsewhere.  The previously distributed script will start a VNC server &lt;br /&gt;
&lt;br /&gt;
Using the one from 15.4, comment out the line&lt;br /&gt;
&lt;br /&gt;
  #$default_opts{rfbwait} = 30000;&lt;br /&gt;
&lt;br /&gt;
which requires a feature of Xvnc that is not included in the 15.5 system.  Also use zypper or YAST to install the package &lt;br /&gt;
&lt;br /&gt;
  xorg-x11-vnc&lt;br /&gt;
&lt;br /&gt;
to implement the TigerVNC version used by the script.&lt;br /&gt;
&lt;br /&gt;
The VNC server uses a configuration file .vnc in the user&amp;#039;s home directory.  Two typical entries are&lt;br /&gt;
&lt;br /&gt;
  geometry=2000x1200&lt;br /&gt;
  localhost&lt;br /&gt;
&lt;br /&gt;
which set the size of the virtual terminal and make the service only available locally for security.  Use SSH to tunnel to this service from the remote user&lt;br /&gt;
&lt;br /&gt;
  ssh -L 5901:localhost:5901 user@remote.site&lt;br /&gt;
&lt;br /&gt;
as an example.&lt;br /&gt;
&lt;br /&gt;
Once the server is running, use TigerVNC from the distribution to access it remotely rather than TightVNC because TigerVNC will interactively adapt to the available screen size if as end user you resize the window on the client.  However, TigerVNC does not have an option to tunnel through SSH, so from the client&lt;br /&gt;
&lt;br /&gt;
ssh -L 5901:localhost:5901 user@server &lt;br /&gt;
&lt;br /&gt;
to create a tunnel and then point the client to the port on which the server has VNC.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1214</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1214"/>
		<updated>2023-07-21T05:55:44Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.5 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy and Stellarium.   We have been using Tumbleweed as well since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.9.5.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.9/lib-dynload/ /usr/local/lib/python3.9/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
As of July 2022 in Tumbleweed, the PulseAudio packages may not connect to Bluetooth headsets or to USB microphones, and will not work with Zoom (see the following). A solution is to remove PulseAudio if it is installed by default.  Install all the packages for Alsa, and then install the Pipewire  replacement for PulseAudio and Jack.   If the Pavucontrol mixer is missing after these changes, then restore it as well for an audio mixer.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conferencing with Zoom  ==&lt;br /&gt;
&lt;br /&gt;
[https://www.zoom.us Zoom] conferencing requires the installation of a package from their website. As root user you would run&lt;br /&gt;
&lt;br /&gt;
  zypper install zoom_openSUSE_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
It may be necessary to ignore the missing or incomplete public key signing.  If a working key is available, then first add it with rpm where &amp;quot;RPM-KEY&amp;quot; is the downloaded key file&lt;br /&gt;
&lt;br /&gt;
  rpm --import RPM-KEY&lt;br /&gt;
&lt;br /&gt;
Zoom provides access to select and control the audio and video sources for your meeting.  Sometimes the audio connections will have to be reviewed since these are automatic.  Pipewire appears to work better than Pulseaudio with Tumbleweed following changes implemented in the distribution in July 2022.&lt;br /&gt;
&lt;br /&gt;
Google Meet works in the Chrome browser.  Microsoft TEAMS has a browser version and a downloadable application.  If you chose to use TEAMS or are required to do so by your institution then consider disabling its default which is to run it whenever you are logged in.  This is controlled by the contents of the hidden directory&lt;br /&gt;
&lt;br /&gt;
  .config/autostart&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
OpenSUSE does not provide the Chrome browser.  To install it follow these steps from the command line as root or sudo&lt;br /&gt;
&lt;br /&gt;
*zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome&lt;br /&gt;
*wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
*rpm --import linux_signing_key.pub&lt;br /&gt;
*zypper ref -f&lt;br /&gt;
*zypper in google-chrome-stable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tight VNC ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed and Leap 15.5 revised the implementation of VNC such that it uses system management to implement in its default installation.&lt;br /&gt;
Use YaST2 to configure the system so that VNC will start as an option through the GDM (light-dm for xfce4).  &lt;br /&gt;
*YaSt -&amp;gt; Network Services -&amp;gt; Remote Administration (VNC)&lt;br /&gt;
*Check &amp;quot;Allow Remote Administration without Session Management&amp;quot; and deselect browser option since it is insecure&lt;br /&gt;
*In /etc/tigervnc add a file vncserver.users with lines such as &amp;quot;:1=username&amp;quot; so that the port used by a user is unique to that user.&lt;br /&gt;
*Restart the GDM with system restart xdm.service&lt;br /&gt;
*When a remote user accesses the machine with a VNC client on this port, e.g. 5901 for :1, they should be able to connect to a VNC session using the user&amp;#039;s system password.&lt;br /&gt;
Within that session the screen size may be set using xrandr with &amp;quot;xrandr&amp;quot; to see the available geometries and &amp;quot;xrandr -s 1920x1080&amp;quot; to set a preferred geometry.&lt;br /&gt;
*Access through the login and GDM is available only when there is no concurrent session on the console for that users.&lt;br /&gt;
*VNC sessions started in this way are not persistent and will stop when the user logs off. They are not shared.&lt;br /&gt;
*Use vncpasswd to set a user password that will be used for running  a screen copy session that may be shared.&lt;br /&gt;
*From the console start a shared VNC session with &amp;quot;x0vncserver -PasswordFile /home/username/.vnc/passwd&amp;quot; and the system will return information about the session in that console.  Leave that console alone and running to monitor the VNC access.  A remote user not has access to this screen through the port and password which is indicated when the session starts. The session is persistent, but it requires that the xserver&amp;#039;s display for that user remain live.&lt;br /&gt;
*For remote access using secure shell tunneling the most reliable approach is to port forward in SSH from the remote machine with &amp;quot;ssh -L 5901:localhost:5901 user@remote.address&amp;quot; though the TightVNC client has an SSH tunneling option.&lt;br /&gt;
&lt;br /&gt;
Alternatively, use the &amp;quot;vncserver&amp;quot; script to start a persistent session with the user&amp;#039;s preferences.  The script may be copied from other recent installations and edited.  Using the one from 15.4, comment out the line&lt;br /&gt;
&lt;br /&gt;
  #$default_opts{rfbwait} = 30000;&lt;br /&gt;
&lt;br /&gt;
which requires a feature of Xvnc that is not included in the 15.5 system.  Also use zypper or YAST to install the package &lt;br /&gt;
&lt;br /&gt;
  xorg-x11-vnc&lt;br /&gt;
&lt;br /&gt;
to implement the TigerVNC version used by the script.&lt;br /&gt;
&lt;br /&gt;
The VNC server uses a configuration file .vnc in the user&amp;#039;s home directory.  Two typical entries are&lt;br /&gt;
&lt;br /&gt;
  geometry=2000x1200&lt;br /&gt;
  localhost&lt;br /&gt;
&lt;br /&gt;
which set the size of the virtual terminal and make the service only available locally for security.  Use SSH to tunnel to this service from the remote user&lt;br /&gt;
&lt;br /&gt;
  ssh -L 5901:localhost:5901 user@remote.site&lt;br /&gt;
&lt;br /&gt;
as an example.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1213</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1213"/>
		<updated>2023-07-21T05:48:41Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.5 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy and Stellarium.   We have been using Tumbleweed as well since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.9.5.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.9/lib-dynload/ /usr/local/lib/python3.9/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
As of July 2022 in Tumbleweed, the PulseAudio packages may not connect to Bluetooth headsets or to USB microphones, and will not work with Zoom (see the following). A solution is to remove PulseAudio if it is installed by default.  Install all the packages for Alsa, and then install the Pipewire  replacement for PulseAudio and Jack.   If the Pavucontrol mixer is missing after these changes, then restore it as well for an audio mixer.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conferencing with Zoom  ==&lt;br /&gt;
&lt;br /&gt;
[https://www.zoom.us Zoom] conferencing requires the installation of a package from their website. As root user you would run&lt;br /&gt;
&lt;br /&gt;
  zypper install zoom_openSUSE_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
It may be necessary to ignore the missing or incomplete public key signing.  If a working key is available, then first add it with rpm where &amp;quot;RPM-KEY&amp;quot; is the downloaded key file&lt;br /&gt;
&lt;br /&gt;
  rpm --import RPM-KEY&lt;br /&gt;
&lt;br /&gt;
Zoom provides access to select and control the audio and video sources for your meeting.  Sometimes the audio connections will have to be reviewed since these are automatic.  Pipewire appears to work better than Pulseaudio with Tumbleweed following changes implemented in the distribution in July 2022.&lt;br /&gt;
&lt;br /&gt;
Google Meet works in the Chrome browser.  Microsoft TEAMS has a browser version and a downloadable application.  If you chose to use TEAMS or are required to do so by your institution then consider disabling its default which is to run it whenever you are logged in.  This is controlled by the contents of the hidden directory&lt;br /&gt;
&lt;br /&gt;
  .config/autostart&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
OpenSUSE does not provide the Chrome browser.  To install it follow these steps from the command line as root or sudo&lt;br /&gt;
&lt;br /&gt;
*zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome&lt;br /&gt;
*wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
*rpm --import linux_signing_key.pub&lt;br /&gt;
*zypper ref -f&lt;br /&gt;
*zypper in google-chrome-stable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tight VNC ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed and Leap 15.5 revised the implementation of VNC such that it uses system management to implement in its default installation.&lt;br /&gt;
Use YaST2 to configure the system so that VNC will start as an option through the GDM (light-dm for xfce4).  &lt;br /&gt;
*YaSt -&amp;gt; Network Services -&amp;gt; Remote Administration (VNC)&lt;br /&gt;
*Check &amp;quot;Allow Remote Administration without Session Management&amp;quot; and deselect browser option since it is insecure&lt;br /&gt;
*In /etc/tigervnc add a file vncserver.users with lines such as &amp;quot;:1=username&amp;quot; so that the port used by a user is unique to that user.&lt;br /&gt;
*Restart the GDM with system restart xdm.service&lt;br /&gt;
*When a remote user accesses the machine with a VNC client on this port, e.g. 5901 for :1, they should be able to connect to a VNC session using the user&amp;#039;s system password.&lt;br /&gt;
Within that session the screen size may be set using xrandr with &amp;quot;xrandr&amp;quot; to see the available geometries and &amp;quot;xrandr -s 1920x1080&amp;quot; to set a preferred geometry.&lt;br /&gt;
*Access through the login and GDM is available only when there is no concurrent session on the console for that users.&lt;br /&gt;
*VNC sessions started in this way are not persistent and will stop when the user logs off. They are not shared.&lt;br /&gt;
*Use vncpasswd to set a user password that will be used for running  a screen copy session that may be shared.&lt;br /&gt;
*From the console start a shared VNC session with &amp;quot;x0vncserver -PasswordFile /home/username/.vnc/passwd&amp;quot; and the system will return information about the session in that console.  Leave that console alone and running to monitor the VNC access.  A remote user not has access to this screen through the port and password which is indicated when the session starts. The session is persistent, but it requires that the xserver&amp;#039;s display for that user remain live.&lt;br /&gt;
*For remote access using secure shell tunneling the most reliable approach is to port forward in SSH from the remote machine with &amp;quot;ssh -L 5901:localhost:5901 user@remote.address&amp;quot; though the TightVNC client has an SSH tunneling option.&lt;br /&gt;
&lt;br /&gt;
Alternatively, use the &amp;quot;vncserver&amp;quot; script to start a persistent session with the user&amp;#039;s preferences.  The script may be copied from other recent installations and edited.  Using the one from 15.4, comment out the line&lt;br /&gt;
&lt;br /&gt;
  #$default_opts{rfbwait} = 30000;&lt;br /&gt;
&lt;br /&gt;
which requires a feature of Xvnc that is not included in the 15.5 system.  Also use zypper or YAST to install the package &lt;br /&gt;
&lt;br /&gt;
  xorg-x11-vnc&lt;br /&gt;
&lt;br /&gt;
to implement the TigerVNC version used by the script.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1212</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1212"/>
		<updated>2022-08-04T06:06:25Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Conferencing with Zoom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.4 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been using Tumbleweed since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.9.5.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.9/lib-dynload/ /usr/local/lib/python3.9/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
As of July 2022 in Tumbleweed, the PulseAudio packages may not connect to Bluetooth headsets or to USB microphones, and will not work with Zoom (see the following). A solution is to remove PulseAudio if it is installed by default.  Install all the packages for Alsa, and then install the Pipewire  replacement for PulseAudio and Jack.   If the Pavucontrol mixer is missing after these changes, then restore it as well for an audio mixer.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conferencing with Zoom  ==&lt;br /&gt;
&lt;br /&gt;
[https://www.zoom.us Zoom] conferencing requires the installation of a package from their website. As root user you would run&lt;br /&gt;
&lt;br /&gt;
  zypper install zoom_openSUSE_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
It may be necessary to ignore the missing or incomplete public key signing.  If a working key is available, then first add it with rpm where &amp;quot;RPM-KEY&amp;quot; is the downloaded key file&lt;br /&gt;
&lt;br /&gt;
  rpm --import RPM-KEY&lt;br /&gt;
&lt;br /&gt;
Zoom provides access to select and control the audio and video sources for your meeting.  Sometimes the audio connections will have to be reviewed since these are automatic.  Pipewire appears to work better than Pulseaudio with Tumbleweed following changes implemented in the distribution in July 2022.&lt;br /&gt;
&lt;br /&gt;
Google Meet works in the Chrome browser.  Microsoft TEAMS has a browser version and a downloadable application.  If you chose to use TEAMS or are required to do so by your institution then consider disabling its default which is to run it whenever you are logged in.  This is controlled by the contents of the hidden directory&lt;br /&gt;
&lt;br /&gt;
  .config/autostart&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
OpenSUSE does not provide the Chrome browser.  To install it follow these steps from the command line as root or sudo&lt;br /&gt;
&lt;br /&gt;
*zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome&lt;br /&gt;
*wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
*rpm --import linux_signing_key.pub&lt;br /&gt;
*zypper ref -f&lt;br /&gt;
*zypper in google-chrome-stable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tight VNC ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed and Leap 15.4 revised the implementation of VNC such that it requires system management to implement.  &lt;br /&gt;
Use YaST2 to configure the system so that VNC will start as an option through the GDM (light-dm for xfce4).  &lt;br /&gt;
*YaSt -&amp;gt; Network Services -&amp;gt; Remote Administration (VNC)&lt;br /&gt;
*Check &amp;quot;Allow Remote Administration without Session Management&amp;quot; and deselect browser option since it is insecure&lt;br /&gt;
*In /etc/tigervnc add a file vncserver.users with lines such as &amp;quot;:1=username&amp;quot; so that the port used by a user is unique to that user.&lt;br /&gt;
*Restart the GDM with system restart xdm.service&lt;br /&gt;
*When a remote user accesses the machine with a VNC client on this port, e.g. 5901 for :1, they should be able to connect to a VNC session using the user&amp;#039;s system password.&lt;br /&gt;
Within that session the screen size may be set using xrandr with &amp;quot;xrandr&amp;quot; to see the available geometries and &amp;quot;xrandr -s 1920x1080&amp;quot; to set a preferred geometry.&lt;br /&gt;
*Access through the login and GDM is available only when there is no concurrent session on the console for that users.&lt;br /&gt;
*VNC sessions started in this way are not persistent and will stop when the user logs off. They are not shared.&lt;br /&gt;
*Use vncpasswd to set a user password that will be used for running  a screen copy session that may be shared.&lt;br /&gt;
*From the console start a shared VNC session with &amp;quot;x0vncserver -PasswordFile /home/username/.vnc/passwd&amp;quot; and the system will return information about the session in that console.  Leave that console alone and running to monitor the VNC access.  A remote user not has access to this screen through the port and password which is indicated when the session starts. The session is persistent, but it requires that the xserver&amp;#039;s display for that user remain live.&lt;br /&gt;
*For remote access using secure shell tunneling the most reliable approach is to port forward in SSH from the remote machine with &amp;quot;ssh -L 5901:localhost:5901 user@remote.address&amp;quot; though the TightVNC client has an SSH tunneling option.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1211</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1211"/>
		<updated>2022-08-04T05:52:06Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.4 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been using Tumbleweed since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.9.5.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.9/lib-dynload/ /usr/local/lib/python3.9/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
As of July 2022 in Tumbleweed, the PulseAudio packages may not connect to Bluetooth headsets or to USB microphones, and will not work with Zoom (see the following). A solution is to remove PulseAudio if it is installed by default.  Install all the packages for Alsa, and then install the Pipewire  replacement for PulseAudio and Jack.   If the Pavucontrol mixer is missing after these changes, then restore it as well for an audio mixer.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conferencing with Zoom  ==&lt;br /&gt;
&lt;br /&gt;
[https://www.zoom.us Zoom] conferencing requires the installation of a package from their website. As root user you would run&lt;br /&gt;
*zypper install zoom_openSUSE_x86_64.rpm&lt;br /&gt;
It may be necessary to ignore the missing or incomplete public key signing.  If a working key is available, then first add it with rpm where &amp;quot;RPM-KEY&amp;quot; is the downloaded key file&lt;br /&gt;
*rpm --import RPM-KEY&lt;br /&gt;
&lt;br /&gt;
Zoom provides access to select and control the audio and video sources for your meeting.  Sometimes the audio connections will have to be reviewed since these are automatic.  Pipewire appears to work better than Pulseaudio with Tumbleweed following changes implemented in the distribution in July 2022.&lt;br /&gt;
&lt;br /&gt;
Google Meet works in the Chrome browser.  Microsoft TEAMS has a browser version and a downloadable application.  If you chose to use TEAMS or are required to do so by your institution then consider disabling its default which is to run it whenever you are logged in.  This is controlled by the contents of the hidden directory&lt;br /&gt;
*.config/autostart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
OpenSUSE does not provide the Chrome browser.  To install it follow these steps from the command line as root or sudo&lt;br /&gt;
&lt;br /&gt;
*zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome&lt;br /&gt;
*wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
*rpm --import linux_signing_key.pub&lt;br /&gt;
*zypper ref -f&lt;br /&gt;
*zypper in google-chrome-stable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tight VNC ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed and Leap 15.4 revised the implementation of VNC such that it requires system management to implement.  &lt;br /&gt;
Use YaST2 to configure the system so that VNC will start as an option through the GDM (light-dm for xfce4).  &lt;br /&gt;
*YaSt -&amp;gt; Network Services -&amp;gt; Remote Administration (VNC)&lt;br /&gt;
*Check &amp;quot;Allow Remote Administration without Session Management&amp;quot; and deselect browser option since it is insecure&lt;br /&gt;
*In /etc/tigervnc add a file vncserver.users with lines such as &amp;quot;:1=username&amp;quot; so that the port used by a user is unique to that user.&lt;br /&gt;
*Restart the GDM with system restart xdm.service&lt;br /&gt;
*When a remote user accesses the machine with a VNC client on this port, e.g. 5901 for :1, they should be able to connect to a VNC session using the user&amp;#039;s system password.&lt;br /&gt;
Within that session the screen size may be set using xrandr with &amp;quot;xrandr&amp;quot; to see the available geometries and &amp;quot;xrandr -s 1920x1080&amp;quot; to set a preferred geometry.&lt;br /&gt;
*Access through the login and GDM is available only when there is no concurrent session on the console for that users.&lt;br /&gt;
*VNC sessions started in this way are not persistent and will stop when the user logs off. They are not shared.&lt;br /&gt;
*Use vncpasswd to set a user password that will be used for running  a screen copy session that may be shared.&lt;br /&gt;
*From the console start a shared VNC session with &amp;quot;x0vncserver -PasswordFile /home/username/.vnc/passwd&amp;quot; and the system will return information about the session in that console.  Leave that console alone and running to monitor the VNC access.  A remote user not has access to this screen through the port and password which is indicated when the session starts. The session is persistent, but it requires that the xserver&amp;#039;s display for that user remain live.&lt;br /&gt;
*For remote access using secure shell tunneling the most reliable approach is to port forward in SSH from the remote machine with &amp;quot;ssh -L 5901:localhost:5901 user@remote.address&amp;quot; though the TightVNC client has an SSH tunneling option.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1210</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1210"/>
		<updated>2022-07-25T05:54:20Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.4 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been using Tumbleweed since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.9.5.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.9/lib-dynload/ /usr/local/lib/python3.9/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.  If for university needs or your preference you also want Microsoft Teams, the best solution is to run it in the Chrome browser. The desktop version of Teams for Linux will install an autostart entry and is intended to be dominant on the operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
OpenSUSE does not provide the Chrome browser.  To install it follow these steps from the command line as root or sudo&lt;br /&gt;
&lt;br /&gt;
*zypper ar http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome&lt;br /&gt;
*wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
*rpm --import linux_signing_key.pub&lt;br /&gt;
*zypper ref -f&lt;br /&gt;
*zypper in google-chrome-stable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tight VNC ==&lt;br /&gt;
&lt;br /&gt;
Tumbleweed and Leap 15.4 revised the implementation of VNC such that it requires system management to implement.  &lt;br /&gt;
Use YaST2 to configure the system so that VNC will start as an option through the GDM (light-dm for xfce4).  &lt;br /&gt;
*YaSt -&amp;gt; Network Services -&amp;gt; Remote Administration (VNC)&lt;br /&gt;
*Check &amp;quot;Allow Remote Administration without Session Management&amp;quot; and deselect browser option since it is insecure&lt;br /&gt;
*In /etc/tigervnc add a file vncserver.users with lines such as &amp;quot;:1=username&amp;quot; so that the port used by a user is unique to that user.&lt;br /&gt;
*Restart the GDM with system restart xdm.service&lt;br /&gt;
*When a remote user accesses the machine with a VNC client on this port, e.g. 5901 for :1, they should be able to connect to a VNC session using the user&amp;#039;s system password.&lt;br /&gt;
Within that session the screen size may be set using xrandr with &amp;quot;xrandr&amp;quot; to see the available geometries and &amp;quot;xrandr -s 1920x1080&amp;quot; to set a preferred geometry.&lt;br /&gt;
*Access through the login and GDM is available only when there is no concurrent session on the console for that users.&lt;br /&gt;
*VNC sessions started in this way are not persistent and will stop when the user logs off. They are not shared.&lt;br /&gt;
*Use vncpasswd to set a user password that will be used for running  a screen copy session that may be shared.&lt;br /&gt;
*From the console start a shared VNC session with &amp;quot;x0vncserver -PasswordFile /home/username/.vnc/passwd&amp;quot; and the system will return information about the session in that console.  Leave that console alone and running to monitor the VNC access.  A remote user not has access to this screen through the port and password which is indicated when the session starts. The session is persistent, but it requires that the xserver&amp;#039;s display for that user remain live.&lt;br /&gt;
*For remote access using secure shell tunneling the most reliable approach is to port forward in SSH from the remote machine with &amp;quot;ssh -L 5901:localhost:5901 user@remote.address&amp;quot; though the TightVNC client has an SSH tunneling option.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1209</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1209"/>
		<updated>2022-07-25T05:44:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.4 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been using Tumbleweed since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.9.5.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.9/lib-dynload/ /usr/local/lib/python3.9/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.  If for university needs or your preference you also want Microsoft Teams, the best solution is to run it in the Chrome browser. The desktop version of Teams for Linux will install an autostart entry and is intended to be dominant on the operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Computer_Hardware&amp;diff=1208</id>
		<title>Computer Hardware</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Computer_Hardware&amp;diff=1208"/>
		<updated>2021-12-19T21:45:51Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Computer systems that run the telescopes, store data, and provide remote analysis for users are currently built in house from standard components selected for the best performance/price ratio.  The selections in use now were  made in Fall 2017 and have been working well since then (currently December 2021).  The main  servers mtkent1 and mtkent3 which archive data are Supermicro servers.  Typically useful lifetimes for hardware before failure or obsolescence is 3 to 5 years though recently these systems have been more reliable, with only two failures out of  about 12 attributed to environmental heat stress.  Nevertheless, computers at the telescopes may be smaller modular fanless units where proximity to electronics such as cameras, filter wheels, and focusers encourage short cable runs. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Servers  ==&lt;br /&gt;
		&lt;br /&gt;
The [http://www.supermicro.com Supermicro] 1U Intel Xeon servers accomodate 4 hot-swap drives.  Assembled and tested systems are availalble from &lt;br /&gt;
from [http://www.serversdirect.com/ Servers Direct] for a price that is competitve with building one from parts, without the risk.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Workstations ==&lt;br /&gt;
&lt;br /&gt;
Used for data analysis, given the size of datasets and processing needs of  a photometry run, workstations require large memory access,  multiple processing cores, and storage of 10 TB or more.  We prefer Xeon processors with ECC memory, trading speed  of the consumer Intel core series for reliability and lower power consumption of the high end server CPUs. The preferred design for new hardware is an Intel W-1390 Rocket Lake processor with an LGA 1200 socket requiring a W580 motherboard chipset, available as of late 2021 for $540.    The Supermicro MBD-X12SCA-5F motherboard which accommodates this processor provides USB 3.0, dual Ethernet, and up to 128 GB of error-correcting ECC memory for $510.  This motherboard is in ATX format, and the Supermicro workstation chassis CSE-732D3-903B  900 W of power and only  21 DB of noise accomodates this board for $400.  Currently 32 GB of DDR4 ECC UDIM costs $120, and the large 14 TB Seagate Exos drives are $330. With these components, a very useful workstation using 11th generation Intel processing with 64 GB of memory would cost $2220 to build from components.  &lt;br /&gt;
&lt;br /&gt;
Used for machine control, simpler, lower cost, and compact mini- or micro-chassis computers are the preferred choice and are being used to replace computers at the telescopes as they age or fail.  For these, small HP or Dell systems which are supported by the University&amp;#039;s purchasing agreements can be found for less than $1000.  HP Elitedesk business computers with a Core I5 processor are available used for  $300 with 16 GB of DDR4 non-ECC memory and USB 3.0, perfect for telecope operation, and inexpensive enough to maintain on-site spares.  Used HP 800 G3 mini formfactor &amp;quot;desktop&amp;quot; computers with Intel I7, 32 GB of DDR4, and 1 TB NVme SSD plus WiFi cost about $600 in December 2021. The issue with these smaller devices for instrument control is that typically older generations have one Ethernet port, but they are usually run headless in our applications so the display technology should not be a factor in selecting them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hard Disk Drives ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new drives are Seagate Exos  (formerly Enterprise or Constellation) class SATA drives. &lt;br /&gt;
&lt;br /&gt;
The 8 TB drive  was the cost effective choice in 2020 and is being used for replacements and storage upgrades.  Allowing 4 slots at this capacity provides 48 TB online, exceeding our current needs for  several years. Drives with 14 TB are now available for the price of 8 TB last year, making the 8 TB very cost effective for a workstation.&lt;br /&gt;
&lt;br /&gt;
Note that the commodity Seagate Barracuda line is not as reliable and has had in our uses a unacceptable MTBF of about 2 years.  We have not had only 1 enterprise-class  drive failure since implementing them in 2012 and an specified MTBF of 5 years does seem to be a realistic expectation in practice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GPUs and Graphics ==&lt;br /&gt;
&lt;br /&gt;
Where needed we have  NVIDIA Pascal and Kepler architecture  GPU cards installed on some processing workstations, but not on the main data storage and web server systems.  This technology is evolving rapidly, and for affordable small scale uses the previous generation Quadro series of graphics cards  is still useful.  New or replacement systems would use the NVIDIA RTX cards, and the RTX A2000 with 6 GB of GDDR6 and 4 display port outputs is available  for $700 retail in December 2021.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Computer_Hardware&amp;diff=1207</id>
		<title>Computer Hardware</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Computer_Hardware&amp;diff=1207"/>
		<updated>2021-12-19T21:38:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Computer systems that run the telescopes, store data, and provide remote analysis for users are currently built in house from standard components selected for the best performance/price ratio.  The selections in use now were  made in Fall 2017 and have been working well since then (currently December 2021).  The main  servers mtkent1 and mtkent3 which archive data are Supermicro servers.  Typically useful lifetimes for hardware before failure or obsolescence is 3 to 5 years though recently these systems have been more reliable, with only two failures out of  about 12 attributed to environmental heat stress.  Nevertheless, computers at the telescopes may be smaller modular fanless units where proximity to electronics such as cameras, filter wheels, and focusers encourage short cable runs. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Servers  ==&lt;br /&gt;
		&lt;br /&gt;
The [http://www.supermicro.com Supermicro] 1U Intel Xeon servers accomodate 4 hot-swap drives.  Assembled and tested systems are availalble from &lt;br /&gt;
from [http://www.serversdirect.com/ Servers Direct] for a price that is competitve with building one from parts, without the risk.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Workstations ==&lt;br /&gt;
&lt;br /&gt;
Used for data analysis, given the size of datasets and processing needs of  a photometry run, workstations require large memory access,  multiple processing cores, and storage of 10 TB or more.  We prefer Xeon processors with ECC memory, trading speed  of the consumer Intel core series for reliability and lower power consumption of the high end server CPUs. The preferred design for new hardware is an Intel W-1390 Rocket Lake processor with an LGA 1200 socket requiring a W580 motherboard chipset, available as of late 2021 for $540.    The Supermicro MBD-X12SCA-5F motherboard which accommodates this processor provides USB 3.0, dual Ethernet, and up to 128 GB of error-correcting ECC memory for $510.  This motherboard is in ATX format, and the Supermicro workstation chassis CSE-732D3-903B  900 W of power and only  21 DB of noise accomodates this board for $400.  Currently 32 GB of DDR4 ECC UDIM costs $120, and the large 14 TB Seagate Exos drives are $330. With these components, a very useful workstation using 11th generation Intel processing with 64 GB of memory would cost $2220 to build from components.  &lt;br /&gt;
&lt;br /&gt;
Used for machine control, simpler, lower cost, and compact mini- or micro-chassis computers are the preferred choice and are being used to replace computers at the telescopes as they age or fail.  For these, small HP or Dell systems which are supported by the University&amp;#039;s purchasing agreements can be found for less than $1000.  HP Elitedesk business computers with a Core I5 processor are available used for  $300 with 16 GB of DDR4 non-ECC memory and USB 3.0, perfect for telecope operation, and inexpensive enough to maintain on-site spares.  Used HP 800 G3 mini formfactor &amp;quot;desktop&amp;quot; computers with Intel I7, 32 GB of DDR4, and 1 TB NVme SSD plus WiFi cost about $600 in December 2021. The issue with these smaller devices for instrument control is that typically older generations have one Ethernet port, but they are usually run headless in our applications so the display technology should not be a factor in selecting them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hard Disk Drives ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new drives are Seagate Exos  (formerly Enterprise or Constellation) class SATA drives. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The 9 TB drive  was the cost effective choice in 2020 and is being used for replacements and storage upgrades.  Allowing 4 slots at this capacity provides 48TB online, exceeding our current needs for  several years.&lt;br /&gt;
&lt;br /&gt;
Note that the commodity Seagate Barracuda line is not as reliable and has had in our uses an MTBF of about 2 years.  We have not had only 1 enterprise-class  drive failure since implementing them in 2012 and an specified MTBF of 5 years does seem to be a realistic expectation in practice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== GPUs and Graphics ==&lt;br /&gt;
&lt;br /&gt;
Where needed we have  NVIDIA Pascal and Kepler architecture  GPU cards installed on some processing workstations, but not on the main data storage and web server systems.  This technology is evolving rapidly, and for affordable small scale uses the Quadro series of graphics cards  is still useful.  New or replacement systems would probably use the NVIDIA RTX cards, and the RTX A2000 with 6 GV of GDDR6 and 4 display port outputs is available, but in limited quantities,  for $700 retail in December 2021.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1206</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1206"/>
		<updated>2021-12-07T06:36:43Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software, currently Leap 15.3 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been using Tumbleweed since it was introduced on selected telescopes  where the most recent packages were required, usually without stability issues.  &lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an existing system may be done remotely, but note that it can fail if many packages are changed.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved as a new installation, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP to avoid issues with booting with unexpected assignments.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given the cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of June 2021, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
The following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver instead.  If you have an older nvidia card that may not be supported properly in either nouveau or nnvidia drivers, remove nouveau and rely on the VESA driver. It almost always works with any graphics card and display.&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.9.5.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.9/lib-dynload/ /usr/local/lib/python3.9/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [https://sites.google.com/cfa.harvard.edu/saoimageds9/download https://sites.google.com/cfa.harvard.edu/saoimageds9/download].  &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.9, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.9&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.9.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Flash is obsolete and no longer needed, or supported. It is best forgotten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With Tumbleweed, the version of Virtualbox in the latest distribution will be sufficiently current that it will work well simply installed from Yast. With Leap, it may require manual installation from source once a year or so has passed since that version of Leap was introduced.  If VirtualBox is going to be used, it may be best to start with Tumbleweed to make long term maintenance easier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.  If for university needs or your preference you also want Microsoft Teams, the best solution is to run it in the Chrome browser. The desktop version of Teams for Linux will install an autostart entry and is intended to be dominant on the operating system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Julia Language ==&lt;br /&gt;
&lt;br /&gt;
Increasingly useful for data analysis, Julia is added on servers and computers where processing is done.  The Julia package provided by OpenSUSE is the stable version, while Julia is developing so quickly that the most recent version is best to have on hand.  We use the source distribution from the Julia Lanuage Download website [https://julialang.org/downloads/].  Untar the package in /usr/local, and link to the &amp;quot;julia&amp;quot; executable from /usr/local/bin/.  This will make it first on your PATH and supercede a system installation.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Telescopes&amp;diff=1205</id>
		<title>Telescopes</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Telescopes&amp;diff=1205"/>
		<updated>2021-10-26T20:57:39Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Shared Skies Partnership uses the resources of Moore Observatory in Kentucky,  Mt. Kent Observatory in Queensland, Australia, and our telescope at Steward Observatory&amp;#039;s Mt. Lemmon site. With similar instrumentation available in opposite hemispheres and different latitudes, we have access to the southern and northern skies, with nearly continuous coverage in time of the sky near the equator, and complete coverage of the sky in the course of a day. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Moore Observatory ==&lt;br /&gt;
&lt;br /&gt;
Moore Observatory is home to several instruments available for education and research:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK20 North&amp;#039;&amp;#039;&amp;#039; A  0.5 meter (20-inch) diameter corrected Dall-Kirkham telescope on a high precision German equatorial mounting for remote and automated imaging and photometry.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nikon&amp;#039;&amp;#039;&amp;#039; A fast f/1.4 85 mm focal length wide field color camera co-mounted with other telescopes offering real-time imaging of stars and solar system objects to 15th magnitude. It is available on the CDK20N telescope.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Azari&amp;#039;&amp;#039;&amp;#039; A 0.5 meter (20-inch) Ritchie-Chretien telescope on a fast tracking alt-azimuth mount is used for rapid imaging of transient events. It was a gift from Daniel Azari.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Star&amp;#039;&amp;#039;&amp;#039; A 14 centimeter apochromatic telescope for hands-on observing an color imaging by students and visitors.  This telescope and its mount was also a gift from Daniel Azari.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MORC&amp;#039;&amp;#039;&amp;#039; A 0.6 meter (24-inch) Ritchie-Chretien reflector on an equatorial fork mounting for spectroscopy, precision time series photometry,  and imaging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FSQ North&amp;#039;&amp;#039;&amp;#039; A fast (f/5) wide flat field (4°) 10.6 centimeter diameter apochromatic Petzval astrograph providing photometry and imaging down to 18th magnitude.  It is mounted in on the MORC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mt. Kent Observatory ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mt. Kent observatory has three instruments of ours in operation in addition to our partnership in Minerva Australis:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK20 South&amp;#039;&amp;#039;&amp;#039; A  0.5 meter (20 inch) diameter corrected Dall-Kirkham twin to the telescope at Moore Observatory. Located in the Sirius dome at Mt. Kent on a Planewave A200HR mounting, it is used primarily for photometry and color imaging.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FSQ South&amp;#039;&amp;#039;&amp;#039; A fast (f/5) wide flat field (4°) 10.6 centimeter diameter apochromatic Petzval astrograph providing photometry and imaging down to 18th magnitude. It is the southern companion to FSQ North, and mounted on a Paramount in the middle enclosure at Mt. Kent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK700&amp;#039;&amp;#039;&amp;#039; A 0.7 meter (27 inch) corrected Dall-Kirkham telescope on a Nasmyth mount.  The telescope and its enclosure are currently undergoing final development for automated time series photometry and spectroscopy of stars by advanced students in the astronomy programs of the Universities of Louisville and Southern Queensland.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mt. Lemmon ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ULMT&amp;#039;&amp;#039;&amp;#039; A 0.6 meter (24-inch) Ritchie-Chretien reflector on an equatorial fork mounting for  precision time series photometry,  and imaging. It was a gift from Mark Manner.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Telescopes&amp;diff=1204</id>
		<title>Telescopes</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Telescopes&amp;diff=1204"/>
		<updated>2021-10-26T20:55:14Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Shared Skies project uses the resources of Moore Observatory in Kentucky,  Mt. Kent Observatory in Queensland, Australia, and our telescope at Steward Observatory&amp;#039;s Mt. Lemmon site. There is similar instrumentation available at both sites. Since they are in opposite hemispheres and have access to the southern and northern skies, there is nearly continuous coverage in time of the sky near the equator, and complete coverage of the sky in the course of a day.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Moore Observatory ==&lt;br /&gt;
&lt;br /&gt;
Moore Observatory is home to several instruments available for education and research:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK20 North&amp;#039;&amp;#039;&amp;#039; A  0.5 meter (20-inch) diameter corrected Dall-Kirkham telescope on a high precision German equatorial mounting for remote and automated imaging and photometry.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nikon&amp;#039;&amp;#039;&amp;#039; A fast f/1.4 85 mm focal length wide field color camera co-mounted with other telescopes offering real-time imaging of stars and solar system objects to 15th magnitude. It is available on the CDK20N telescope.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Azari&amp;#039;&amp;#039;&amp;#039; A 0.5 meter (20-inch) Ritchie-Chretien telescope on a fast tracking alt-azimuth mount is used for rapid imaging of transient events. It was a gift from Daniel Azari.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Star&amp;#039;&amp;#039;&amp;#039; A 14 centimeter apochromatic telescope for hands-on observing an color imaging by students and visitors.  This telescope and its mount was also a gift from Daniel Azari.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MORC&amp;#039;&amp;#039;&amp;#039; A 0.6 meter (24-inch) Ritchie-Chretien reflector on an equatorial fork mounting for spectroscopy, precision time series photometry,  and imaging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FSQ North&amp;#039;&amp;#039;&amp;#039; A fast (f/5) wide flat field (4°) 10.6 centimeter diameter apochromatic Petzval astrograph providing photometry and imaging down to 18th magnitude.  It is mounted in on the MORC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mt. Kent Observatory ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mt. Kent observatory has three instruments of ours in operation in addition to our partnership in Minerva Australis:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK20 South&amp;#039;&amp;#039;&amp;#039; A  0.5 meter (20 inch) diameter corrected Dall-Kirkham twin to the telescope at Moore Observatory. Located in the Sirius dome at Mt. Kent on a Planewave A200HR mounting, it is used primarily for photometry and color imaging.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FSQ South&amp;#039;&amp;#039;&amp;#039; A fast (f/5) wide flat field (4°) 10.6 centimeter diameter apochromatic Petzval astrograph providing photometry and imaging down to 18th magnitude. It is the southern companion to FSQ North, and mounted on a Paramount in the middle enclosure at Mt. Kent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK700&amp;#039;&amp;#039;&amp;#039; A 0.7 meter (27 inch) corrected Dall-Kirkham telescope on a Nasmyth mount.  The telescope and its enclosure are currently undergoing final development for automated time series photometry and spectroscopy of stars by advanced students in the astronomy programs of the Universities of Louisville and Southern Queensland.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mt. Lemmon ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ULMT&amp;#039;&amp;#039;&amp;#039; A 0.6 meter (24-inch) Ritchie-Chretien reflector on an equatorial fork mounting for  precision time series photometry,  and imaging. It was a gift from Mark Manner.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Telescopes&amp;diff=1203</id>
		<title>Telescopes</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Telescopes&amp;diff=1203"/>
		<updated>2021-10-26T20:50:21Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Southern Skies project uses the resources of Mt. Kent Observatory in Queensland, Australia, and Moore Observatory in Kentucky, USA.  There is similar instrumentation available at both sites. Since they are in opposite hemispheres and have access to the southern and northern skies, there is nearly continuous coverage in time of the sky near the equator, and complete coverage of the sky in the course of a day.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Moore Observatory ==&lt;br /&gt;
&lt;br /&gt;
Moore Observatory is home to several instruments available for education and research:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK20 North&amp;#039;&amp;#039;&amp;#039; A  0.5 meter (20-inch) diameter corrected Dall-Kirkham telescope on a high precision German equatorial mounting for remote and automated imaging and photometry.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nikon&amp;#039;&amp;#039;&amp;#039; A fast f/1.4 85 mm focal length wide field color camera co-mounted with other telescopes offering real-time imaging of stars and solar system objects to 15th magnitude. It is available on the CDK20N telescope.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Azari&amp;#039;&amp;#039;&amp;#039; A 0.5 meter (20-inch) Ritchie-Chretien telescope on a fast tracking alt-azimuth mount is used for rapid imaging of transient events.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Star&amp;#039;&amp;#039;&amp;#039; A 14 centimeter apochromatic telescope for hands-on observing an color imaging by students and visitors.  &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MORC&amp;#039;&amp;#039;&amp;#039; A 0.6 meter (24-inch) Ritchie-Chretien reflector on an equatorial fork mounting for spectroscopy, precision time series photometry,  and imaging.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FSQ North&amp;#039;&amp;#039;&amp;#039; A fast (f/5) wide flat field (4°) 10.6 centimeter diameter apochromatic Petzval astrograph providing photometry and imaging down to 18th magnitude.  It is mounted in on the MORC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mt. Kent Observatory ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mt. Kent observatory has three instruments of ours in operation in addition to our partnership in Minerva Australis:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK20 South&amp;#039;&amp;#039;&amp;#039; A  0.5 meter (20 inch) diameter corrected Dall-Kirkham twin to the telescope at Moore Observatory. Located in the Sirius dome at Mt. Kent on a Planewave A200HR mounting, it is used primarily for photometry and color imaging.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;FSQ South&amp;#039;&amp;#039;&amp;#039; A fast (f/5) wide flat field (4°) 10.6 centimeter diameter apochromatic Petzval astrograph providing photometry and imaging down to 18th magnitude. It is the southern companion to FSQ North, and mounted on a Paramount in the middle enclosure at Mt. Kent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CDK700&amp;#039;&amp;#039;&amp;#039; A 0.7 meter (27 inch) corrected Dall-Kirkham telescope on a Nasmyth mount.  The telescope and its enclosure are currently undergoing final development for automated time series photometry and spectroscopy of stars by advanced students in the astronomy programs of the Universities of Louisville and Southern Queensland.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=GDL&amp;diff=1190</id>
		<title>GDL</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=GDL&amp;diff=1190"/>
		<updated>2020-07-16T07:06:47Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [https://github.com/gnudatalanguage/gdl Gnu Data Language (GDL)] is a useful open-source alternative to IDL on Linux.  Although for new astronomical scripting applications we prefer Python and Julia, the proprietary IDL system is widely used and there are many astronomical routines written for it  that are freely available. This page is a guide to the installation of GDL on an OpenSuse Linux platform in order to use the community resources available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the recent source code ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We assume that the base [http://www.astro.louisville.edu/mediawiki/index.php/OpenSuse OpenSuse] system has been installed with the packages that are often used to support scientific computing.  There are some unusual dependencies to build a complete GDL.  Additional procedures may be added after the fact since they are compiled as needed by GDL itself.&lt;br /&gt;
&lt;br /&gt;
These notes are based on latest github version as of July 2020. It is an improved version over the last Sourceforge release and should be largely compatible with IDL routines.&lt;br /&gt;
&lt;br /&gt;
Go to the github website: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[https://github.com/gnudatalanguage/gdl https://github.com/gnudatalanguage/gdl]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Click on the &amp;quot;Code&amp;quot; link in the top menubar   the &amp;quot;Download&amp;quot; button to provide the last stable release as a zip file.  Once you have it on your system, make a copy in a permanent location, and &lt;br /&gt;
as superuser (su), also  to the /usr/local/src tree on your Linux system:&lt;br /&gt;
&lt;br /&gt;
cp gdl.zip /usr/local/src&lt;br /&gt;
&lt;br /&gt;
You are ready to compile the code.  .&lt;br /&gt;
&lt;br /&gt;
== Install and compile the source code ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The source tree will be in /usr/local/src/ where you made a copy of the downloaded tarfile:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cd /usr/local/src &lt;br /&gt;
&lt;br /&gt;
unzip gdl.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will create a &amp;quot;gdl-master&amp;quot; directory in /usr/local/src containing the files you will compile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cd gdl-master&lt;br /&gt;
&lt;br /&gt;
mkdir build&lt;br /&gt;
&lt;br /&gt;
cd build&lt;br /&gt;
&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=Release -DGRIB=OFF  ../&lt;br /&gt;
&lt;br /&gt;
If libraries are missing, try to resolve them using yast.  You will need pslib and udunits built from source because they are  not distributed in Tumbleweed.  A Google search will return the site for download the latest versions of the source code which will come with build instructions.  Install them in /usr/local.  The gdl build routine will find them.  Also, if you have a local version of Python in /usr/local then gdl will use it.  Turn off GRIB because the code is obsolete and the new ECC code that replaces it does not currently build on Opensuse.&lt;br /&gt;
&lt;br /&gt;
Edit  CMakeCache.txt and set these flags:&lt;br /&gt;
&lt;br /&gt;
//CXX compiler&lt;br /&gt;
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++&lt;br /&gt;
&lt;br /&gt;
//Flags used by the CXX compiler during all build types.&lt;br /&gt;
CMAKE_CXX_FLAGS:STRING=-ltirpc -lutil&lt;br /&gt;
&lt;br /&gt;
Try to build the software.&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
The gdl source code is complex and has many dependencies.   There may be missing libraries to content with that can be added as needed using YAST.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After a successful make operation, install the binaries and library with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prepare a location for the procedures that you will add:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cd /usr/local/&lt;br /&gt;
&lt;br /&gt;
mkdir gdl&lt;br /&gt;
&lt;br /&gt;
cd gdl&lt;br /&gt;
&lt;br /&gt;
cp -p -r /usr/local/src/gdl/src/pro ./&lt;br /&gt;
&lt;br /&gt;
== Add new procedures ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For astronomical use, there are additional procedures to install system-wide.  Download and save in your long term archive the code from these sites:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[http://www.physics.wisc.edu/~craigm/idl/cmsave.html Craig Markwardt&amp;#039;s CMSVLIB] provides  SAVE and RESTORE in GDL&lt;br /&gt;
&lt;br /&gt;
*[http://idlastro.gsfc.nasa.gov/ NASA&amp;#039;s astronomy library] and the [http://idlastro.gsfc.nasa.gov/ftp/ ftp site] provides many astronomical utility procedures and handlers for FITS files&lt;br /&gt;
&lt;br /&gt;
*[http://www.boulder.swri.edu/~buie/idl/ Mark Buie&amp;#039;s IDL libary] and [http://www.boulder.swri.edu/~buie/idl/downloads/ download site] provides procedures for astrometry, photometry, and spectroscopy&lt;br /&gt;
&lt;br /&gt;
*[http://www.physics.mnstate.edu/mcraig/textoidl/ Matthew Craig&amp;#039;s tex to IDL] provides procedures to  use LaTeX markup coding in graphics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy the .pro files from these sources into one or more separate directories under /usr/local/gdl.  For example, we would use something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cd /usr/local/gdl&lt;br /&gt;
&lt;br /&gt;
mkdir astro&lt;br /&gt;
&lt;br /&gt;
mkdir tmp&lt;br /&gt;
&lt;br /&gt;
cd tmp&lt;br /&gt;
&lt;br /&gt;
cp /home/john/gdl/archive/astron.tar.gz ./&lt;br /&gt;
&lt;br /&gt;
tar xvzf astron.tar.gz&lt;br /&gt;
&lt;br /&gt;
cd pro&lt;br /&gt;
&lt;br /&gt;
cp *.pro /usr/local/gdl/astro/&lt;br /&gt;
&lt;br /&gt;
cd /usr/local/gdl&lt;br /&gt;
&lt;br /&gt;
rm -r tmp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and repeat this for each of the libraries you want to add, copying only the *.pro files into gdl.  They can all go into gdl/astro, or if you anticipate updating them individually, into a separate directory for each one.&lt;br /&gt;
&lt;br /&gt;
When you are done, assign the ownership of the gdl directory to root, or to a trusted user:&lt;br /&gt;
&lt;br /&gt;
cd /usr/local&lt;br /&gt;
&lt;br /&gt;
chown -R root.root gdl&lt;br /&gt;
&lt;br /&gt;
to assure accessibility of all files and limit access for writing.&lt;br /&gt;
&lt;br /&gt;
== Set environment variables ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the bash shell edit the .profile directory for each user who would access gdl, or add to /etc/profile.local for everyone, to make these changes (written assuming separated directories for each added library):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
export GDL_PATH=/usr/local/gdl/pro&lt;br /&gt;
&lt;br /&gt;
GDL_PATH=$GDL_PATH:/usr/local/gdl/cmsvlib&lt;br /&gt;
&lt;br /&gt;
GDL_PATH=$GDL_PATH:/usr/local/gdl/astro&lt;br /&gt;
&lt;br /&gt;
GDL_PATH=$GDL_PATH:/usr/local/gdl/buie&lt;br /&gt;
&lt;br /&gt;
GDL_PATH=$GDL_PATH:/usr/local/gdl/textoidl&lt;br /&gt;
&lt;br /&gt;
GDL_PATH=$GDL_PATH:/usr/local/gdl/extra&lt;br /&gt;
&lt;br /&gt;
export EXOFAST_PATH=/home/john/gdl/exofast&lt;br /&gt;
&lt;br /&gt;
GDL_PATH=$GDL_PATH:$EXOFAST_PATH&lt;br /&gt;
&lt;br /&gt;
export GDL_STARTUP=/home/john/gdl/gdlstartup&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We include here access to Jason Eastman&amp;#039;s EXOFAST, assuming it may be installed in an indivdual user directory.  In that case, these changes would be in that user&amp;#039;s &amp;quot;hidden&amp;quot; .profile  file.&lt;br /&gt;
&lt;br /&gt;
== Run EXOFAST under gdl ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run gdl you simply issue on the command line &amp;quot;gdl&amp;quot; and you will be in a command line environment for the Gnu Data Language.  To exit and return  to the shell, &amp;quot;exit&amp;quot;.  GDL commands are identical to IDL, and most are supported in the recent code.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run a process&lt;br /&gt;
&lt;br /&gt;
gdl -e &amp;#039;myprocess&amp;#039;&lt;br /&gt;
&lt;br /&gt;
is all that&amp;#039;s needed.  The myprocess.pro file must be in the current working directory or the path.  Note that &amp;quot;.pro&amp;quot; is not on the command line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run and test EXOFAST, install it in your user home directory under your own &amp;quot;gdl&amp;quot; with the appropriate addition to your .profile as noted above. Then&lt;br /&gt;
&lt;br /&gt;
cd /home/user/gdl/exofast&lt;br /&gt;
&lt;br /&gt;
Test it with this command:&lt;br /&gt;
&lt;br /&gt;
gdl -e &amp;quot;exofast, rvpath=&amp;#039;hat3.rv&amp;#039;,tranpath=&amp;#039;hat3.flux&amp;#039;,pname=&amp;#039;HAT-P-3b&amp;#039;,band=&amp;#039;Sloani&amp;#039;,/circular,/noslope,/specpriors,minp=2.85,maxp=2.95&amp;quot;&lt;br /&gt;
&lt;br /&gt;
There are modifications to the exofast procedures and additions to GDL  needed to run  within the GDL framework.  A list of known ones as of 2012-07-30 is provided below.  For help with finding solutions, a [http://aramis.obspm.fr/~coulais/IDL_et_GDL/Matrice_IDLvsGDL_intrinsic.html list of routines supported in GDL] is available.&lt;br /&gt;
&lt;br /&gt;
== EXOFAST under GDL: problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The stable version 0.9.2 of GDL, EXOFAST will run the fitting with the libraries given above, addition of a few missing procedures,  and changes edited into specific exofast procedure files which we will note here.  It will fail because of missing intrinsics in the plotting.  The workarounds are to edit the original exofast procedures to avoid these calls, or to try the CVS version. &lt;br /&gt;
&lt;br /&gt;
At this time the CVS version fails to properly read the exofast data files.  This appears to have been caused by a very recent change to the line parsing routines which we presume will be corrected once the errors can be documented and reported.  In the meantime it is possible to run EXOFAST using the stable release once additional procedures are included and a few changes are made to the exofast code.&lt;br /&gt;
&lt;br /&gt;
While the fitting runs and appears to work, the plotting fails because of the missing procedures and incomplete intrinsics.  This is a soluble problem since the plotting can be rewritten to use the minimum set of features currently available in gdl, or to export the plotting to external programs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Missing procedures&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*chisqr_cvf.pro -- is not in the libraries noted above&lt;br /&gt;
&lt;br /&gt;
It is available on a web search.  It appears to be an ITT Visual Information Solutions contributed routine, though it derives from code published elsewhere.  It could be recoded into a gdl procedure if needed.  We add it to /usr/local/gdl/extra/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*chisqr_pdf.pro -- is not in the librarires noted above&lt;br /&gt;
&lt;br /&gt;
It is available on a web search.  While it appears to be an ITT Visual Information Solutions procedure, it simply calls IGAMMA which is&lt;br /&gt;
a GDL routine.  We add it to /usr/local/gdl/extra/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*bisect_pdf.pro -- is not in the librarires noted above&lt;br /&gt;
&lt;br /&gt;
It is available on a web search.  It appears to be an ITT Visual Information Solutions procedure.  We add it to /usr/local/gdl/extra/.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*oploterr.pro -- is not included in gdl.  &lt;br /&gt;
&lt;br /&gt;
It is an ITT Visual Information Solutions procedure that is available for download from the NASA IDL support [http://idlastro.gsfc.nasa.gov/idllibsrch.html search site].  We add it to /usr/local/gdl/extra.&lt;br /&gt;
&lt;br /&gt;
The code lines &lt;br /&gt;
&lt;br /&gt;
oploterr, time, rv.rv - (rv.bjd - t0)*slope-gamma, rv.err, 8&lt;br /&gt;
&lt;br /&gt;
oploterr, time, rv.rv-modelrv, rv.err, 8&lt;br /&gt;
&lt;br /&gt;
could be replaced by oplot with different parameters, or a perhaps a simple ploterr procedure could be defined. There is a note in the GDL urgent needs file that oploterr should be easily derived from ploterr.  When these lines are not commented out and the oploterr is allowed to run, there is a warning from EXOFAST &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Warning: multi-page PostScript not supported yet (FIXME!)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
generated immediately following the OPLOTERR call.  The (FIXME!) comes from GDL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*poly_fit.pro -- is not included ingdl.&lt;br /&gt;
&lt;br /&gt;
It is an ITT Visual Information Solutions procedure that is available for download from the NASA IDL support [http://idlastro.gsfc.nasa.gov/idllibsrch.html search site].  We add it to /usr/local/gdl/extra.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Missing intrinsics&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*USERSYM -- called by the astro library routine plotsym is not present in 0.9.2&lt;br /&gt;
&lt;br /&gt;
This routine is internally coded and should be in the distribution. In this version it is annotated in plotting.ccp with the note &amp;quot;//for now usersym is a circle&amp;quot;.  It was introduced into the CVS source code in response to a bug report. However, the CVS version now generates errors in reading the data files used with EXOFAST, making it unusable in its current form.&lt;br /&gt;
&lt;br /&gt;
USERSYM is called by plotsym.pro, an astro library routine.  It is used to create distinctive point plotting in  routines exofast_chi2.pro and exofast_plotdist.pro.  A workaround could be to comment out the call to plotsym and edit the symbol choice to a standard symbol for the following plot so that usersym (a user-defined symbol) is not requested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*HISTOGRAM -- keyword parameter NAN not allowed in 0.9.2 .  &lt;br /&gt;
&lt;br /&gt;
There is a note in a development discussion group that it has been added to the CVS version but not fully tested.&lt;br /&gt;
&lt;br /&gt;
The problem shows up in exofast_plotdist.pro with calls to histogram using the /nan keyword.  We tried editing it out from the code lines:&lt;br /&gt;
&lt;br /&gt;
hist = histogram(pars[angular[i],*],nbins=100,locations=x,/nan)&lt;br /&gt;
&lt;br /&gt;
hist = histogram(pars[i,sorted],nbins=100,locations=x,min=xmin,max=xmax,/nan)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*CONTOUR --keyword parameter PATH_INFO, PATH_XY and PATH_DATA_COORDS are not allowed in 0.9.2&lt;br /&gt;
&lt;br /&gt;
The function is called in exofast_errell.pro and fails for the first time at this line:&lt;br /&gt;
&lt;br /&gt;
contour, hist2d, xtitle=xtitle,ytitle=ytitle, levels=levels, path_info=info,path_xy=xy,/path_data_coords,/overplot,/path_double&lt;br /&gt;
&lt;br /&gt;
with the error messages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CONTOUR: Keyword parameter PATH_INFO not allowed in call to: CONTOUR&lt;br /&gt;
&lt;br /&gt;
CONTOUR: Keyword parameter PATH_XY not allowed in call to: CONTOUR&lt;br /&gt;
&lt;br /&gt;
CONTOUR: Keyword parameter PATH_DATA_COORDS not allowed in call to: CONTOUR&lt;br /&gt;
&lt;br /&gt;
CONTOUR: Keyword parameter PATH_DOUBLE not allowed in call to: CONTOUR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We try without contour plotting.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1189</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1189"/>
		<updated>2020-07-16T06:48:37Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been testing Tumbleweed since it was introduced in 2018 because it has the significant advantage that a remote telescope computer or inaccessible server can be updated without being on site.  While Leap 15.1 remains the solid choice, Tumbleweed is in use now on serveral telescopes.&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Given ithe cutting edge character, we are concerned that issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server. As of July 2020, Tumbleweed has been a reliable platform with the advantage of the most recent libraries.  &lt;br /&gt;
&lt;br /&gt;
While the following instructions should work for installing Tumbleweed or Leap.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.8/lib-dynload/ /usr/local/lib/python3.8/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [http://ds9.si.edu/site/Download.html http://ds9.si.edu/site/Download.html].  For OpenSuse,  ds9 presents a library problem because of its dependency on OpenSSL 1.0.  Old versions of OpenSuse had that library, and copies of it are still available, but it is not part of the latest distribution. The two  are  libcrypto.so.1.0.0 and libssl.so.1.0.0 which may be copied to /usr/local/lib64 followed by &amp;quot;ldconfig&amp;quot;.  The problem persists with ds9 8.0 as of July 1, 2019.&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.7, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.7&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1188</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1188"/>
		<updated>2020-04-12T20:07:27Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been testing Tumbleweed since it was introduced in 2018 because it has the significant advantage that a remote telescope computer or inaccessible server can be updated without being on site.  While Leap 15.1 remains the solid choice, Tumbleweed is in use now on serveral telescopes.&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For Opensuse Tumbleweed (current as of April 2020)  both Python-2.7 and Python-3.8 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.8 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A preferred solution is not to bother with the system versions at all, and to install Python 3 from source. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Astropy and perhaps other modules that are under rapid development, the system Python 3 and the latest package requirements may be incompatible. With that option your local programs will call your local python explicitly, for example as /usr/local/bin/python3.  You can also set your PATH so that it searches /usr/local/bin before /usr/bin to circumvent the system version. &lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above with attention to the patterns for development&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file&lt;br /&gt;
 # Within the source directory  run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.8/lib-dynload/ /usr/local/lib/python3.8/lib-dynload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some library files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.8&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.8&amp;#039;&amp;#039; which can have a softlink to python3.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.8 in Tumbleweed .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python  without readline-devel previously installed in yast, readline may be  a missing  module.  A suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.8 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [http://ds9.si.edu/site/Download.html http://ds9.si.edu/site/Download.html].  For OpenSuse,  ds9 presents a library problem because of its dependency on OpenSSL 1.0.  Old versions of OpenSuse had that library, and copies of it are still available, but it is not part of the latest distribution. The two  are  libcrypto.so.1.0.0 and libssl.so.1.0.0 which may be copied to /usr/local/lib64 followed by &amp;quot;ldconfig&amp;quot;.  The problem persists with ds9 8.0 as of July 1, 2019.&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.7, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.7&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1185</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1185"/>
		<updated>2020-03-19T03:06:46Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been testing Tumbleweed since it was introduced in 2018 because it has the significant advantage that a remote telescope computer or inaccessible server can be updated without being on site.  While Leap 15.1 remains the solid choice, Tumbleweed is in use now on serveral telescopes.&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly. You can also set your PATH so that it searches /usr/local/bin before /usr/bin.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [http://ds9.si.edu/site/Download.html http://ds9.si.edu/site/Download.html].  For OpenSuse,  ds9 presents a library problem because of its dependency on OpenSSL 1.0.  Old versions of OpenSuse had that library, and copies of it are still available, but it is not part of the latest distribution. The two  are  libcrypto.so.1.0.0 and libssl.so.1.0.0 which may be copied to /usr/local/lib64 followed by &amp;quot;ldconfig&amp;quot;.  The problem persists with ds9 8.0 as of July 1, 2019.&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.7, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.7&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
The default desktop is set this way&lt;br /&gt;
&lt;br /&gt;
* update-alternatives --config default-xsession.desktop&lt;br /&gt;
&lt;br /&gt;
and respond to the options.  The WM system configuration is not read by most managers.  Set xfce.deskop or else it will default to gnome and make remote starting of VNC  with xfce impossible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1184</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1184"/>
		<updated>2020-01-03T03:44:32Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have been testing Tumbleweed since it was introduced in 2018 because it has the significant advantage that a remote telescope computer or inaccessible server can be updated without being on site.  While Leap 15.1 remains the solid choice, Tumbleweed is in use now on serveral telescopes.&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly. You can also set your PATH so that it searches /usr/local/bin before /usr/bin.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [http://ds9.si.edu/site/Download.html http://ds9.si.edu/site/Download.html].  For OpenSuse,  ds9 presents a library problem because of its dependency on OpenSSL 1.0.  Old versions of OpenSuse had that library, and copies of it are still available, but it is not part of the latest distribution. The two  are  libcrypto.so.1.0.0 and libssl.so.1.0.0 which may be copied to /usr/local/lib64 followed by &amp;quot;ldconfig&amp;quot;.  The problem persists with ds9 8.0 as of July 1, 2019.&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.7, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.7&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1183</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1183"/>
		<updated>2019-08-15T15:47:58Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly. You can also set your PATH so that it searches /usr/local/bin before /usr/bin.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [http://ds9.si.edu/site/Download.html http://ds9.si.edu/site/Download.html].  For OpenSuse,  ds9 presents a library problem because of its dependency on OpenSSL 1.0.  Old versions of OpenSuse had that library, and copies of it are still available, but it is not part of the latest distribution. The two  are  libcrypto.so.1.0.0 and libssl.so.1.0.0 which may be copied to /usr/local/lib64 followed by &amp;quot;ldconfig&amp;quot;.  The problem persists with ds9 8.0 as of July 1, 2019.&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.7, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.7&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional security ==&lt;br /&gt;
&lt;br /&gt;
The OpenSuse network monitoring daemon xinetd provides tcpd wrapper service within the systemd framework.  This enables use of hosts.allow and hosts.deny to filter access  in a simple way. By default, xinetd will not be started with a new installation.  Enable it in the system configuration on YAST and start it on boot.  In hosts.deny put &amp;quot;ALL: ALL&amp;quot; to close the network for everything the software is aware of, and then allow specific IP addresses to access  the services with entries in hosts.allow.  Insure that xinetd is running, and check journalctl for failed login attempts routinely as a basic security front line, usually behind a more secure institutional firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Main_Page&amp;diff=1182</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Main_Page&amp;diff=1182"/>
		<updated>2019-07-10T05:40:02Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Shared Skies ==&lt;br /&gt;
&lt;br /&gt;
A collaboration between the University of Louisville and the University of Southern Queensland is developing remotely and robotically operated astronomical facilities for research, teaching and informal education. Telescopes in the southern and northern hemispheres, with a longitude difference that enables students to observe the night sky in daytime classes, are linked by Internet2 to campuses in Louisville, Kentucky, and Toowoomba, Queensland. The very dark sky at Mt. Kent Observatory in Australia offers the center of the Milky Way, the Magellanic Clouds, and transient events not visible from mid-latitudes in the northern hemisphere. Moore Observatory, in a forested nature preserve near Louisville, Kentucky, offers complementary remote services, live images of bright planets and the Moon, and the occasional northern comet and supernova to students in Queensland.&lt;br /&gt;
&lt;br /&gt;
These facilities support university distance education programs in Kentucky and Queensland, science education through discovery and research for students in middle and high school, and advanced research by students and faculty of the universities.&lt;br /&gt;
&lt;br /&gt;
This website is a resource of documentation and support for remote use of our telescopes at  Moore Observatory in Kentucky,  the University of Southern Queensland&amp;#039;s Mt. Kent Observatory in Australia, and  at the University of Arizona&amp;#039;s  Mt. Lemmon Observatory in Arizona.&lt;br /&gt;
&lt;br /&gt;
For more information on a topic try a search or the [[Special:AllPages|&amp;#039;&amp;#039;&amp;#039;Index&amp;#039;&amp;#039;&amp;#039;]].&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1181</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1181"/>
		<updated>2019-07-01T22:22:54Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9  using a recent version from [http://ds9.si.edu/site/Download.html http://ds9.si.edu/site/Download.html].  For OpenSuse,  ds9 presents a library problem because of its dependency on OpenSSL 1.0.  Old versions of OpenSuse had that library, and copies of it are still available, but it is not part of the latest distribution. The two  are  libcrypto.so.1.0.0 and libssl.so.1.0.0 which may be copied to /usr/local/lib64 followed by &amp;quot;ldconfig&amp;quot;.  The problem persists with ds9 8.0 as of July 1, 2019.&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.7, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.7&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1180</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1180"/>
		<updated>2019-07-01T21:57:24Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  a recent stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.7, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.7&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1179</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1179"/>
		<updated>2019-07-01T21:56:22Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest from the astrometry.net website&lt;br /&gt;
&lt;br /&gt;
[http://astrometry.net/ http://astrometry.net/]&lt;br /&gt;
&lt;br /&gt;
which will be  stable version ready to compile.  The cutting edge is on the git repository&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
and it will not compile with editing and is not recommended.&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15.1 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.7, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.7&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC ?= -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1178</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1178"/>
		<updated>2019-07-01T19:14:46Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest stable package from the git repository. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.m, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.6m&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC = -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1177</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1177"/>
		<updated>2019-07-01T18:43:36Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses5-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest stable package from the git repository. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.m, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.6m&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC = -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file f&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-xxx-.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-xxx.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1176</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1176"/>
		<updated>2019-07-01T18:41:04Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses5-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest stable package from the git repository. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.m, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.6m&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC = -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 6.0.8.  &lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file from http://download.virtualbox.org/virtualbox/rpm/opensuse/13.2/virtualbox.repo&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-5.1-5.1.18_114002_openSUSE132-1.x86_64.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-5.1.18-114002.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1175</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1175"/>
		<updated>2019-07-01T18:37:20Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics and then enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between video hardware for specific uses. Nvidia Quadro, which provides GPU computing,   requires their proprietary driver for full support.  &lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software repositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default repositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the pre-selection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public repository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.   This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses5-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest stable package from the git repository. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.m, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.6m&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC = -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 5.1.18.  Version 5.0 and higher supports USB3 in the host OS, and is therefore advisable for camera or storage drive use.&lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file from http://download.virtualbox.org/virtualbox/rpm/opensuse/13.2/virtualbox.repo&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-5.1-5.1.18_114002_openSUSE132-1.x86_64.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-5.1.18-114002.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1174</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1174"/>
		<updated>2019-07-01T18:29:47Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  It  can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics or that automatically select the card to enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between cards for specific uses. Nvidia Quadro will require their proprietary driver for full support.&lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software respositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default respositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages, as of OpenSuse 13.2, select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the preselection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public respository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.  Prior to version 42.1 the latex package was installed when technical wriiting was selected as a page category, but currently it does not install unless selected specifically after the installation from a USB image.  This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses5-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest stable package from the git repository. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.m, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.6m&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC = -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 5.1.18.  Version 5.0 and higher supports USB3 in the host OS, and is therefore advisable for camera or storage drive use.&lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file from http://download.virtualbox.org/virtualbox/rpm/opensuse/13.2/virtualbox.repo&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-5.1-5.1.18_114002_openSUSE132-1.x86_64.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-5.1.18-114002.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1173</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1173"/>
		<updated>2019-07-01T18:27:52Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software. Leap 15.1 . We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed when Leap 15 was introduced in 2018  and found at the time too many points of failure with networking and compilation to make it a safe choice for professional long term use. However,  it has the significant advantage that it can be built and maintained remotely, such that a remote telescope computer or inaccessible server can be updated without being on site.  Use of Tumbleweed will be evaluated because of this advantage, but as of June 2019 the default remains Leap 15.1 .&lt;br /&gt;
&lt;br /&gt;
These evolving installation notes  originated with much earlier versions of OpenSuse and are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely. Please note that the result may be unsuitable for production.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  I can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
DHCP networking in Tumbleweed and Leap 15 does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudo-static IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system, especially when the system is built remotely for Tumbleweed. If this is not done for networks that require the identifier the system networking will not find the assigned pseudo-static IP.&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
During the last test of Tumbleweed in 2018, other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed was not usable without considerable effort.  Also, given its cutting edge character, we are concerned that  new issues could arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production, with the disadvantage that updates require physical presence at the server.  &lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap 15.1, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode in the BIOS.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
If your computer has more than one network connection, for example for a local subnet and for a global or institutional network, physically disconnect the local  one until installation is complete.  This will prevent the installation scripts from mis-identifying the network assignments.&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics or that automatically select the card to enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between cards for specific uses. Nvidia Quadro will require their proprietary driver for full support.&lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins. Edit the boot options  if needed by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them, AppArmor not far behind) are marked &amp;quot;Taboo&amp;quot;.  Do not install them.&lt;br /&gt;
&lt;br /&gt;
Leap 15.1 installation offers KDE, Gnome (Wayland), and a basic system for customizing.  We prefer the customized soluiton, and when selecting software add  Xfce for an environment that is lightweight but fully functional.   Add their development code for Gnome and KDE (Qt will be present by default).&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content is under the  &amp;quot;Technical Writing&amp;quot; group. It is a lengthy download and may be installed later.  For an upgrade, if it is already installed, it may also be best to delete it first, then reinstall when it can run overnight if your network connection is  is not very fast.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted and gnome-disks packages are useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS and as of Leap 15.1 it will create a large partition for the entire disk.  In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   Earlier versions of Leap would install the operating system in a small partition that limited the space available, and then allocated the balance to an XFS partition for user space.  Check that adequate space is left for your system needs and use the expert mode if needed to allocate space before installing the operating system.  Once partitioned, OpenSuse will use existing partitions as a guide and it is difficult to override these choices later.&lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.  Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an adequate  institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open the  port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine (should be UEFI if available)&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software respositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default respositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages, as of OpenSuse 13.2, select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the preselection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public respository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.  Prior to version 42.1 the latex package was installed when technical wriiting was selected as a page category, but currently it does not install unless selected specifically after the installation from a USB image.  This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses5-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest stable package from the git repository. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.m, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.6m&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC = -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 5.1.18.  Version 5.0 and higher supports USB3 in the host OS, and is therefore advisable for camera or storage drive use.&lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file from http://download.virtualbox.org/virtualbox/rpm/opensuse/13.2/virtualbox.repo&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-5.1-5.1.18_114002_openSUSE132-1.x86_64.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-5.1.18-114002.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1172</id>
		<title>OpenSuse</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=OpenSuse&amp;diff=1172"/>
		<updated>2019-05-15T01:58:47Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The observatory&amp;#039;s servers and control computers run on the OpenSuse distribution of Linux-based software.  Most current systems are using release  Leap 15 on new installations and updates.. We have chosen the Leap series because of its conservative testing and stability.  Generally the slowed cycle of new versions does not cause problems, except where we need software that is pushing the edge, notably AstroPy.   We have tested Tumbleweed as well and found too many points of failure with networking and compilation to make it a safe choice for professional long term use.&lt;br /&gt;
&lt;br /&gt;
Our evolving installation notes given below are rewritten as we gain experience with the most recent releases and work-around solutions to problems.   &lt;br /&gt;
&lt;br /&gt;
The following describes how to build a  system with OpenSuse  that provides a solid foundation of software for physics and astronomy for real-time control of telescopes and observatories, use in the laboratory or the field, operating small servers, and processing astronomical data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tumbleweed ==&lt;br /&gt;
&lt;br /&gt;
Installation of Tumbleweed as an upgrade to an exisiting system may be done remotely.&lt;br /&gt;
&lt;br /&gt;
[https://en.opensuse.org/openSUSE:Tumbleweed_upgrade https://en.opensuse.org/openSUSE:Tumbleweed_upgrade]&lt;br /&gt;
&lt;br /&gt;
The process has a few simple steps  to update the current OS, then change repositories, and perform the update.  Following the instructions at these links will result in a new system that should reboot and run immediately.&lt;br /&gt;
&lt;br /&gt;
Because of the very large number of packages involved, it  is best to remove latex and texlive first before doing the update, and then if needed re-install at leisure.  I can take many hours on a high speed network to get the texlive files.  &lt;br /&gt;
&lt;br /&gt;
There is also a serious issue with DHCP networking in the current (2018-05-21) version of Tumbleweed and Leap, in that  it does not send a pure MAC address even when it supposed to.  That is, it transmits a longer identifier that may not be recognized by network DHCP services if a  pseudostatic IP based on the MAC has been assigned.  While the solution to this is simple, it  should be done with yast before rebooting the new system:&lt;br /&gt;
&lt;br /&gt;
* Network Settings&lt;br /&gt;
* Global Options&lt;br /&gt;
* DHCP client identifier&lt;br /&gt;
* Paste MAC address of the DHCP network interface card&lt;br /&gt;
* Edit the field to insert &amp;quot;01:&amp;quot; before the MAC address&lt;br /&gt;
&lt;br /&gt;
Now when the network is configured it will restart and should receive the assigned IP for this card.  Make sure that only one Ethernet connection from the computer is presenting to the network with DHCP.&lt;br /&gt;
&lt;br /&gt;
Check the results with&lt;br /&gt;
&lt;br /&gt;
  ip a&lt;br /&gt;
  ethtool eth0&lt;br /&gt;
  nslookup www&lt;br /&gt;
&lt;br /&gt;
where the latter tests that DNS services are properly provided.  The configuration is  saved in /etc/sysconfig/network/dhcp .&lt;br /&gt;
&lt;br /&gt;
Other problems were encountered with compilation of Python from source using the default installations, and with proxy service to the extent that Tumbleweed is not usable without considerable effort.  Also, given its cutting edge character, it is likely new issues would arise during routine updates.  Opensuse Leap has a 18 month development cycle that allows sufficient time between upgrades that it can be a stable solution for production.&lt;br /&gt;
&lt;br /&gt;
The following instructions apply primarily to Opensuse Leap, and should also work for a new installation of Tumbleweed for those who like adventure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Before Installation ==&lt;br /&gt;
&lt;br /&gt;
If possible, for a new installation of the operating system or a major update to a disk in service, consider installing it on a new disk and copying the important files over from the old one. This is the safest path.&lt;br /&gt;
&lt;br /&gt;
Prepare a DVD or a USB memory stick with the ISO image of the distribution.  OpenSuse&amp;#039;s imagewriter is a convenient way to create the correct structure on the USB device.  Newer hardware will accept a USB memory stick for booting, but older  (say prior to 2015) may require a DVD drive.  &lt;br /&gt;
&lt;br /&gt;
On a new system not using RAID, deselect RAID in BIOS if it is offered.  This will prevent OpenSuse from creating disk partitions with RAID.  However, if  RAID information has already been written to the disk the OpenSuse installer will assume a RAID configuration even if hardware raid is not enabled.  A simple cure is to install the system twice.  On the first pass use the Expert Partitioner option and delete the proposed raid configuration.  Then in /dev/sda (or equivalent) add a root  and a home ext4 partition but intentionally do not add a boot partition.   The installer will warn you this will not work.  Ignore those warnings and let the installer prepare the disk.  Once that is accomplished you can abort the installation, or let it run to the end. The disk will not be bootable but it will be cleaned of RAID and on the next installation pass you will have a proposal to use the full disk with conventional structure and btrfs for the root partition.&lt;br /&gt;
&lt;br /&gt;
For most new machines allow UEFI (custom option, if available) and disable compatibility mode.  The installer will identify the system as allowing UEFI and properly select the boot configuration.  However,  also use the BIOS setup to change the boot priority to the medium reflecting this  choice. The boot medium and a UEFI installation must match.&lt;br /&gt;
&lt;br /&gt;
Opensuse will detect and set up a UEFI boot protocol unless this option is turned off in the BIOS. With that selection it will handle and format large disks.&lt;br /&gt;
&lt;br /&gt;
Some recent hardware, notably the Supermicro X10-SRA,  may hang on booting with older USB devices attached.  While we do not know the cause, the cure in this instance was to enable EHCI-Hand-off in the USB configuration options presented for the BIOS.   This may apply only to specific applications, and could be kernel-dependent,. In general, the default BIOS settings are fine for installation and need modification later if specific applications raise issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== During installation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Insert the medium, reboot the system, and select Installation from the splash screen.   If there is a booting problem, use the keyboard to bring up a boot selection screen (often &amp;quot;Del&amp;quot;, F11 or F12), and check the boot order and if needed also the BIOS setup.&lt;br /&gt;
&lt;br /&gt;
If there is a proxy for network access at this point it may be necessary to enter that information before proceedings to the actual installation.  At the OpenSuse boot screen press F4 for access to the manual network configuration and enter the information.  At Mt. Kent, for example, there is a proxy but it is handled automatically for browsers.  For zypper and yast, however, it has to be explicitly configured to http://proxy.usq.edu.au:8000 so that yast will find the repositories.  After installation for normal use this would be turned off by deselecting the proxy in the yast configuration screen.&lt;br /&gt;
&lt;br /&gt;
On laptops with  Nvidia Quadro graphics and GPU combined with Intel graphics, if the BIOS allows it, deselect options that use the Intel graphics or that automatically select the card to enable sole use of Nvidia. This avoids a multitude of booting and configuration issues, and provides a platform for GPU computing.  The downside is increased power consumption and loss of battery life.  If those are the primary considerations, then it may be best to not use Nvidia at all.  Alternatively, it is possible to install Bumblebee to enable switching between cards for specific uses. Nvidia Quadro will require their proprietary driver for full support.&lt;br /&gt;
&lt;br /&gt;
At this point if the system has a recent Nvidia card it also may be best to disable modeset.  The symptom this is necessary is that subsequent booting freezes before the installation begins.  With Leap 42.3 edit the boot options by pressing &amp;quot;e&amp;quot; before the system tries to start an installation.  This will open a simple boot editing screen with instructions.&lt;br /&gt;
&lt;br /&gt;
At the end of the line for linux add  &amp;quot;nouveau.nomodeset=0&amp;quot; .   Similarly, a problem with an Intel graphics card that was switching, perhaps to a Displayport interface, was fixed with simply &amp;quot;nomodeset&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Continue with the installation as instructed on this editing screen. The default settings should work with the following additions and exceptions.&lt;br /&gt;
&lt;br /&gt;
Deselect software by taking the checkmark off with a spacebar press.  After installation is complete, return to the software menu of YAST and make sure that those items never to be install (pk-update is the worst of them) are marked &amp;quot;Taboo&amp;quot;.  For now, just do not install them.&lt;br /&gt;
&lt;br /&gt;
Select a user interface of &amp;quot;Other&amp;quot; rather than KDE or Gnome, and then Xfce as default environment to have a lightweight but fully functional system.  &lt;br /&gt;
&lt;br /&gt;
New with Leap 15 you may not have other many options by group on the initial installation. However if you do, then select almost all packages by group except as noted below.  Decline KDE and Gnome desktop unless you want that option for a user, but add their development code if that is offered.   If not, add it later along with those KDE and Gnome applications you may want.&lt;br /&gt;
&lt;br /&gt;
LaTeX and related content, which has appeared under the &amp;quot;Technical Writing&amp;quot; group should not be installed initially because it is a very lengthy download.  Wait and install it later.  For an upgrade, if it is installed, it may also be best to delete it first, then reinstall when it can run overnight.&lt;br /&gt;
&lt;br /&gt;
Set the computer system clock to use UTC, check the time zone  and  the local time.&lt;br /&gt;
&lt;br /&gt;
The gparted package may be useful to manage disks larger than 2 TB.  With new disks the installer will use BTRFS for the root partition and XFS for the remainder to make full use of  large disks on UEFI systems. In the event of a failure, leaving a critical disk formatted in the wrong size or filesystem, add gdisk from a repository and reformat the disk.  Reboot, and re-install the operating system on the reformatted disk.   &lt;br /&gt;
&lt;br /&gt;
While it would be preferred to use more than 100 GB for the root directory in a BTRFS, Opensuse by default allocates a tiny  40 GB.  It is sufficient for the base system, but not for one that has large files for common use.  One solution is to place local files in the /home directory or on a separate disk and then add a soft link to the root partition.  That would enable simple upgrades and cleaning the root partition if needed without compromising the local software.  However it is best to use the expert mode on the first use of a new system disk, remove the suggested home partition, increase the root partition to 200 GB, then add back the home partition to use the remainder of the disk.   This remaining space on the  system disk will be formatted as XFS.  &lt;br /&gt;
&lt;br /&gt;
Deselect and mark &amp;quot;taboo&amp;quot; Apparmor for systems which do not require its access controls.&lt;br /&gt;
&lt;br /&gt;
Delete pk-update to avoid nagware about package updates and mark it for non-installation permanently by selecting &amp;quot;taboo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Turn off firewall (assuming your system is already behind an institutional or local firewall)&lt;br /&gt;
&lt;br /&gt;
Open port for SSH&lt;br /&gt;
&lt;br /&gt;
Check the boot option for grub2 matches that of your machine&lt;br /&gt;
&lt;br /&gt;
Complete the installation from the media (either USB or DVD)&lt;br /&gt;
&lt;br /&gt;
Remove the medium, reset the boot priority to the hard disk first, reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From OpenSuse using YAST ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start yast from the command line as su with &amp;#039;&amp;#039;yast --qt&amp;#039;&amp;#039; or &amp;quot;yast2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Disable DVD or USB in software respositories &lt;br /&gt;
&lt;br /&gt;
Unless doing GPU development or you have recent nvidia hardware, do not include the repository for nvidia (creates a long term maintenance problem) and use the Nouveau Xorg driver&lt;br /&gt;
&lt;br /&gt;
Perform all updates based on default respositories as needed&lt;br /&gt;
&lt;br /&gt;
Note that in removing packages, as of OpenSuse 13.2, select Options --&amp;gt; Cleanup when deleting packages to prevent their automatic reinstalling though the preselection feature of Yast.  Generally it is not necessary to remove packages unless there is something about them that interferes with your use of the system.  In most cases they may be disabled in subsequent system configuration.  &lt;br /&gt;
&lt;br /&gt;
Remove really annoying pk-update-icon if you missed deleting it initially.  You will have to mark it in YAST for permanent deletion.&lt;br /&gt;
&lt;br /&gt;
Add Nvidia public respository if needed and nvidia graphics and gpu drivers. Select the most recent driver unless Nvidia&amp;#039;s documentation suggests otherwise for your hardware.&lt;br /&gt;
&lt;br /&gt;
Add texlive if it has not already been selected.  Prior to version 42.1 the latex package was installed when technical wriiting was selected as a page category, but currently it does not install unless selected specifically after the installation from a USB image.  This is a very large package with long download time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add lsb&lt;br /&gt;
&lt;br /&gt;
Add apache if used as web server&lt;br /&gt;
&lt;br /&gt;
Add blas-devel&lt;br /&gt;
&lt;br /&gt;
Add php and packages if used as web server&lt;br /&gt;
&lt;br /&gt;
Add gsl and gsl-devel&lt;br /&gt;
&lt;br /&gt;
Add nano&lt;br /&gt;
&lt;br /&gt;
Add timidity&lt;br /&gt;
&lt;br /&gt;
Add audacity&lt;br /&gt;
&lt;br /&gt;
Add audio-recorder&lt;br /&gt;
&lt;br /&gt;
Add stellarium&lt;br /&gt;
&lt;br /&gt;
Add geany&lt;br /&gt;
&lt;br /&gt;
Add gedit&lt;br /&gt;
&lt;br /&gt;
Add gnome-disk-utility (previously palimpsest)&lt;br /&gt;
&lt;br /&gt;
Add gtkglext-devel &lt;br /&gt;
&lt;br /&gt;
Add hdf5 (required by Python Pynpoint-exoplanet)&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel&lt;br /&gt;
&lt;br /&gt;
Add hdf5-devel-static&lt;br /&gt;
&lt;br /&gt;
Add imagewriter&lt;br /&gt;
&lt;br /&gt;
Add libcurl-devel&lt;br /&gt;
&lt;br /&gt;
Add liblapack&lt;br /&gt;
&lt;br /&gt;
Add liblapack3 (development files)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3 (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add libatlas3-devel (optional required by astromatic software not in Leap 15)&lt;br /&gt;
&lt;br /&gt;
Add liblua5_3-5&lt;br /&gt;
&lt;br /&gt;
Add mlocate&lt;br /&gt;
&lt;br /&gt;
Add nasm (used by openh264)&lt;br /&gt;
&lt;br /&gt;
Add netpbm&lt;br /&gt;
&lt;br /&gt;
Add libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
Add okular&lt;br /&gt;
&lt;br /&gt;
Add pavucontrol (pulse audio control to work around problems with defaults)&lt;br /&gt;
&lt;br /&gt;
Add plplot&lt;br /&gt;
&lt;br /&gt;
Add plplot-devel (optionally other plplot packages as needed)&lt;br /&gt;
&lt;br /&gt;
Opensuse Leap installs Python 2.7 and Python 3.6. The default system python command in /etc/alternatives points to python 2.7, but the default &amp;quot;pip&amp;quot; points to python 3&amp;#039;s pip.  The preferred scientific Python solution is to install from source in /usr/local and build a version that is independent of the operating systems Python.  This provides for long term maintenance, and few conflicts between dependencies for system code and for cutting edge science code.  If that solution is taken, then do not install optional Python 3 packages but instead build the local version and add modules with pip.&lt;br /&gt;
&lt;br /&gt;
The following packages will go to the system Python 3.6.  Equivalent packages are available for Python 2 without the &amp;quot;3&amp;quot; in the package name.  An end user running &amp;#039;&amp;#039;python&amp;#039;&amp;#039; needs to explicitly call &amp;#039;&amp;#039;python3&amp;#039;&amp;#039;, or change the alternative link.  If our code is to use  the system version of Python 3, then  the following optional packages would be needed on new systems. For a complete OpenSuse Python3 installation, use the search option in yast for python3-, right click on the field of search results and select all entries.  Then deselect any you do not want.  This will install packages that have conflicts to resolve.  Make your best choice on those. Packages we know we need and are adequately provided by the operating system are &lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add python3-Beautifulsoup4&lt;br /&gt;
&lt;br /&gt;
Add python3-Cython&lt;br /&gt;
&lt;br /&gt;
Add Python3-Sphinx&lt;br /&gt;
&lt;br /&gt;
Add python3-cairo-devel&lt;br /&gt;
&lt;br /&gt;
Add python3-certifi (optional, may cause other issues)&lt;br /&gt;
&lt;br /&gt;
Add python3-dateutil&lt;br /&gt;
&lt;br /&gt;
Add python3-distutils-extra&lt;br /&gt;
&lt;br /&gt;
Add python3-Flask&lt;br /&gt;
&lt;br /&gt;
Add python3-idle&lt;br /&gt;
 &lt;br /&gt;
Add python3-numpy or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-numpy-devel or use pip.&lt;br /&gt;
&lt;br /&gt;
Add python3-qt4 &lt;br /&gt;
&lt;br /&gt;
Add python3-qt5&lt;br /&gt;
&lt;br /&gt;
Add python3-scipy or use pip for this and related packages to get the most recent versions.&lt;br /&gt;
&lt;br /&gt;
Add python3-sympy&lt;br /&gt;
&lt;br /&gt;
You will also need matplotlib and its add-ons.  &lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib&lt;br /&gt;
&lt;br /&gt;
Add python3-matplotlib-tk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leap 15 and Tumbleweed should supply Tk with a consistent matplotlib.  If there are issues with it, you may deselect the matplotlib packages marking them  &amp;quot;taboo&amp;quot; in yast, and instead, after work with yast is over, use pip and install matplotlib from pip as described below.  This will insure the latest version of matplotlib, especially as Leap ages and matplotlib moves forward with new releases. Nevertheless, best to leave all this alone and install an independent Python solution.&lt;br /&gt;
&lt;br /&gt;
Additional packages you will need from YAST are --&lt;br /&gt;
&lt;br /&gt;
Add libevent-devel&lt;br /&gt;
&lt;br /&gt;
Add libffi-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add libopenssl-1_1-devel&lt;br /&gt;
&lt;br /&gt;
Add fftw3-devel, libfftw3-threads, and fftw3-threads-devel &lt;br /&gt;
&lt;br /&gt;
Add ncurses5-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add openssl-1_1&lt;br /&gt;
&lt;br /&gt;
Add python-devel (for compiling Python 3.7+)&lt;br /&gt;
&lt;br /&gt;
Add readline-devel (for compiling Python 3.7+ with readline rather than gnulreadline)&lt;br /&gt;
&lt;br /&gt;
Add sk1&lt;br /&gt;
&lt;br /&gt;
Add xfig&lt;br /&gt;
&lt;br /&gt;
Add ufraw&lt;br /&gt;
&lt;br /&gt;
Add gimp-ufraw&lt;br /&gt;
&lt;br /&gt;
Add gphoto but not gphotofs&lt;br /&gt;
&lt;br /&gt;
Add qiv&lt;br /&gt;
&lt;br /&gt;
Add guvcview or luvcview for webcamera viewing&lt;br /&gt;
&lt;br /&gt;
Add motif&lt;br /&gt;
&lt;br /&gt;
Add motif-devel&lt;br /&gt;
&lt;br /&gt;
Add motif-devel-32bit&lt;br /&gt;
&lt;br /&gt;
Add other motif libraries if they are not installed by default&lt;br /&gt;
&lt;br /&gt;
Add libXmu-devel &lt;br /&gt;
&lt;br /&gt;
Add libXp-devel&lt;br /&gt;
&lt;br /&gt;
Remove all virtualbox rpm&amp;#039;s installed from OpenSuse &lt;br /&gt;
&lt;br /&gt;
Add yasm&lt;br /&gt;
&lt;br /&gt;
Add yasm-devel&lt;br /&gt;
&lt;br /&gt;
Add libpng12-devel (optional)&lt;br /&gt;
&lt;br /&gt;
Add libpng16-devel&lt;br /&gt;
&lt;br /&gt;
If using Grace earlier than 5.1.25 deselect libpng16-compat-devel and select libpng12-compat-devel &lt;br /&gt;
&lt;br /&gt;
Add fxload (used by SBIG cameras)&lt;br /&gt;
&lt;br /&gt;
If building Python from source as of version 3.6 in order to get urllib to work add the ghc- packages&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== After updates ==&lt;br /&gt;
&lt;br /&gt;
Disable modemmanager because it interferes with serial ports used for instruments&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq if used to run a subnet and start it from yast&lt;br /&gt;
&lt;br /&gt;
Disable avahi as unnecessary in our environment&lt;br /&gt;
&lt;br /&gt;
Edit /etc/sysconfig to set locate default search to root&lt;br /&gt;
&lt;br /&gt;
Use YAST to set NTP servers for your domain rather than Opensuse&amp;#039;s defaults. New installations of Leap will use chrony rather than ntp for improved synchronization.  With ntp, check the performance using &amp;quot;/usr/sbin/ntpq -p&amp;quot;  or with chrony use &amp;quot;/usr/bin/chronyc tracking&amp;quot;.  As of July 2018, chronyc is a preferred option.&lt;br /&gt;
&lt;br /&gt;
On a longer term, routine updates can be done from the command line with &lt;br /&gt;
  &lt;br /&gt;
  zypper up&lt;br /&gt;
&lt;br /&gt;
Add any needed Python3 modules requiring pip, notably matplotlib (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
For OpenSuse Leap 15 (current as of November 2018)  both Python-2.7 and Python-3.6 are installed.  By default /usr/bin/python points to python2, while pip uses /usr/bin/pip3.6 and will update python3.  For the most part unless you need a python2 component, leave the 2.7 installation alone and augment the python3 installation for our software.  Be aware of which system the pip command you choose belongs to. A better solution is not to bother with the system versions at all, and to install Python 3 from source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Python - installing the latest from source ===&lt;br /&gt;
&lt;br /&gt;
Recently a new issue came up with Astropy, the groupware that consolidates many astronomy-related packages and is the maintainer of the essential pyfits and wcsfits for accessing fits-format files.  Astropy has a sunset policy on the python it supports, and it currently requires Python  3.6 or greater.  While it is not stated whether this aggressive  choice will be rolled forward as Python 3.x continues to improve, it suggests that users may need ways to install a version of Python for science that is different from the one a conservative stable server software like OpenSuse may offer.  Indeed, Astropy&amp;#039;s website urges use of Anaconda, which solves these problems for them and for single users, but can be an additional burden for system managers.  &lt;br /&gt;
&lt;br /&gt;
The problem may not persist, depending on how quickly OpenSuse and others update Python 3, but currently the choices are to install Anaconda or Canopy Python distributions in a framework that allows systemwide access,  or to install it from [https://www.python.org/downloads/ source].  &lt;br /&gt;
&lt;br /&gt;
Warning: With Leap 15, many Opensuse system applications will call python3 and will be configured to use the system version.  You cannot link /usr/bin/python3 to a locally configured Python and expect that the system programs will work as expected.  Write your local programs to call your local python explicitly.&lt;br /&gt;
&lt;br /&gt;
To install from source follow these instructions exactly:&lt;br /&gt;
&lt;br /&gt;
 # Add the packages from Opensuse noted above&lt;br /&gt;
 # Download the source tar file currently Python-3.7.1.tar.xz and as superuser or root copy to /usr/local/src &lt;br /&gt;
 # Untar the file and assign ownership of the new directory tree to yourself as an unpriviledged user&lt;br /&gt;
 # As a normal user, cd into the source directory and run ./configure &lt;br /&gt;
 # The defaults will be fine.  Your new Python will go into the /usr/local/ directory.  Some users prefer /opt, which can be changed as a configuration option.&lt;br /&gt;
 # make&lt;br /&gt;
 # make test&lt;br /&gt;
 # Now as root user --&lt;br /&gt;
 # make altinstall&lt;br /&gt;
&lt;br /&gt;
If this fails it is probably a missing package.  Check the ones that are required, install them, make clean, make, make test, make altinstall again.&lt;br /&gt;
&lt;br /&gt;
 # ln -s /usr/local/lib64/python3.7/lib-dynload/ /usr/local/lib/python3.7/lib-dynload&lt;br /&gt;
&lt;br /&gt;
Add readline explicitly as a module that works with our GUI after installation&lt;br /&gt;
&lt;br /&gt;
 #/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
The build process may require adding missing libraries.  There may be  errors when building on a new installation of Leap 15 with the GNU debugging tests that are in testing only and may be ignored. However, Open SSL support needed for pip as of Python 3.7 requires version 1.1 or higher.   Install the libopenssl1_1-devel package.  Do not install libressl.&lt;br /&gt;
&lt;br /&gt;
Older Opensuse distributions do not offer an upgrade to a supported OpenSSL version and would need a system software upgrade to use the latest Python without also installing a recent OpenSSL.  This solution worked for Opensuse 42.1. Note if you install libopenssl1_1-devel in more recent Opensuse distributions this is &amp;#039;&amp;#039;not&amp;#039;&amp;#039; needed.&lt;br /&gt;
&lt;br /&gt;
 # Download the OpenSSL source tar file openssl-1.1.1.tar.gz and as superuse or root copy to /usr/local/src&lt;br /&gt;
 # Untar the file and configure it as recommended for Unix-like systems with&lt;br /&gt;
 # ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl   &amp;#039;-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)&amp;#039;&lt;br /&gt;
 # Run &amp;quot;make&amp;quot;, &amp;quot;make test&amp;quot;, and &amp;quot;make install&amp;quot; to compile, test, and install the code in /usr/local/ssl&lt;br /&gt;
 # Configure Python with ./configure --with-ssl=/usr/local/ssl and then make it as above. &lt;br /&gt;
 # Confirm that &amp;quot;test_ssl&amp;quot; runs and passes.&lt;br /&gt;
&lt;br /&gt;
The altinstall option is necessary to avoid overwriting or interfering with the system python.  The softlink is needed because some llibrary files in lib64 are not found without it. It is not necessary to assign either PYTHONHOME or PYTHONPATH, or to use an environment manager to have this version work independently of the system version.  However, be aware that the functions you need are explicity in /usr/local/bin and that they refer to python by its version, that is &amp;#039;&amp;#039;python3.7&amp;#039;&amp;#039; and &amp;#039;&amp;#039;pip3.7&amp;#039;&amp;#039; Therefore if you later update the OS to Leap 15 and it also has these executables, there&amp;#039;s a potential conflict that would be resolved by the search path and could be ambiguous. Alternatively, explicity link to python in /usr/local/bin in commandline uses or scripts.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you install Anaconda Python, it will have its own /opt directory tree to navigate, while Canopy Python may use environment variables. To run your own locally built Python &amp;#039;&amp;#039;echo PYTHONHOME&amp;#039;&amp;#039; and &amp;#039;&amp;#039;echo PYTHONPATH&amp;#039;&amp;#039; should return empty strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Modules by pip ===&lt;br /&gt;
&lt;br /&gt;
Because they are not available as a package in OpenSuse for Python 3, or because you are updating another installation,  use explicitly the pip for your Python.  That is, for the system python3,  /usr/bin/pip points to /etc/alternatives/pip which points to /usr/bin/pip3.6 in Leap 15 .  Our separately installed python has /usr/local/bin/pip3 .&lt;br /&gt;
&lt;br /&gt;
If the system is behind a firewall requiring a proxy, possibly pip will see the system proxy configuration.  If not, try&lt;br /&gt;
&lt;br /&gt;
  export https_proxy=http://proxy.domain:port&lt;br /&gt;
&lt;br /&gt;
where typically the port is 8000 or 8080.&lt;br /&gt;
&lt;br /&gt;
In locally built versions of Python 3.7 or higher without readline-devel previously installed in yast, readline will a missing  module.  For Opensuse a suitable fix is&lt;br /&gt;
&lt;br /&gt;
/usr/local/bin/pip3.7 install gnureadline&lt;br /&gt;
&lt;br /&gt;
Note this is &amp;quot;gnu&amp;quot; readline, not readline.  The latter will segfault reading the history file.&lt;br /&gt;
&lt;br /&gt;
For installing in the system python, if  matplotlib for Python 3 was installed with yast it must be removed in  a two-step process.  First delete  it from yast and then and mark it taboo so that it will not re-install.   Afterward, remove it from the system python this way.&lt;br /&gt;
&lt;br /&gt;
pip uninstall matplotlib&lt;br /&gt;
&lt;br /&gt;
pip install matplotlib --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
Also for the system python you may need to do this &lt;br /&gt;
&lt;br /&gt;
pip uninstall six&lt;br /&gt;
&lt;br /&gt;
pip install six --upgrade --no-cache-dir&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now if you are building a separate Python for science, use the pip for it and add the  modules you need. This may include several that were installed on the system using yast, as well  the matplotlib ones and  these.  Start with these since pip will resolve dependencies, probably use cached source unless you tell it not to, and in the process grow the missing branches of your Python tree. Later, if you find something missing, you can add it as needed.&lt;br /&gt;
&lt;br /&gt;
Install matplotlib will install numpy (pip install matplotlib)&lt;br /&gt;
&lt;br /&gt;
Install scipy (pip install scipy)&lt;br /&gt;
&lt;br /&gt;
Install cython (pip install cython)&lt;br /&gt;
&lt;br /&gt;
Install scikit-image which will install pillow (pip install scikit-image)&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
Install skyfield (pip install skyfield)  replaces deprecated pyphem&lt;br /&gt;
&lt;br /&gt;
Install healpy  (pip install healpy)&lt;br /&gt;
&lt;br /&gt;
Install reproject  (pip install reproject) &lt;br /&gt;
&lt;br /&gt;
Install quantities (pip install quantities) to have physical constants&lt;br /&gt;
&lt;br /&gt;
Install emcee  (pip install emcee) to have an MCMC library &lt;br /&gt;
&lt;br /&gt;
Install  pyastronomy (pip install pyastronomy) or from source on github [https://github.com/sczesla/PyAstronomy pyastronomy]&lt;br /&gt;
&lt;br /&gt;
Install bokeh for browser-based graphics (pip install bokeh)&lt;br /&gt;
&lt;br /&gt;
Install pycurl for remotely communicating with a server (pip install  pycurl)&lt;br /&gt;
&lt;br /&gt;
If there is an error from the SSL library, use these two commands to resolve the dependency:&lt;br /&gt;
&lt;br /&gt;
  export PYCURL_SSL_LIBRARY=openssl&lt;br /&gt;
&lt;br /&gt;
  pip install  --upgrade --force-reinstall  pycurl&lt;br /&gt;
&lt;br /&gt;
Dowloading files from Google drive requires two modules&lt;br /&gt;
  &lt;br /&gt;
  pip install --upgrade google-api-python-client&lt;br /&gt;
  pip install oauth2client&lt;br /&gt;
&lt;br /&gt;
The first of these provides the module &amp;quot;apiclient&amp;quot; and the other provides tools for authorization which would be imported this way&lt;br /&gt;
  &lt;br /&gt;
  from apiclient import discovery&lt;br /&gt;
  from oauth2client import client&lt;br /&gt;
  from oauth2client import tools&lt;br /&gt;
  from oauth2client.file import Storage&lt;br /&gt;
&lt;br /&gt;
as described by the official google download api respository [https://github.com/google/google-api-python-client here]&lt;br /&gt;
&lt;br /&gt;
Lastly, install the software chain for data visualization with Python using pip rather than the system package because Pandas is developing rapidly&lt;br /&gt;
&lt;br /&gt;
Install pandas (pip install pandas)&lt;br /&gt;
&lt;br /&gt;
Install scrapy (pip install scrapy)&lt;br /&gt;
&lt;br /&gt;
Install requests (pip install requests)&lt;br /&gt;
&lt;br /&gt;
Install flask (pip install flask)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Astropy ===&lt;br /&gt;
&lt;br /&gt;
[http://www.astropy.org/ Astropy]  is a collaboration to provide a consistent and comprehensive distribution of astronomical software to the research community.  For systems running Python 3.5 and above it can be installed as other packages&lt;br /&gt;
&lt;br /&gt;
Install astropy (pip install astropy)&lt;br /&gt;
&lt;br /&gt;
The recent restriction excluding Python 3.4 means that  new installations  on older operating systems cannot add astropy without some work around solution such as described above.&lt;br /&gt;
&lt;br /&gt;
Astropy resolves dependencies on pyfits, originally developed at the Space Telescope Science Institute.  Code requiring pyfits will work by adding&lt;br /&gt;
&lt;br /&gt;
  import astropy.io.fits as pyfits&lt;br /&gt;
&lt;br /&gt;
to the Python 3 source.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From source in /usr/local ==&lt;br /&gt;
&lt;br /&gt;
For rpm packages use  &lt;br /&gt;
&lt;br /&gt;
  zypper --non-interactive install package.rpm  &lt;br /&gt;
&lt;br /&gt;
or add --no-gpg-checks if necessary.  For java routines. install the source in /usr/local and provide a softlink through a startup script in /usr/localbin. Larger packages such as alternative python builds would also go in /usr/local in preference to /opt.   The entire /usr/local tree should not be in the root partition, but linked to it from a user partitiion that will not be lost in system re-installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install nedit from updated source to /usr/local/bin with a link in /usr/bin/ &lt;br /&gt;
&lt;br /&gt;
Add lame and lame library packages for mp3 audio&lt;br /&gt;
&lt;br /&gt;
Install [http://www.mplayerhq.hu mplayer] through the command line svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer or from a stable package along with skin and codecs&lt;br /&gt;
&lt;br /&gt;
Install AstroImageJ and update to the latest daily build.  Copy the current best practice configuration from a working system.&lt;br /&gt;
&lt;br /&gt;
Install AstroCC&lt;br /&gt;
&lt;br /&gt;
Install Alsvid updated for Python3&lt;br /&gt;
&lt;br /&gt;
Install ds9 &lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install cfitsio with make, make shared, and make install.  Then manually copy lib64 and include installation directories to /usr/local/lib64 and /usr/local/include, and run ldconfig.&lt;br /&gt;
&lt;br /&gt;
Install grace (build from source with local FFT modifications for normalization)&lt;br /&gt;
&lt;br /&gt;
Install Aladin&lt;br /&gt;
&lt;br /&gt;
Install xephem -&lt;br /&gt;
&lt;br /&gt;
Copy the XEphem source from the licensed archive to a temporary directory.  Install each disk by default in /usr/local.  Remove all the ._ files which are created on a Mac OS and remove the execute permissions on many files that come from the source.  Copy the xephem.sites list with augmented sites into the auxil directory.  Update the Soft* catalogs.  Copy XEphem to the /etc directory for global defaults to the home observatory.  Optionally, recompile the source code and copy it to /usr/local/bin/, removing the default pre-compiled version in /usr/bin/ .  Copy xephem.man (not xephem.1) to /usr/local/man/man1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install astrometry.net&lt;br /&gt;
&lt;br /&gt;
Download the latest stable package from the git repository. &lt;br /&gt;
&lt;br /&gt;
[https://github.com/dstndstn/astrometry.net https://github.com/dstndstn/astrometry.net]&lt;br /&gt;
&lt;br /&gt;
Astrometry.net  uses the system default Python unless you chose otherwise.   In Opensuse Leap 15 with Python 2.7 as the system default, compilation of astrometry.net still falls back on having some 2.7 packages present.  Before building astrometry.net from source, check that they system has&lt;br /&gt;
&lt;br /&gt;
python-devel&lt;br /&gt;
python2-numpy-devel&lt;br /&gt;
swig&lt;br /&gt;
git&lt;br /&gt;
libnetpbm-devel&lt;br /&gt;
&lt;br /&gt;
to avoid errors on the first attempt.&lt;br /&gt;
&lt;br /&gt;
Other python utilities may use  a locally installed Python, say /usr/local/bin/python3.m, if you are compiling with a library path that will find it.  That is,  echo $LD_LIBRARY_PATH  should show /usr/local/lib and /usr/local/lib64.  The environment variables are not preserved when compiling after &amp;quot;su&amp;quot;. Two simple solutions are either to change ownership of Astrometry.net and compile as a normal user, or connect directly as root user and compile.  Either way, check the environment first.  Once that is done, edit util/makefile.common so that it reads this way&lt;br /&gt;
&lt;br /&gt;
  # don&amp;#039;t change this one -- it must match what is in the bin/* scripts&lt;br /&gt;
  PYTHON_SCRIPT_DEFAULT := /usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
  # change this if you want to set exactly which python program gets run to&lt;br /&gt;
  # execute the python scripts in bin/ (image2pnm and friends).&lt;br /&gt;
  # Note that this must be a full path (this is a bash requirement).&lt;br /&gt;
  #PYTHON_SCRIPT ?= $(PYTHON_SCRIPT_DEFAULT)&lt;br /&gt;
  # eg,&lt;br /&gt;
  PYTHON_SCRIPT ?= /usr/local/bin/python3.6m&lt;br /&gt;
&lt;br /&gt;
The only change required is to point specifically to the python you need.  Opensuse Leap 15 also installs Python 3.6, which is one release behind the current one (at this writing) of 3.7.  The simplest solution to this and staying up with the requirements of astropy is to install Python from source in /lusr/local and then link to it here and elsewhere as needed.  However astrometry.net will have a dependence on the systems Python 2.7.&lt;br /&gt;
&lt;br /&gt;
In OpenSuse Leap you will also have  edit  util/makefile.netpbm if compilation does not find the library.  You may  later change the  #! lines in the scripts in the installed bin directory if another Python on the system is preferred.&lt;br /&gt;
&lt;br /&gt;
If  netpbm is not be found,  edit the file util/makefile.netpbm to point it to the correct place:&lt;br /&gt;
  &lt;br /&gt;
 NETPBM_INC = -I/usr/include/netpbm&lt;br /&gt;
 NETPBM_LIB ?= -L/usr/lib64 -lnetpbm &lt;br /&gt;
&lt;br /&gt;
Astrometry.net by default installs in /usr/local/astrometry.  Add /usr/local/astrometry/bin to the $PATH in /etc/profile.local.  Replace the data directory with a soft link to the system archive of astrometry data files, currently the 4200 series. On systems witih limited root disk space, install astrometry on another disk and link it to /usr/local for consistency with scripts.&lt;br /&gt;
&lt;br /&gt;
Install swarp&lt;br /&gt;
&lt;br /&gt;
Install sextractor&lt;br /&gt;
&lt;br /&gt;
Install psfex (current release does not build in Opensuse Leap due to cblas package incompatibility)&lt;br /&gt;
&lt;br /&gt;
Install hp15c&lt;br /&gt;
&lt;br /&gt;
Install tightvnc_viewer&lt;br /&gt;
&lt;br /&gt;
Install moodle (depends on mysql, apache, and php) on educational servers&lt;br /&gt;
&lt;br /&gt;
Install mediawiki (on servers as needed)&lt;br /&gt;
&lt;br /&gt;
Install cfitsio&lt;br /&gt;
&lt;br /&gt;
Install xpa&lt;br /&gt;
&lt;br /&gt;
Install xmtel (if needed)&lt;br /&gt;
&lt;br /&gt;
Install xmccd (if needed, also provides libcfitsio and xpa)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Update /etc ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Copy motd&lt;br /&gt;
&lt;br /&gt;
Edit HOSTNAME&lt;br /&gt;
&lt;br /&gt;
Add entries to /etc/rc.d/boot.local &lt;br /&gt;
&lt;br /&gt;
Add profile.local&lt;br /&gt;
&lt;br /&gt;
Edit /etc/dnsmasq.conf as needed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Settings for the network ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure network as needed for additional cards defined for internal zone&lt;br /&gt;
&lt;br /&gt;
Configure dnsmasq as needed to service one or more cards&lt;br /&gt;
&lt;br /&gt;
Add masquerade to firewall settings if internal zone present (required for dnsmasq ip forwarding)&lt;br /&gt;
&lt;br /&gt;
Start the firewall if using dnsmasq or needing the security it provides&lt;br /&gt;
&lt;br /&gt;
Start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Run services manager and turn off unused services&lt;br /&gt;
&lt;br /&gt;
Run lsof -i to confirm there are no insecure open ports&lt;br /&gt;
&lt;br /&gt;
Reboot the system&lt;br /&gt;
&lt;br /&gt;
With Opensuse&amp;#039;s use of the wicked network daemon, a configured network device will not show its IP until it is physically connected to an active network.  The yast configuration option &amp;quot;at boot time&amp;quot; for network configuration means that these ports must  see a live connection when the system is booted to find their configuration.  This is not a bug, it is a &amp;quot;feature&amp;quot;. The alternative option  &amp;quot;on cable connection&amp;quot; is not useful for a fixed instrument controller.  If a device is physically connected and does not show its IP in ifconfig, try &amp;quot;systemctl restart network.service&amp;quot; or a reboot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Run nvidia-settings to set display for a system with Nvidia hardware if the Nvidia drivers are installed.  The latest community Nvidia support is adequate for most purposes without installing the proprietary Nvidia driver and kernel module.  The system is more easily maintained if it runs using the community supported package which is improving quickly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL with Nvidia ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users should be members of the video group to have access to opengl applications.  If they are not, the application may run slowly (glxgears) or crash (celestia).  For some applications with older hardware the Nouveau open source driver will suffice and be less likely to interfere with system updates later.  This driver is compatible with randr and allows command line setting of multiple displays.  For example if there are two displays on the graphics card, a command line such as&lt;br /&gt;
&lt;br /&gt;
* xrandr -q&lt;br /&gt;
&lt;br /&gt;
will list the available displays and their capabilities, while one such as &lt;br /&gt;
&lt;br /&gt;
* xrandr --output DVI-I-2  --right-of DVI-I-1 &lt;br /&gt;
&lt;br /&gt;
will configure them as one screen providing acceleration across the desktop.&lt;br /&gt;
&lt;br /&gt;
Newer Nvidia cards and all of the Quadro family require loading the lastest nvidia driver and the kernel modification. Add Nvidia as a repository and use YAST to manage the updates.  Reboot the system afterwards.  Run nvidia-settings to configure the desktop.  If needed, save the xorg.conf file and copy it to /etc/X11 so that it applies on the next restart of the X server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Google Chrome ==&lt;br /&gt;
&lt;br /&gt;
Install the Chrome public keys&lt;br /&gt;
&lt;br /&gt;
* wget https://dl.google.com/linux/linux_signing_key.pub&lt;br /&gt;
* sudo rpm --import linux_signing_key.pub&lt;br /&gt;
&lt;br /&gt;
and then with the Firefox browser retrieve the latest 64-bit rpm package of Chrome and install it&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-chrome-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
Installation of Google Earth is similar&lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install google-earth-stable_current_x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adobe Flash ==&lt;br /&gt;
&lt;br /&gt;
Until late 2016 Adobe had stopped supporting Flash on Linux.  While Adobe now has resumed security updates for Flash that will work with Firefox, a better solution is to install Google Chrome.  This provides full support for the  remaining Flash websites and reliable security plus DRM management when needed. Both Chrome and Firefox block Flash content when HTML5 alternatives are available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== gPhoto2 ==&lt;br /&gt;
&lt;br /&gt;
The gphoto2 application runs Nikon DSLR cameras for real-time observing, scripted imaging,  and called by cgi routines from a web server.  To give the USB device the proper permissions without invoking unwanted software (the default for a Gnome installation in OpenSuse), we make sure that libgphoto2 is installed, but not the file system.  In OpenSuse  there will not be a udev rules file installed by default.&lt;br /&gt;
&lt;br /&gt;
As root user, &lt;br /&gt;
&lt;br /&gt;
cd /etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
/usr/lib64/libgphoto2/print-camera-list udev-rules version 175 group video mode 0666 &amp;gt; 90-gphoto.rules&lt;br /&gt;
&lt;br /&gt;
where the version given has to be high enough to work with udev and still be recognized by libgphoto2.  &lt;br /&gt;
&lt;br /&gt;
Add the video group to users who will be observers, and to the user wwwrun by editing /etc/group or by using YAST.&lt;br /&gt;
&lt;br /&gt;
When a camera is connected or turned on, it will accessible by any user in the video group, including the cgi applications used for remote operations.&lt;br /&gt;
&lt;br /&gt;
== exFAT ==&lt;br /&gt;
&lt;br /&gt;
Add fuse-exfat from OpenSuse package search, currently version 1.2.4  &lt;br /&gt;
&lt;br /&gt;
* zypper --non-interactive install fuse-exfat-1.2.4-2.1.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
This provides support where needed for SDXC memory cards through the Microsoft exfat filesystem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VLC ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The version of VLC that can be installed with Yast lacks all proprietary codecs necessary for many common uses.  The OpenSuse version should not be installed.  To build from source --&lt;br /&gt;
&lt;br /&gt;
*Install lua and lua-devel if not already installed&lt;br /&gt;
&lt;br /&gt;
*Download the latest source tarball from VLC (currently 2.2.1)&lt;br /&gt;
*Use the latest x264 source also from VLC, compile, and install&lt;br /&gt;
*Use the latest ffmpeg source tar file best taken from mplayer, compile, and install&lt;br /&gt;
&lt;br /&gt;
*Untar ffmpeg &lt;br /&gt;
*./configure --enable-pic --libdir=/usr/local/lib64 --enable-libmp3lame --enable-libx264 -enable-gpl&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
*ldconfig&lt;br /&gt;
&lt;br /&gt;
*Untar vlc&lt;br /&gt;
*./configure --disable-mad --disable-a52&lt;br /&gt;
*make &lt;br /&gt;
*make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mplayer and ffmpeg ==&lt;br /&gt;
&lt;br /&gt;
*Install the source code in /usr/local/src/ -- &lt;br /&gt;
*svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer&lt;br /&gt;
*Untar the codecs and skin files into /usr/local .  We use a collection saved in mplayer_codecs.tar.gz that installs into share/mplayer and lib/codecs&lt;br /&gt;
*In the source directory,  ./configure --enable-gui then make, make install&lt;br /&gt;
&lt;br /&gt;
If ffmpeg is needed elsewhere (as it would be for Blender and other video editing applications), copy the internal version of ffmpeg from  mplayer into its own /usr/local/src/ directory, compile the executables, and install system-wide.  In this use it can be reconfigured to add x264, so do that as well with these steps:&lt;br /&gt;
&lt;br /&gt;
Remove the obsolete Opensuse NASM package if it has been installed, and get the most recent NASM from  http://www.nasm.us/pub/nasm/ .  This is currently version 2.13 and is required to build x264.  Build and install  it with the defaults.  It will go into /usr/ rather than /usr/local if you forget to select &amp;quot;local&amp;quot; explicitly. This will not matter until you rebuild the system with updated Opensuse files.&lt;br /&gt;
&lt;br /&gt;
Get x264 (it may be better than openH264, which currently does not compile on Opensuse) with git clone http://git.videolan.org/git/x264.git . Build it using the configuration options for creating static and shared libraries, and install it.&lt;br /&gt;
&lt;br /&gt;
Lastly, in the cloned copy of ffmpeg from mplayer, ./configure --enable-libx264 --enable-gpl, make, and make install.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Simple Screen Recorder ==&lt;br /&gt;
&lt;br /&gt;
This very effective tool for making on-line instructional videos and lecture content is included in the Opensuse distribution.  However, the distributed version lacks many useful codecs.  Retrieve the source code, probably best from Packman where it will have been prepared for Opensuse.  Compile it as an unprivileged user with the configuration flags ./configure --without-jack --oldincludedir=/usr/local/include that currently make it work without jack and with x264 on Opensuse.  Install it as root with &amp;quot;make install&amp;quot;.  This version will have the codecs of ffmpeg and be broadly useful without needing subsequent file conversions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VirtualBox as supplied by OpenSuse cannot be updated using the Oracle site.  Instead of installing their version, we use the latest Oracle RPM which is currently version 5.1.18.  Version 5.0 and higher supports USB3 in the host OS, and is therefore advisable for camera or storage drive use.&lt;br /&gt;
&lt;br /&gt;
*Set the BIOS to allow virtualization technology and to allow advanced I/O for sharing resources.&lt;br /&gt;
*Retrieve the packages from https://www.virtualbox.org/wiki/Linux_Downloads .&lt;br /&gt;
*Retrieve the repo file from http://download.virtualbox.org/virtualbox/rpm/opensuse/13.2/virtualbox.repo&lt;br /&gt;
*Retrieve the public key from https://www.virtualbox.org/download/&lt;br /&gt;
*Install the public key with rpm --import public_key.asc&lt;br /&gt;
*Install the repository with zypper ar -f ./file.repo&lt;br /&gt;
*zypper --non-interactive install VirtualBox-5.1-5.1.18_114002_openSUSE132-1.x86_64.rpm&lt;br /&gt;
*Retrieve the extension pack from Oracle&amp;#039;s download site.&lt;br /&gt;
*VBoxManage extpack install .Oracle_VM_VirtualBox_Extension_Pack-5.1.18-114002.vbox-extpack&lt;br /&gt;
*In Opensuse YAST, add the Virtualbox guest kernel modules and guest tools, or use the guest additions from Oracle.&lt;br /&gt;
*Add the virtualbox group to the user(s) who will run it .&lt;br /&gt;
*Start the qt interface from the command line with &amp;#039;&amp;#039;virtualbox&amp;#039;&amp;#039; .&lt;br /&gt;
*Create a directory that will be shared with the guest OS and set this up in virtualbox when building a virtual machine .&lt;br /&gt;
*Once the guest OS is installed, add the guest additions to it also,  to enable the shared directory and mouse/pointer integration .&lt;br /&gt;
&lt;br /&gt;
*Lastly, read the Virtualbox on-line  [https://www.virtualbox.org/manual/ch04.html manual] .&lt;br /&gt;
&lt;br /&gt;
For access to the USB system the guest OS must have a driver installed.  Virtualbox presents a virtual xHCI  USB3 device to the guest.  The driver provided by [https://downloadcenter.intel.com/product/65855/Intel-USB-3-0-eXtensible-Host-Controller-Driver  Intel] has worked for us in a Windows 7 installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenGL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users must belong to the video group to have access to OpenGL when NVidia drivers are in use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zoom not Skype ==&lt;br /&gt;
&lt;br /&gt;
While Skype is supported again on Linux through its newer version,  it was not working well with Opensuse 42.3  has not been tested with Leap 15.  Alternatives include Google Hangouts and conferencing software [https://www.zoom.us Zoom], which is the recommended solution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wireless ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Laptops by default will have networkmanager running their hardware and wireless connections.  Desktops will not.  To  enable desktop wireless with minimal need for configuration, use Yast, Network  Settings, and Global Settings to select networkmanager rather than wickedd. With that change, there will be a desktop icon in the system tray and the interface may be selected by the user.&lt;br /&gt;
&lt;br /&gt;
Few USB network adapters work with the Linux kernel in OpenSuse  .  Only one we have found readily available new is the Buffalo Nfinity Wireless-N compact USB 2.0 adapter.  It is recognized immediately and requires no additional configuration, other than the selection of networkmanager, and the user&amp;#039;s choice of connection.&lt;br /&gt;
&lt;br /&gt;
When configuring a laptop that will need flexible control of the network, consider changing the default /etc/sysconfig/network/config  entry from &amp;quot;no&amp;quot; to&lt;br /&gt;
&lt;br /&gt;
  NETCONFIG_FORCE_REPLACE=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This change will insure that if you change networks the resolv.conf file will be rewritten, and it may affect other files that get modified in some way.  The downside is that you will need to use the root password when restarting the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Static LAN and dnsmasq ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use dnsmasq to manage local area networks (LAN) from a second network device on telescope computers.  Typically the device address is set to 192.168.0.1/24, or to 1.1/24 if there is another LAN operating.  The configuration file for dnsmasq is set to point to the device, i.e. eth1, to which the switch is attached.&lt;br /&gt;
&lt;br /&gt;
This works well if (a) there is a switch attached and turned on, and (b) the computer is running the wickedd manager which is the default in current Opensuse releases based on systemd.  It is seeming not possible, or certainly not straightforward, to run a lan from a laptop which is configured with networkmanager. &lt;br /&gt;
&lt;br /&gt;
To attach a networked instrument such as a camera to a laptop that by default is configured with network manager the options are&lt;br /&gt;
&lt;br /&gt;
* Attach the device to a switch which itself is integrated into a LAN with DHCP provided by another computer system.&lt;br /&gt;
* Custom configure the wired network interface using nmcli.&lt;br /&gt;
* Change the laptop networking to run wickedd instead of networkmanager.&lt;br /&gt;
&lt;br /&gt;
The second method using the powerful console command line interface for Network Manager is the best solution but requires specific commands for each situation.  A common problem has been network management when a device is to be attached to an Ethernet adapter on a USB3 connection. For example, we use a StarTech adapter that runs on a powered laptop port to provide both ethernet and  additional USB3 connections to a camera and environmental sensors.  The network connection has to be associated with dnsmasq to enable DHCP connections from cameras.  With networkmanager on opensuse, this new device is not configurable through the YAST tools.  The solution is&lt;br /&gt;
&lt;br /&gt;
1. Boot the computer with the device installed so that it is recognized without an issue&lt;br /&gt;
&lt;br /&gt;
2. As root create the connection and bring it up&lt;br /&gt;
&lt;br /&gt;
  nmcli con add con-name &amp;quot;usb-ethernet&amp;quot; ifname eth1 type ethernet ip4 192.168.1.1/24&lt;br /&gt;
  nmcli con up usb-ethernet&lt;br /&gt;
&lt;br /&gt;
3.  Check that it is present&lt;br /&gt;
&lt;br /&gt;
  ifconfig &lt;br /&gt;
  &lt;br /&gt;
  eth1  Link encap:Ethernet  HWaddr 00:05:1B:D0:88:E3  &lt;br /&gt;
           inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.&lt;br /&gt;
           UP BROADCAST MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:1000 &lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
&lt;br /&gt;
4.  Configure dnsmasq.conf with lines such as&lt;br /&gt;
  &lt;br /&gt;
  interface=eth1  &lt;br /&gt;
  dhcp-range=192.168.1.50,192.168.1.100,12h&lt;br /&gt;
&lt;br /&gt;
5.  Enable and start dnsmasq in sysconfigure&lt;br /&gt;
&lt;br /&gt;
These changes should remain in effect until removed, and a camera attached to the new network connection will be seen on the local &amp;quot;usb-ethernet&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
The third option is the default for a desktop system. The disadvantage to the third option in the laptop world is that wickedd does not have the end-user support for wireless networking that networkmanager provides.  Further, when switching from one system to another, there are inevitable configuration issues, particularly with the management of host resolution and the file /etc/resolv.conf.&lt;br /&gt;
&lt;br /&gt;
The basic process is to use yast or yast2, select network device configuration, and change the manager to wickedd.  This will allow editing the individual network devices.  Set the static ip address for the device that will handle the LAN, edit the device entry, change it to &amp;quot;internal&amp;quot;, and set it to activate on boot through the setting in the Global tab.  Shutdown and reboot the system.  The ethernet adapter must be inserted at boot time.  &lt;br /&gt;
&lt;br /&gt;
As superuser  use &amp;quot;wicked show all&amp;quot; to see the status of the devices, or &amp;quot;wicked ifstatus eth1&amp;quot; to see the status of one network device.  Each device has a configuration file in /etc/sysconfig/network/, such as ifcfg-eth1 for eth1.  Within that file there should be a line which says &lt;br /&gt;
&lt;br /&gt;
LINK_REQUIRED=no&lt;br /&gt;
&lt;br /&gt;
As of Opensuse 42.3, this line is not inserted by the yast2 configurator, and consequently the network device will stall  and wickedd will report &amp;quot;setup-in-progress&amp;quot;.  The simple solution is to enter this by hand if you see this error and need a second network active on power up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
The system proxy settings are set globally in /etc/sysconfig/proxy .  It is best to use yast to configure them.  At USQ for normal use these fields are blank.  However for installation through yast and zypper and for updates the fields have to be populated with http://proxy.usq.edu.au:8000.  Also for use of curl where there is a proxy, it can be set in .curlrc for that user by adding a line such as&lt;br /&gt;
&lt;br /&gt;
proxy = proxy.usq.edu.au:8080&lt;br /&gt;
&lt;br /&gt;
without the &amp;quot;http&amp;quot; prefix. Alternatively, if there is a system proxy, then curl can be run with a command line that over rides it for specific addresses or for everything with a wildcard&lt;br /&gt;
&lt;br /&gt;
curl --no-proxy *&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Both Firefox and Chrome browsers will negotiate an automatic proxy server while curl, zypper, and yast will not.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1171</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1171"/>
		<updated>2019-02-23T23:29:31Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.)&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**2 (!!) small drops (0.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of filtered distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rinse solution:&lt;br /&gt;
&lt;br /&gt;
*Add filtered distilled water to a clean quart (1 liter) container&lt;br /&gt;
*Add  only 2 drops (0.1 ml) of Photo-Flo and stir gently&lt;br /&gt;
*Transfer mixed rinse solution to a second spray bottle &lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted  particles off the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it. Pull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently exhaling a  your breath against the optical surface to expose residual spots and  streaking. Again, change the tissue constantly.&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
#Check overlapped areas during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture to remove defects in cleaning.&lt;br /&gt;
#Using your breath as a guide, gently use a pad and buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to dry the surface promptly as described above. After rinsing, buff the entire surface as needed with a fresh dry pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1170</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1170"/>
		<updated>2019-02-23T23:27:31Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.)&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**2 (!!) small drops (0.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of filtered distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rinse solution:&lt;br /&gt;
&lt;br /&gt;
*Add filtered distilled water to a clean quart (1 liter) container&lt;br /&gt;
*Add  only 2 drops (0.1 ml) of Photo-Flo and stir gently&lt;br /&gt;
*Transfer mixed rinse solution to a second spray bottle &lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted  particles off the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it. Pull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
#Check overlapped areas during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture to remove defects in cleaning.&lt;br /&gt;
#Using your breath as a guide, gently use a pad and buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1169</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1169"/>
		<updated>2019-02-23T23:24:07Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.)&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of filtered distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted  particles off the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it. Pull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
#Check overlapped areas during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture to remove defects in cleaning.&lt;br /&gt;
#Using your breath as a guide, gently use a pad and buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1168</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1168"/>
		<updated>2019-02-23T23:22:07Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.)&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of filtered distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted  particles off the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it. Pull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1167</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1167"/>
		<updated>2019-02-23T23:21:14Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.)&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of filtered distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted  particles off the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Pull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1166</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1166"/>
		<updated>2019-02-23T23:20:05Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.)&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of filtered distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted  particles off the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1165</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1165"/>
		<updated>2019-02-23T23:19:27Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.)&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of filtered distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted off  particles from the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1164</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1164"/>
		<updated>2019-02-23T23:18:35Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.)&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted off  particles from the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1163</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1163"/>
		<updated>2019-02-23T23:17:32Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or the slow drying may result in spotting and streaking requiring considerable touch up.   &lt;br /&gt;
*Plan to use at least one tissue per inch of aperture being cleaned and always keep a dry tissue to the surface for best results. (Large apertures will require considerably more than the one per inch rule of thumb.)&lt;br /&gt;
*Make sure you have dusted off  particles from the glass and nearby surfaces prior to wet cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1162</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1162"/>
		<updated>2019-02-23T23:13:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several white Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or  streaking will result.  if you attempt to clean your optics when the humidity is high, you will be very disappointed in the results.&lt;br /&gt;
*Plan to use at least one tissue per inch aperture being cleaned and always keep a dry tissue to the surface for best results.&lt;br /&gt;
*Make sure you have dusted off the particles from the glass and nearby surfaces prior to further cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1161</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1161"/>
		<updated>2019-02-23T23:12:18Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, filtered Windex, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several while Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or  streaking will result.  if you attempt to clean your optics when the humidity is high, you will be very disappointed in the results.&lt;br /&gt;
*Plan to use at least one tissue per inch aperture being cleaned and always keep a dry tissue to the surface for best results.&lt;br /&gt;
*Make sure you have dusted off the particles from the glass and nearby surfaces prior to further cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1160</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1160"/>
		<updated>2019-02-23T23:11:00Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isopropanol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several while Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or  streaking will result.  if you attempt to clean your optics when the humidity is high, you will be very disappointed in the results.&lt;br /&gt;
*Plan to use at least one tissue per inch aperture being cleaned and always keep a dry tissue to the surface for best results.&lt;br /&gt;
*Make sure you have dusted off the particles from the glass and nearby surfaces prior to further cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1159</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1159"/>
		<updated>2019-02-23T23:10:02Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies&lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isoproponol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several while Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or  streaking will result.  if you attempt to clean your optics when the humidity is high, you will be very disappointed in the results.&lt;br /&gt;
*Plan to use at least one tissue per inch aperture being cleaned and always keep a dry tissue to the surface for best results.&lt;br /&gt;
*Make sure you have dusted off the particles from the glass and nearby surfaces prior to further cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1158</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1158"/>
		<updated>2019-02-23T23:09:23Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies] &lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isoproponol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several while Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce (30 ml) of filtered Windex &lt;br /&gt;
**1.5 ounces (44 ml) of isopropanol&lt;br /&gt;
**Two (!!) small drops (0,.1 ml) of Photo-Flo&lt;br /&gt;
*Stir gently and thoroughly and do not shake.&lt;br /&gt;
*Add 12 ounces  (355 ml) of distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky.&lt;br /&gt;
*Never attempt to surface clean large optics when the humidity is above 65%  or  streaking will result.  if you attempt to clean your optics when the humidity is high, you will be very disappointed in the results.&lt;br /&gt;
*Plan to use at least one tissue per inch aperture being cleaned and always keep a dry tissue to the surface for best results.&lt;br /&gt;
*Make sure you have dusted off the particles from the glass and nearby surfaces prior to further cleaning.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1157</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1157"/>
		<updated>2019-02-23T23:03:17Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies] &lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isoproponol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several while Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Three clean jars or quart containers&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar.&lt;br /&gt;
**1 ounce of filtered Windex &lt;br /&gt;
**1.5 ounce of isoproponal&lt;br /&gt;
**Two (!!) small drops of Photo-Flo&lt;br /&gt;
*Stir gently and thororoughly and to not shake.&lt;br /&gt;
*Add 12 ounces of distilled water.&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use.&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky&lt;br /&gt;
*Never....never...attempt to surface clean large optics when the humidity is above 65% !!  streaking will result.  if you attempt to clean your optics when the humidity is high, you will be very disappointed in the results.&lt;br /&gt;
*Plan to use at least one tissue per inch aperture being cleaned....always keep a dry tissue to the surface for best results!&lt;br /&gt;
*Make sure you have dusted off the particles from the glass prior to further cleaning!&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1156</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1156"/>
		<updated>2019-02-23T23:00:30Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies] &lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isoproponol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several while Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.  y.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar&lt;br /&gt;
**1 ounce of filtered Windex &lt;br /&gt;
**1.5 ounce of isoproponal&lt;br /&gt;
**Two (!!) small drops of Photo-Flo&lt;br /&gt;
*Stir gently and thororoughly and to not shake&lt;br /&gt;
*Add 12 ounces of distilled water&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky&lt;br /&gt;
*Never....never...attempt to surface clean large optics when the humidity is above 65% !!  streaking will result.  if you attempt to clean your optics when the humidity is high, you will be very disappointed in the results.&lt;br /&gt;
*Plan to use at least one tissue per inch aperture being cleaned....always keep a dry tissue to the surface for best results!&lt;br /&gt;
*Make sure you have dusted off the particles from the glass prior to further cleaning!&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1155</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1155"/>
		<updated>2019-02-23T22:59:46Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Methods of cleaning large telescope mirrors and other optics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies] &lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isoproponol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planewave Instruments ==&lt;br /&gt;
&lt;br /&gt;
Joe Haberman at Planewave Instruments recommended  the cleaning system described by the [http://arksky.org/asoclean.htm Arkansas Sky Observatory website].  While aimed at smaller telescopes, the advice on this site is similar to the the Steward Observatory process in that they dust off first, clean with liquids only when necessary, work in small areas, use a cleaning solution, and rinse thoroughly.   The difference is that they use Kleenex for the wipes, and the cleaning solution is  a mixture of distilled water, alcohol, and Photo-Flo (a wetting agent).  They also use Photo-Flo in the final rinse.  &lt;br /&gt;
&lt;br /&gt;
Photo-Flo was commonly available in the days of chemical photography for rinsing film and prints after processing to minimize water spottting. It is harder to find &lt;br /&gt;
now.  If you follow the recipe at the ASO site, substituting a small amount of Dove liquid detergent for the Photo-Flo is a workable option.  A final rinse with pure distilled water and judicious use of  poofs of several while Kleenex tissues to pick up any residual drops may give a better result than leaving some residue from the Photo-Flo.  The TX609 wipers will have more surface area and be easier to manage for a large mirror than Kleenex, and some generic white tissue may not be as lint and abrasive free as the tissue that was manufactured when the ASO established this protocol.  &lt;br /&gt;
&lt;br /&gt;
In the event the link to the ASO site is not available, here is a summary of the process abstracted from their page in February 2019.&lt;br /&gt;
&lt;br /&gt;
Materials needed:&lt;br /&gt;
&lt;br /&gt;
*Distilled water from a supermarket&lt;br /&gt;
*Isopropyl alcohol (high percentage)&lt;br /&gt;
*Coffee filters (to filter water and alcohol)&lt;br /&gt;
*Blue Windex&lt;br /&gt;
*Kodak Photo-Flo wetting agent (camera store or Amazon)&lt;br /&gt;
*Spray bottle to dispense solutions onto cleaning pads &lt;br /&gt;
*Pure white Kleenex with no additives&lt;br /&gt;
*Synthetic cotton pads (not obviously identifiable now.  See TEX wipes above for a better alternative.&lt;br /&gt;
&lt;br /&gt;
Cleaning solution:&lt;br /&gt;
&lt;br /&gt;
*Filter an entire bottle of Windex through the coffee filter into a thoroughly washed and dried container.&lt;br /&gt;
*Filter the distilled water using a second clean coffee filter into another jar.  y.&lt;br /&gt;
*Mix solutions in these amounts in another quart jar&lt;br /&gt;
**1 ounce of filtered Windex &lt;br /&gt;
**1.5 ounce of isoproponal&lt;br /&gt;
**Two (!!) small drops of Photo-Flo&lt;br /&gt;
*Stir gently and thororoughly and to not shake&lt;br /&gt;
*Add 12 ounces of distilled water&lt;br /&gt;
*Pour liquid into a clean marked spray bottle for use&lt;br /&gt;
&lt;br /&gt;
Warnings:&lt;br /&gt;
&lt;br /&gt;
*Clean optics only in the daytime with the optical surface &amp;quot;looking&amp;quot; out of a window or toward a bright open sky&lt;br /&gt;
*Never....never...attempt to surface clean large optics when the humidity is above 65% !!  streaking will result.  if you attempt to clean your optics when the humidity is high, you will be very disappointed in the results.&lt;br /&gt;
*Plan to use at least one tissue per inch aperture being cleaned....always keep a dry tissue to the surface for best results!&lt;br /&gt;
*Make sure you have dusted off the particles from the glass prior to further cleaning!&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
#Turn your telescope so that you are the optics head-on; you are not going to use so much liquid that you need to be worried about cleaning solution getting away from you and down inside the retaining rings of the optics.  Make yourself comfortable....you may be here a while!  I prefer placing the telescope if possible in a position where I can sit down to clean.  You must have a small table or area within reach where you will have your cleaning pads, solutions and Kleenex waiting.&lt;br /&gt;
 &lt;br /&gt;
#Imagine your optics  in quadrants or quarters, like large sections of pie.  You are going to begin at the top left and work your way down to the bottom left piece of pie.&lt;br /&gt;
 &lt;br /&gt;
#Wet the  cleaning pad with cleaning solution, not the glass surface.  You want the pad wet, but not dripping; make sure you hold the pad only on one side and do not do not use the side where your fingers have been.&lt;br /&gt;
 &lt;br /&gt;
#Begin in your upper left quadrant and gently daub (not rub) this section until you have generously smeared the cleaning solution across  that area.  The idea here is to move only the liquid across the surface to break the adhesion of film and dirt deposits against the glass. Proceed quickly to the next step.&lt;br /&gt;
&lt;br /&gt;
#Before the liquid begins to collect into large areas and before any drying takes place, immediately begin wiping the quadrant just soaked with Kleenex tissue to dry it&lt;br /&gt;
Plull the Kleenex across the surface in in one direction only letting surface tension of the cleaning agent remove the liquid from the surface.  You will see any residual thin film of liquid rapidly drying behind the stroke of the Kleenex.  Follow each swipe with another dry Kleenex tissue. Keep changing tissues promptly.&lt;br /&gt;
&lt;br /&gt;
#When entire quadrant is reasonably dry, buff gently with a totally dry Kleenex; repeat a second time with another Kleenex while gently &amp;quot;puffing&amp;quot; a bit of your breath against the corrector plate or lens to expose possible areas of streaking. Again, change the tissue constantly.&lt;br /&gt;
&lt;br /&gt;
#Repeat same procedure on remaining three quadrants with a bit of overlap on each.&lt;br /&gt;
 &lt;br /&gt;
#Check each  areas overlapped during cleaning and as needed use  a fresh pad sprayed with a very small  amount of cleaner. Swab touch-up areas nearly dry with just enough moisture remove defects in cleaning.&lt;br /&gt;
 &lt;br /&gt;
#Using your breath as a guide, gently use a pado buff the final cleaned surface and remove residual spots and streaks.&lt;br /&gt;
 &lt;br /&gt;
#Optionally rinse as needed only if there are problem areas remaining after the previous work. For this wet a pad with rinse solution and cover a quadrant while following immediately to promptly dry as described above. After rinsing, buff entire surface as needed with a fresh and dray pad to finish.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1154</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1154"/>
		<updated>2019-02-23T22:10:15Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies] &lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isoproponol&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1153</id>
		<title>Mirror Cleaning</title>
		<link rel="alternate" type="text/html" href="https://www.astro.louisville.edu/astrowiki/index.php?title=Mirror_Cleaning&amp;diff=1153"/>
		<updated>2019-02-23T22:09:01Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Steward Observatory on Mount Lemmon ==&lt;br /&gt;
&lt;br /&gt;
This procedure for cleaning large mirrors was demonstrated to us by Joseph Hochscheidt when he cleaned the Manner Telescope primary and secondary in June 2018.  Use it with caution since this is based on notes taken at the time.  Obviously the first rule is &amp;#039;&amp;#039;do no harm&amp;#039;&amp;#039;, and that means be reasonable, gentle, and follow the advice of experts when it is available.&lt;br /&gt;
&lt;br /&gt;
For this cleaning process the mirror was left in the telescope.  It was a warm sunny day, and the telescope enclosure was opened slightly to allow for ventilation and to provide illumination needed to judge the effectiveness of the process.&lt;br /&gt;
&lt;br /&gt;
1.  Blow off all dust and loose particles with  dry nitrogen gas from a compressed gas cylinder.  &lt;br /&gt;
&lt;br /&gt;
This requires bringing a cylinder to the telescope, attaching a regulator, and using a flexible hose that provides enough gas flow for the purpose.  Do not use compressed air!  It will contain moisture that will condense on the optics, and it may also contain fine particulates that could damage the coatings. Also do not use &amp;#039;&amp;#039;dust-off&amp;#039;&amp;#039; gas often sold for blowing dust out of electronics and even for photographic lenses.  Typically these contain fluorocarbons and they will leave a residue that is hard to remove.  An alternative that is often used with large optics is to use gas withdrawal carbon dioxide.  This is available in small cylinders, and is released at full pressure through a hose to direct the flow onto the mirror and its shrouds.  Carbon dioxide cleaning will produce CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow which can effectively scrub a mirror of dust.  However it will be insufficient to remove deposits left by evaporating dew or by insects.  If a  supply of dry nitrogen or carbon dioxide is not available the surfaces may be dusted with a new very clean and soft brush.  A photographic lens camel&amp;#039;s hair brush, or a soft paint brush with fine bristles will be safe for this task.  Compressed gas is preferred, however.&lt;br /&gt;
&lt;br /&gt;
Assure that all loose material is blown out or wiped from the housing that baffles the mirror.  &lt;br /&gt;
&lt;br /&gt;
2.  With the telescope pointed approximately horizontally, use large quantities of Kimwipes or paper towels rolled to absorb any fluids that drain from the mirror.  These may be replaced several times during the cleaning process.  The purpose is to prevent fluids from draining into critical components behind the primary, or auxiliary instruments or components that may be on the lower side of the truss.  Each case will be unique and should be evaluated before beginning.  It may be beneficial to point the telescope slightly below the horizontal if the light baffle around the primary is solid and would hold liquid that could drain to an area which is not critical.  &lt;br /&gt;
&lt;br /&gt;
It is not advisable to remove the primary.  This adds considerable risk to the cleaning process, and would surely require telescope realignment.  Also, primary removal would normally be preceded by mechanical work to assure the telescope remains stable, and would add days to a job that can be done in hours.&lt;br /&gt;
&lt;br /&gt;
3.  Wash the interior and all exposed surfaces with water.  &lt;br /&gt;
&lt;br /&gt;
4. Prepare a solution of distilled water and detergent.  The distilled water can be purchased at a grocery or drug store in gallon jugs.  It should be mixed in a clean 5 gallon bucket reserved only for mirror washing.  For mirrors of the order of 0.5 meter in diameter, 2 gallons of water for the washing solution should be adequate. Add a small quantity of Liquinox detergent to the water.  Test the solution to see that it wets a surface easily.  Excess detergent leaves a residue that requires more rinsing and the compromise needed is to have enough in solution to clean, and not so much it is difficult to rinse.  Only a few milliliters of liquid detergent should be needed in 2 gallons (about 8 liters) of distilled water.  If Liquinox is not available, then Dove dishwashing liquid also works well.&lt;br /&gt;
&lt;br /&gt;
5. Prepare suitable washing wipes.  At Steward the preferred ones are treated sea sponges that have been soaked in vinegar to remove minerals and then very thoroughly washed and rinsed.   The final wash and rinse is done with TX609 Technicloth wipes bundled to make a poof ball perhaps 10 cm in diameter and held by the back where the edges of the cloth are gathered.  You will need many of these and it helps to have an assistant making them as you proceed.  At this stage both the person doing the mirror cleaning and the assistant should have on new clean nitrile gloves so that skin oils are not collected and left on the mirror.&lt;br /&gt;
&lt;br /&gt;
6.  Apply the water and detergent mix to the mirror working in thirds.  It may take two or more treatments to achieve a clean surface, and a preliminary rinse should be done on the work area before moving to the next third.&lt;br /&gt;
&lt;br /&gt;
7.  Rinse twice with distilled water and pat dry with a TX609 wipe poof.   The rinse should be using a separate rinse bucket of water into which to dip the wipe. The final rinse is with a wet but not dripping wipe.  The goal is not to leave water droplets on the surface, and not to pick up debris into the wipe that will scratch the coating.  By using a large clean bucket and fresh wipes on each pass, you are assured that  contamination of the water and the wipe is minimized. When you dip a previously used wipe into distilled water you will contaminate the water with residual detergent and you risk contaminating with particulates that were picked up off the mirror.  A final rinse with a second filling of distilled water will give a better result than making do with one rinse and dipping back into he water several times.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Ulmt_primary_cleaning.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The primary mirror of the 0.6-meter Manner Telescope on Mt. Lemmon during cleaning.  Packing around the lower edge absorbs cleaning fluids.  The upper right third of this mirror has been cleaned and washed. The lower portion has not been cleaned for two years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Materials required:&lt;br /&gt;
&lt;br /&gt;
*Nitrile gloves&lt;br /&gt;
*Dust off or cleaning gas such as&lt;br /&gt;
**Prepure N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with regulator and hose&lt;br /&gt;
**CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; tank with a siphon tube (liquid withdrawal) low velocity snow generator (see below)&lt;br /&gt;
*Bounty paper towels for handling excess liquid and runoff&lt;br /&gt;
*White Kleenex tissue free of fragrances and oils for spot cleaning&lt;br /&gt;
*Texwipes as a technical alternative to off-the-shelf paper towels (caution, these will scratch some coatings)&lt;br /&gt;
*TX609 Technicloth for direct use on mirror coatings during the wash and rinse stages&lt;br /&gt;
*Soft brush such as a very high quality new fine bristle paint brush or a camera lens brush (these collect oils and abrasive dust; best not to reuse)&lt;br /&gt;
*Isopropyl alcohol 90% for removing stubborn organic contaminants&lt;br /&gt;
*Distilled water (several gallons)&lt;br /&gt;
*Clean 5 gallon buckets &lt;br /&gt;
*Detergent&lt;br /&gt;
**Liquinox&lt;br /&gt;
**Dove dishwashing liquid (alternative to Liquinox)&lt;br /&gt;
&lt;br /&gt;
Suppliers:&lt;br /&gt;
&lt;br /&gt;
*Disposable nitrile gloves are available from all drugstores and most grocery stores for medical purposes.  Use the dust-free variety. Replace them frequently if you are handling the material that will be in contact with the mirror surface.&lt;br /&gt;
*Distilled water is available off the shelf in drug and grocery stores. You will need several gallons.  Pour a supply into a clean bucket and let it settle.  Use the liquid at the top of the bucket&lt;br /&gt;
*Buckets.  Start with  new clean plastic 5-gallon buckets and label them for wash and rinse liquids.  After a first use rinse with distilled water and store covered for reuse on the next cleaning.  Do not use buckets that have had other uses. New buckets are available from home suppliers (Home Depot), hardware, and paint stores.&lt;br /&gt;
*CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; snow cleaning equipment&lt;br /&gt;
**[https://www.co2clean.com/telescopes Carbon Dioxide Snow Cleaning] by Applied Surface Technologies] &lt;br /&gt;
**[https://www.youtube.com/watch?v=4R34fQY3uCE The Subaru Telescope cleaning snow process]&lt;br /&gt;
*N&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; or CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; gas cylinders&lt;br /&gt;
**Local welding gas suppliers will refill tanks&lt;br /&gt;
*Texwipes&lt;br /&gt;
**[https://www.amazon.com/s?k=texwipes Amazon] search for &amp;#039;&amp;#039;texwipes&amp;#039;&amp;#039; and then for TX609 to have the lint free version&lt;br /&gt;
*Liquinox&lt;br /&gt;
**[https://www.amazon.com/s?k=liqunox&amp;amp;ref=nb_sb_noss_2 Amazon] links to suppliers for this too.  A small amount of Alconox will do.&lt;br /&gt;
*Isoproponal&lt;br /&gt;
**Isopropyl alcohol is a readily available substitute for pure ethanol to be used as a cleaning agent to remove oils and to hasten drying. It is available off the shelf in drug and grocery stores.  Use the 90% pure antiseptic medical alcohol in a new previously unopened bottle.  Alcohol will adsorb water from the air once opened.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
</feed>