Compare commits
4 Commits
7b9a5096c4
...
d94081b7b4
| Author | SHA1 | Date | |
|---|---|---|---|
| d94081b7b4 | |||
| 45c827f27e | |||
| 1d66290c03 | |||
| e0948ecefb |
31
README.md
31
README.md
@@ -1,21 +1,21 @@
|
|||||||
# installJRMC
|
# installJRMC
|
||||||
|
|
||||||
This program will install [JRiver Media Center](https://www.jriver.com/) and associated helper services on Fedora, CentOS (>=8), Ubuntu, Debian, and Linux Mint.
|
This program will install [JRiver Media Center](https://www.jriver.com/) and associated helper services on Fedora, CentOS, Ubuntu, Debian, Linux Mint, and SUSE.
|
||||||
|
|
||||||
## README
|
## README
|
||||||
|
|
||||||
1. This script will not point major upgrades to your old library. You should **first perform a library backup**, install the new major version, and then restore the library backup in the new version.
|
1. This script will not point major upgrades to your old library. You should **first perform a library backup**, install the new major version, and then restore the library backup in the new version.
|
||||||
2. Typically `installJRMC` should be **executed as your normal user** (i.e. don't run it with `sudo`). Services are installed for the user that executes the script so do not execute as root unless you want to install system-wide services. Doing so may lead to permissions issues. `installJRMC` will prompt you for your `sudo` password as necessary to install dependencies and services.
|
2. Typically `installJRMC` should be **executed as your normal user** (i.e. don't run it with `sudo`). Services are installed for the user that executes the script so do not execute as root unless you want to install system-level services. Doing so may lead to permissions issues. `installJRMC` will prompt you for your `sudo` password as necessary to install dependencies and services.
|
||||||
|
|
||||||
## Executing
|
## Executing
|
||||||
|
|
||||||
`installJRMC [--option [ARGUMENT]]`
|
`installJRMC [--option [ARGUMENT]]`
|
||||||
|
|
||||||
Running `installJRMC` without any options will install the latest version of JRiver Media Center from the official JRiver repository (Ubuntu/Debian) or my [unofficial repository](https://repos.bryanroessler.com/jriver/) (Fedora/CentOS) using the system package manager. If any other option is specified, then the default install method will need to be specified using `--install`. This makes it possible to install services, containers, repos, etc. independent of Media Center.
|
Running `installJRMC` without any options will install the latest version of JRiver Media Center from the official JRiver repository (Ubuntu/Debian) or my [unofficial repository](https://repos.bryanroessler.com/jriver/) (Fedora/CentOS) using the system package manager. SUSE users will need to use the `--install rpm` install method until a SUSE repo becomes available. If any other option is specified, then the default install method will need to be specified using `--install`. This makes it possible to install services and containers independent of Media Center.
|
||||||
|
|
||||||
## Options
|
## Options
|
||||||
|
|
||||||
Here is a list of possible options that can be passed to the script. You can always find the latest supported options by running `installJRMC --help`.
|
You can always find the latest supported options by running `installJRMC --help`.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
--install, -i repo|rpm
|
--install, -i repo|rpm
|
||||||
@@ -26,18 +26,17 @@ Here is a list of possible options that can be passed to the script. You can alw
|
|||||||
--mcversion VERSION
|
--mcversion VERSION
|
||||||
Build or install a specific MC version, ex. "28.0.25"
|
Build or install a specific MC version, ex. "28.0.25"
|
||||||
--outputdir PATH
|
--outputdir PATH
|
||||||
Generate rpmbuild output in this directory (Default: $PWD/output)
|
Generate rpmbuild output in this PATH (Default: ./output)
|
||||||
--restorefile RESTOREFILE
|
--restorefile RESTOREFILE
|
||||||
Restore file location for automatic license registration (Default: skip registration)
|
Restore file location for automatic license registration (Default: skip registration)
|
||||||
--betapass PASSWORD
|
--betapass PASSWORD
|
||||||
Enter beta team password for access to beta builds
|
Enter beta team password for access to beta builds
|
||||||
--service-user USER
|
|
||||||
Install systemd services and containers for USER (Default: current user)
|
|
||||||
--service, -s SERVICE
|
--service, -s SERVICE
|
||||||
See SERVICES section below for a list of possible services to install
|
See SERVICES section below for the list of services to deploy
|
||||||
|
--service-user USER
|
||||||
|
Install systemd services and containers for user USER (Default: executing user)
|
||||||
--container, -c CONTAINER (TODO: Under construction)
|
--container, -c CONTAINER (TODO: Under construction)
|
||||||
See CONTAINERS section below for a list of possible services to install
|
See CONTAINERS section below for a list of containers to deploy
|
||||||
--createrepo
|
|
||||||
Build rpm, copy to webroot, and run createrepo
|
Build rpm, copy to webroot, and run createrepo
|
||||||
--createrepo-webroot PATH
|
--createrepo-webroot PATH
|
||||||
The webroot directory to install the repo (Default: /srv/jriver/)
|
The webroot directory to install the repo (Default: /srv/jriver/)
|
||||||
@@ -55,7 +54,7 @@ Here is a list of possible options that can be passed to the script. You can alw
|
|||||||
|
|
||||||
### services
|
### services
|
||||||
|
|
||||||
When installing systemd services it is important to execute `installJRMC` as the user you wish to run the services. Typically this is your normal user account but for some server installations it may be necessary to execute the script as root. If so, use `--service-user root` to override sanity checks.
|
When installing systemd services it is important to execute `installJRMC` as the user you wish to run the services. Typically this is your normal user account but for some server installations it may be necessary to execute the script as root. If so, use `--service-user root` to override safety checks.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
jriver-mediaserver
|
jriver-mediaserver
|
||||||
@@ -81,15 +80,15 @@ It is possible to install multiple services at one time using multiple `--servic
|
|||||||
|
|
||||||
#### `jriver-x11vnc` versus `jriver-xvnc`
|
#### `jriver-x11vnc` versus `jriver-xvnc`
|
||||||
|
|
||||||
[jriver-x11vnc](http://www.karlrunge.com/x11vnc/) shares your existing X display via VNC and can be combined with additional services to start Media Center or Media Server. Conversely, [jriver-xvnc](https://tigervnc.org/doc/Xvnc.html) creates a new Xvnc display and starts a JRiver Media Center service in the foreground of the new VNC display. The requisite firewall rules will also be added to the system firewall to enable remote access.
|
[jriver-x11vnc](http://www.karlrunge.com/x11vnc/) shares your existing X display via VNC and can be combined with additional services to start Media Center or Media Server. Conversely, [jriver-xvnc](https://tigervnc.org/doc/Xvnc.html) creates a new Xvnc display and starts a JRiver Media Center service in the foreground of the new VNC display.
|
||||||
|
|
||||||
**Note**: If `jriver-xvnc` finds an existing display it will attempt to increment the display number by 1. This should work fine in most cases, but if you have multiple running X servers on your host machine you should use the `--display` option to specify a free display.
|
**Note**: If `jriver-xvnc` finds an existing display it will attempt to increment the display number by 1. This should work fine in most cases, but if you have multiple running X servers on your host machine you should use the `--display` option to specify a free display.
|
||||||
|
|
||||||
### Firewall Rules
|
### Firewall Rules
|
||||||
|
|
||||||
`installJRMC` will automatically install and enable port forwarding firewall rules to enable remote access to Media Server (52100-52200/tcp, 1900/udp DLNA) and Xvnc/x11vnc (depends on port selection). `installJRMC` uses `firewall-cmd` on Fedora/CentOS and `ufw` on Ubuntu/Debian.
|
`installJRMC` will automatically add port forwarding firewall rules enabling remote access to Media Server (52100-52200/tcp, 1900/udp DLNA) and Xvnc/x11vnc (depends on port selection). `installJRMC` uses `firewall-cmd` on Fedora/CentOS/SUSE and `ufw` on Ubuntu/Debian.
|
||||||
|
|
||||||
**Note:** `ufw` is not installed by default on Debian but will be installed by `installJRMC`. To prevent user lock-out (i.e. SSH), Debian users that have not already enabled `ufw` will need to do so (`sudo ufw enable`) after running `installJRMC` and inspecting their rules.
|
**Note:** `ufw` is not installed by default on Debian but will be installed by `installJRMC`. To prevent user lock-out (i.e. SSH), Debian users that have not already enabled `ufw` will need to `sudo ufw enable` after running `installJRMC` and inspecting their configuration.
|
||||||
|
|
||||||
### containers
|
### containers
|
||||||
|
|
||||||
@@ -105,9 +104,9 @@ It is possible to install multiple services at one time using multiple `--servic
|
|||||||
|
|
||||||
Installs JRiver Media Center from the repository and starts/enables the /MediaServer service.
|
Installs JRiver Media Center from the repository and starts/enables the /MediaServer service.
|
||||||
|
|
||||||
* `installJRMC --install rpm --restorefile /path/to/license.mjr --mcversion 26.0.56`
|
* `installJRMC --install rpm --restorefile /path/to/license.mjr --mcversion 28.0.87`
|
||||||
|
|
||||||
Builds JRiver Media Center version 26.0.56 RPM from the source DEB, installs it (RPM distros only), and activates it using the specified .mjr license file.
|
Builds JRiver Media Center version 28.0.87 RPM from the source DEB, installs it (RPM distros only), and activates it using the specified .mjr license file.
|
||||||
|
|
||||||
* `installJRMC --createrepo --createrepo-webroot /srv/jriver/repo --createrepo-user www-user`
|
* `installJRMC --createrepo --createrepo-webroot /srv/jriver/repo --createrepo-user www-user`
|
||||||
|
|
||||||
|
|||||||
46
installJRMC
46
installJRMC
@@ -137,6 +137,7 @@ init() {
|
|||||||
firewall_cmd(){ ifSudo ufw "$@"; }
|
firewall_cmd(){ ifSudo ufw "$@"; }
|
||||||
elif [[ "$ID" =~ ^opensuse.* ]]; then
|
elif [[ "$ID" =~ ^opensuse.* ]]; then
|
||||||
echo "SUSE support is experimental!"
|
echo "SUSE support is experimental!"
|
||||||
|
echo "Use --install rpm to build and install MC for SUSE."
|
||||||
pkg_install(){ ifSudo zypper --non-interactive -q install --force --no-confirm "$@"; }
|
pkg_install(){ ifSudo zypper --non-interactive -q install --force --no-confirm "$@"; }
|
||||||
pkg_remove(){ ifSudo zypper --non-interactive -q remove --clean-deps "$@"; }
|
pkg_remove(){ ifSudo zypper --non-interactive -q remove --clean-deps "$@"; }
|
||||||
pkg_update(){ ifSudo zypper --non-interactive -q refresh jriver; }
|
pkg_update(){ ifSudo zypper --non-interactive -q refresh jriver; }
|
||||||
@@ -609,12 +610,48 @@ buildRPM() {
|
|||||||
# If you are building on SUSE, I assume you want SUSE RPMs
|
# If you are building on SUSE, I assume you want SUSE RPMs
|
||||||
# i.e. cross-building not an option but could be added
|
# i.e. cross-building not an option but could be added
|
||||||
if [[ "$ID" =~ ^opensuse.*$ ]]; then
|
if [[ "$ID" =~ ^opensuse.*$ ]]; then
|
||||||
_requires=$'Requires: Mesa-libVulkan-devel\nRequires: freetype >= 1.3.1\nRequires: libharfbuzz0 >= 2.3.1\nRequires: libX11-6 >= 1.6\nRequires: libX11-data >= 1.6\nRequires: libXdmcp6 >= 1.1\nRequires: libXext6 >= 1.3\nRequires: libepoxy0 >= 1.5.3\nRequires: libgomp1 >= 7.4\nRequires: libstdc++6 >= 7.4\nRequires: libuuid1 >= 2.33\nRequires: libva2 >= 2.4.0\nRequires: libxcb1 >= 1.1\nRequires: libgbm1 >= 18.3.6\nRequires: mozilla-nspr >= 4.20\nRequires: mozilla-nss >= 3.42'
|
read -r -d '' _requires <<- 'EOF'
|
||||||
|
Requires: Mesa-libVulkan-devel
|
||||||
|
Requires: freetype >= 1.3.1
|
||||||
|
Requires: libharfbuzz0 >= 2.3.1
|
||||||
|
Requires: libX11-6 >= 1.6
|
||||||
|
Requires: libX11-data >= 1.6
|
||||||
|
Requires: libXdmcp6 >= 1.1
|
||||||
|
Requires: libXext6 >= 1.3
|
||||||
|
Requires: libepoxy0 >= 1.5.3
|
||||||
|
Requires: libgomp1 >= 7.4
|
||||||
|
Requires: libstdc++6 >= 7.4
|
||||||
|
Requires: libuuid1 >= 2.33
|
||||||
|
Requires: libva2 >= 2.4.0
|
||||||
|
Requires: libxcb1 >= 1.1
|
||||||
|
Requires: libgbm1 >= 18.3.6
|
||||||
|
Requires: mozilla-nspr >= 4.20
|
||||||
|
Requires: mozilla-nss >= 3.42
|
||||||
|
EOF
|
||||||
|
#_requires=$'Requires: Mesa-libVulkan-devel\nRequires: freetype >= 1.3.1\nRequires: libharfbuzz0 >= 2.3.1\nRequires: libX11-6 >= 1.6\nRequires: libX11-data >= 1.6\nRequires: libXdmcp6 >= 1.1\nRequires: libXext6 >= 1.3\nRequires: libepoxy0 >= 1.5.3\nRequires: libgomp1 >= 7.4\nRequires: libstdc++6 >= 7.4\nRequires: libuuid1 >= 2.33\nRequires: libva2 >= 2.4.0\nRequires: libxcb1 >= 1.1\nRequires: libgbm1 >= 18.3.6\nRequires: mozilla-nspr >= 4.20\nRequires: mozilla-nss >= 3.42'
|
||||||
else
|
else
|
||||||
_requires=$'Requires: mesa-vulkan-drivers\nRequires: freetype >= 2.9.1\nRequires: harfbuzz >= 2.3.1\nRequires: libX11 >= 1.6\nRequires: libX11-common >= 1.6\nRequires: libXdmcp >= 1.1\nRequires: libXext >= 1.3\nRequires: libepoxy >= 1.5.3\nRequires: libgomp >= 7.4\nRequires: libstdc++ >= 7.4\nRequires: libuuid >= 2.33\nRequires: libva >= 2.4.0\nRequires: libxcb >= 1.1\nRequires: mesa-libgbm >= 18.3.6\nRequires: nspr >= 4.20\nRequires: nss >= 3.42'
|
read -r -d '' _requires <<- 'EOF'
|
||||||
|
Requires: mesa-vulkan-drivers
|
||||||
|
Requires: freetype >= 2.9.1
|
||||||
|
Requires: harfbuzz >= 2.3.1
|
||||||
|
Requires: libX11 >= 1.6
|
||||||
|
Requires: libX11-common >= 1.6
|
||||||
|
Requires: libXdmcp >= 1.1
|
||||||
|
Requires: libXext >= 1.3
|
||||||
|
Requires: libepoxy >= 1.5.3
|
||||||
|
Requires: libgomp >= 7.4
|
||||||
|
Requires: libstdc++ >= 7.4
|
||||||
|
Requires: libuuid >= 2.33
|
||||||
|
Requires: libva >= 2.4.0
|
||||||
|
Requires: libxcb >= 1.1
|
||||||
|
Requires: mesa-libgbm >= 18.3.6
|
||||||
|
Requires: nspr >= 4.20
|
||||||
|
Requires: nss >= 3.42
|
||||||
|
EOF
|
||||||
|
#_requires=$'Requires: mesa-vulkan-drivers\nRequires: freetype >= 2.9.1\nRequires: harfbuzz >= 2.3.1\nRequires: libX11 >= 1.6\nRequires: libX11-common >= 1.6\nRequires: libXdmcp >= 1.1\nRequires: libXext >= 1.3\nRequires: libepoxy >= 1.5.3\nRequires: libgomp >= 7.4\nRequires: libstdc++ >= 7.4\nRequires: libuuid >= 2.33\nRequires: libva >= 2.4.0\nRequires: libxcb >= 1.1\nRequires: mesa-libgbm >= 18.3.6\nRequires: nspr >= 4.20\nRequires: nss >= 3.42'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
debug "Requires: $_requires"
|
#debug "Requires: $_requires"
|
||||||
|
|
||||||
# Create spec file
|
# Create spec file
|
||||||
cat <<- EOF > "$_outputdir/SPECS/mediacenter.spec"
|
cat <<- EOF > "$_outputdir/SPECS/mediacenter.spec"
|
||||||
@@ -1303,8 +1340,7 @@ main() {
|
|||||||
acquireDeb
|
acquireDeb
|
||||||
if ! buildRPM; then
|
if ! buildRPM; then
|
||||||
err "Build failed."
|
err "Build failed."
|
||||||
# In case this is automated, let's remove the source DEB and reaquire
|
# For automation, let's remove the source DEB and reaquire it on next run in case it is corrupted or buggy
|
||||||
# it on next run in case it is corrupted or buggy
|
|
||||||
[[ -f "$DEBFILENAME" ]] && echo "Removing source DEB" && rm -f "$DEBFILENAME"
|
[[ -f "$DEBFILENAME" ]] && echo "Removing source DEB" && rm -f "$DEBFILENAME"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user