outline-apps icon indicating copy to clipboard operation
outline-apps copied to clipboard

RPM / appimage version?

Open Psijic opened this issue 8 months ago • 11 comments

Hello, found the new releases support only .deb for linux. What about other (RPM-based) distros?

Psijic avatar Apr 16 '25 08:04 Psijic

Hi @Psijic ! You're right, the new release is only ".deb" for Linux right now. Since Ubuntu is our officially supported OS and there's an ongoing electron issue, we went with ".deb" and also completely rewrote the routing.

You can still use older "AppImage" versions, but they won't have the new updates. If you want the latest, you can build an "AppImage" from the source, but keep in mind that the routing change might cause problems with some special Outline keys (like WebSocket).

jyyi1 avatar Apr 19 '25 00:04 jyyi1

It's a weird choice to support only .deb when a universal package manager such as Flatpak is available. I tried to build the client with Electron from the source, but this bug is still present.

San4itos avatar Apr 20 '25 06:04 San4itos

Probably try Outline CLI? https://github.com/Jigsaw-Code/outline-sdk/tree/main/x/examples/outline-cli

Though the routing of CLI is older, it's still newer than the AppImage one.

jyyi1 avatar Apr 21 '25 17:04 jyyi1

Is it hard to build the client from sources?

Psijic avatar Apr 23 '25 11:04 Psijic

Probably try Outline CLI? https://github.com/Jigsaw-Code/outline-sdk/tree/main/x/examples/outline-cli

Though the routing of CLI is older, it's still newer than the AppImage one.

Is there a manual how to build? What go version needed? I see I need to build it first

 gcc-go [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.13 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.14 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.15 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.16 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.17 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.18 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.19 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.20 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.21 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.22 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.23 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.24 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]
  * go1.9 [ path: /usr/bin/go, repository: openSUSE:repo-oss ]

Psijic avatar Apr 23 '25 11:04 Psijic

Tried gcc-go and go1.24 and go1.20 but

./go/pkg/mod/github.com/!jigsaw-!code/[email protected]/transport/happyeyeballs.go:90:29: error: reference to undefined identifier ‘atomic.Int32’
   90 |                 var pending atomic.Int32
      |                             ^
../go/pkg/mod/github.com/!jigsaw-!code/[email protected]/transport/happyeyeballs.go:194:52: error: reference to undefined identifier ‘errors.Join’
  194 |                                 lookupErr = errors.Join(lookupErr, lookupRes.Err)
      |                                                    ^
../go/pkg/mod/github.com/!jigsaw-!code/[email protected]/transport/happyeyeballs.go:242:50: error: reference to undefined identifier ‘errors.Join’
  242 |                                 dialErr = errors.Join(dialErr, dialRes.Err)
      |                                                  ^
note: module requires Go 1.20

Looks it's hardcoded a while.

Psijic avatar Apr 23 '25 11:04 Psijic

Is it hard to build the client from sources?

Not really. I didn't have the Zig compiler installed, and the 'shasum' utility was not in the /usr/bin folder. Other than that, everything was fine.

I used this repo https://github.com/Kira-NT/outline-cli for the CLI client. It has an install script and is easy to use. Works good.

San4itos avatar Apr 23 '25 17:04 San4itos

Tried gcc-go and go1.24 and go1.20 but

./go/pkg/mod/github.com/!jigsaw-!code/[email protected]/transport/happyeyeballs.go:90:29: error: reference to undefined identifier ‘atomic.Int32’
   90 |                 var pending atomic.Int32
      |                             ^
../go/pkg/mod/github.com/!jigsaw-!code/[email protected]/transport/happyeyeballs.go:194:52: error: reference to undefined identifier ‘errors.Join’
  194 |                                 lookupErr = errors.Join(lookupErr, lookupRes.Err)
      |                                                    ^
../go/pkg/mod/github.com/!jigsaw-!code/[email protected]/transport/happyeyeballs.go:242:50: error: reference to undefined identifier ‘errors.Join’
  242 |                                 dialErr = errors.Join(dialErr, dialRes.Err)
      |                                                  ^
note: module requires Go 1.20

Looks it's hardcoded a while.

This error indicates that your Go environment is not setup correctly (maybe share your go env output for troubleshooting?). Please use the official Go binary, not gcc-go. You can find more information here (any version after 1.22 should be compatible): https://go.dev/doc/install

Please also make sure you run go env, not go1.24 env.

jyyi1 avatar Apr 28 '25 21:04 jyyi1

Thanks, guys, for the CLI tool — at the very least, it's working great. Please continue supporting it since RPM support has been officially dropped.

Steps to build on Fedora:

sudo dnf install golang-bin
sudo dnf install glibc-static libstdc++-static
git clone https://github.com/Jigsaw-Code/outline-sdk.git
cd outline-sdk/x/examples/
sudo go build -o outline-cli  -ldflags="-extldflags=-static" ./outline-cli
cd outline-cli
sudo cp outline-cli /usr/local/bin/

Run: sudo outline-cli --transport "ss://<outline-server-access-key>"

dyedfox avatar May 22 '25 07:05 dyedfox

I am using Fedora do daily tasks. AppImage is ok, but I would prefer RPM version. Is it indeed so difficult to automate build process and build RPM for Fedora?

mars-json avatar Oct 31 '25 13:10 mars-json

Hi @Psijic ! You're right, the new release is only ".deb" for Linux right now. Since Ubuntu is our officially supported OS and there's an ongoing electron issue, we went with ".deb" and also completely rewrote the routing.

You can still use older "AppImage" versions, but they won't have the new updates. If you want the latest, you can build an "AppImage" from the source, but keep in mind that the routing change might cause problems with some special Outline keys (like WebSocket).

Hi @jyyi1 ! Do I understand correctly that AppImage client is not updated anymore? My be, we can build AppImage using Fedora Linux installation?

mars-json avatar Oct 31 '25 13:10 mars-json