Signal Desktop on Fedora
Signal Desktop has been released some time ago and while a native application may have its advantages, it also needs time and effort until it will be available for other platforms.
grunt breakage:
Binary installation
The install routine for "Debian-based Linux" instructs us to do the following:> curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add - > $ echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | \ > sudo tee -a /etc/apt/sources.list.d/signal-xenial.list > $ sudo apt update && sudo apt install signal-desktopWith only a Fedora distribution around, we could of course use alien to install the package, but:
$ sudo dnf install alien [...] Transaction Summary =============================== Install 70 Packages....let's not and instead do this manually. Luckily, their download directory structure adhers to the Debian Repository Format, so with a bit of fiddling we can produce the necessary URLs:
$ curl -sLO https://updates.signal.org/desktop/apt/dists/xenial/InRelease $ gpg --recv-keys D980A17457F6FB06 $ gpg --verify InRelease gpg: Signature made Wed 20 Dec 2017 11:43:08 AM PST gpg: using RSA key D980A17457F6FB06 gpg: Good signature from "Open Whisper SystemsThe" [unknown] Primary key fingerprint: DBA3 6B51 81D0 C816 F630 E889 D980 A174 57F6 FB06
InRelease
is signed and contains checksums to the Packages
file:
$ curl -sLO https://updates.signal.org/desktop/apt/dists/xenial/main/binary-amd64/Packages $ sha256sum Packages 121c0e796cef911240bb39b6d5ebed747202e9be8261808ecbf3fc4641da9e7b Packages $ grep 121c0e796cef911240bb39b6d5ebed747202e9be8261808ecbf3fc4641da9e7b InRelease 121c0e796cef911240bb39b6d5ebed747202e9be8261808ecbf3fc4641da9e7b 2578 main/binary-amd64/PackagesLet's look at the
Packages
file for the actual packages available for download:
$ egrep '^(Package|SHA256|File|$)' Packages Package: signal-desktop Filename: pool/main/s/signal-desktop/signal-desktop_1.1.0_amd64.deb SHA256: 74ee408fa5c7047b1f2a7faa2a9fe0d5947f7f960bd7776636705af69a6b1eec Package: signal-desktop Filename: pool/main/s/signal-desktop/signal-desktop_1.0.41_amd64.deb SHA256: 9cf87647e21bbe0c1b81e66f88832fe2ec7e868bf594413eb96f0bf3633a3f25 Package: signal-desktop-beta Filename: pool/main/s/signal-desktop-beta/signal-desktop-beta_1.1.0-beta.6_amd64.deb SHA256: a38eb35001618019affba7df4e54ccbb36581d232876e0f1af9622970b38aa12We decide to use the
signal-desktop-beta
and continue:
$ curl -sLO https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop-beta/signal-desktop-beta_1.1.0-beta.6_amd64.deb $ sha256sum signal-desktop-beta_1.1.0-beta.6_amd64.deb a38eb35001618019affba7df4e54ccbb36581d232876e0f1af9622970b38aa12 signal-desktop-beta_1.1.0-beta.6_amd64.debTo extract the package, we'll need the dpkg package:
$ sudo dnf install dpkg $ dpkg -x signal-desktop-beta_1.1.0-beta.6_amd64.deb debCheck if all libraries are installed:
$ ldd deb/opt/Signal\ Beta/signal-desktop-beta | grep notLooks good - let's "install" the package in
/opt
now:
sudo mv deb/opt/Signal\ Beta /opt/ sudo chown -R root:root /opt/Signal\ Beta/ sudo ln -s /opt/Signal\ Beta/signal-desktop-beta /usr/local/bin/signal-desktop-betaCreate desktop shortcut and icons:
mv deb/usr/share/applications/signal-desktop-beta.desktop ~/.local/share/applications/signal-desktop-beta.desktop rsync -av deb/usr/share/icons/hicolor/ ~/.local/share/icons/hicolor/The
.desktop
file should contain something like this:
$ cat ~/.local/share/applications/signal-desktop-beta.desktop [Desktop Entry] Name=Signal Desktop Beta Comment=Private messaging from your desktop Exec="/opt/Signal Beta/signal-desktop-beta" %U Terminal=false Type=Application Icon=signal-desktop-betaWith all that in place, Signal Desktop Beta should be ready to go. Don't forget to migrate the data from the old installation!
Build from source
Building from source may need a ton of dependencies, so it may or may not be desirable to install all that on a desktop system. The short version of the install routine would be:git clone https://github.com/WhisperSystems/Signal-Desktop.git Signal-Desktop-git cd Signal-Desktop-git yarn config set cache-folder /usr/local/src/tmp/yarn/ npm config set cache /usr/local/src/tmp/npm/ TMPDIR=/usr/local/src/tmp/ npm installSo far, so good, but then there's some
$ node_modules/grunt-cli/bin/grunt Loading "sass.js" tasks...ERROR >> Error: ENOENT: no such file or directory, scandir '../node_modules/node-sass/vendor' Loading "sass.js" tasks...ERROR >> Error: ENOENT: no such file or directory, scandir '../node_modules/node-sass/vendor' Warning: Task "sass" not found. Use --force to continue. Aborted due to warnings....TBD :-\