Skip to content

Instantly share code, notes, and snippets.

@henriquemoody
Last active July 8, 2021 09:54
  • Star 90 You must be signed in to star a gist
  • Fork 62 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save henriquemoody/3288681 to your computer and use it in GitHub Desktop.
Install Sublime Text on Fedora.
#!/usr/bin/env bash
# Usage: {script} [ OPTIONS ] TARGET VERSION
#
# TARGET Default target is "/usr/local".
# VERSION If not defined tries to get the build into the Sublime Text 2 website.
#
# OPTIONS
#
# -h, --help Displays this help message.
#
# Report bugs to Henrique Moody <henriquemoody@gmail.com>
#
set -e
if [[ "${1}" = '-h' ]] || [[ "${1}" = '--help' ]]; then
sed -E 's/^#\s?(.*)/\1/g' "${0}" |
sed -nE '/^Usage/,/^Report/p' |
sed "s/{script}/$(basename "${0}")/g"
exit
fi
declare URL
declare URL_FORMAT="http://c758482.r82.cf2.rackcdn.com/%s.tar.bz2"
declare PACKAGE="Sublime Text"
declare TARGET="${1:-/usr/local}"
declare VERSION="${2}"
declare BITS=$(uname -m)
if [[ -z "${VERSION}" ]]; then
VERSION=$(
curl -Ls http://www.sublimetext.com/2 |
grep '<h2>Version' |
head -n1 |
sed -E 's#<h2>Version ([0-9.]+)</h2>#\1#g'
)
fi
PACKAGE+=" ${VERSION}"
if [[ "${BITS}" = "x86_64" ]]; then
PACKAGE+=" x64"
fi
URL=$(printf "${URL_FORMAT}" "${PACKAGE}" | sed 's/ /%20/g')
read -p "Do you really want to install \"${PACKAGE}\" on \"${TARGET}\"? [Y/n]: " CONFIRM
CONFIRM=$(echo "${CONFIRM}" | tr [a-z] [A-Z])
if [[ "${CONFIRM}" = 'N' ]] || [[ "${CONFIRM}" = 'NO' ]]; then
echo "Aborted!"
exit
fi
echo "Downloading ${PACKAGE}"
curl -L "${URL}" | tar -xjC ${TARGET}
echo "Creating binary file"
cat > ${TARGET}/bin/subl <<SCRIPT
#!/bin/sh
if [ \${1} == \"--help\" ]; then
${TARGET}/sublime_text_3/sublime_text --help
else
${TARGET}/sublime_text_3/sublime_text \$@ > /dev/null 2>&1 &
fi
SCRIPT
echo "Creating shortcut file"
cat > "/usr/share/applications/sublime-text-2.desktop" <<SHORTCUT
[Desktop Entry]
Name=Sublime Text 2
Comment=Edit text files
Exec=/usr/local/sublime-text-2/sublime_text
Icon=/usr/local/sublime-text-2/Icon/128x128/sublime_text.png
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Utility;TextEditor;
SHORTCUT
echo "Finish!"
#!/usr/bin/env bash
# Usage: {script} [ OPTIONS ] TARGET BUILD
#
# TARGET Default target is "/usr/local".
# BUILD If not defined tries to get the build into the Sublime Text 3 website.
#
# OPTIONS
#
# -h, --help Displays this help message.
#
# Report bugs to Henrique Moody <henriquemoody@gmail.com>
#
set -e
if [[ "${1}" = '-h' ]] || [[ "${1}" = '--help' ]]; then
sed -E 's/^#\s?(.*)/\1/g' "${0}" |
sed -nE '/^Usage/,/^Report/p' |
sed "s/{script}/$(basename "${0}")/g"
exit
fi
declare URL
declare URL_FORMAT="http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_%d_x%d.tar.bz2"
declare TARGET="${1:-/usr/local}"
declare BUILD="${2}"
declare BITS
if [[ -z "${BUILD}" ]]; then
BUILD=$(
curl -Ls http://www.sublimetext.com/3 |
grep '<h2>Build' |
head -n1 |
sed -E 's#<h2>Build ([0-9]+)</h2>#\1#g'
)
fi
if [[ "$(uname -m)" = "x86_64" ]]; then
BITS=64
else
BITS=32
fi
URL=$(printf "${URL_FORMAT}" "${BUILD}" "${BITS}")
read -p "Do you really want to install Sublime Text 3 (Build ${BUILD}, x${BITS}) on \"${TARGET}\"? [Y/n]: " CONFIRM
CONFIRM=$(echo "${CONFIRM}" | tr [a-z] [A-Z])
if [[ "${CONFIRM}" = 'N' ]] || [[ "${CONFIRM}" = 'NO' ]]; then
echo "Aborted!"
exit
fi
echo "Downloading Sublime Text 3"
curl -L "${URL}" | tar -xjC ${TARGET}
echo "Creating shortcut file"
cat ${TARGET}/sublime_text_3/sublime_text.desktop |
sed "s#/opt#${TARGET}#g" |
cat > "/usr/share/applications/sublime_text.desktop"
echo "Creating binary file"
cat > ${TARGET}/bin/subl <<SCRIPT
#!/bin/sh
if [ \${1} == \"--help\" ]; then
${TARGET}/sublime_text_3/sublime_text --help
else
${TARGET}/sublime_text_3/sublime_text \$@ > /dev/null 2>&1 &
fi
SCRIPT
echo "Finish!"
@nvurgaft
Copy link

nvurgaft commented Feb 8, 2013

if you install from the script, sublime will be installed at "/usr/local/sublime-text-2"
if from the repo then sublime will install itself at "/usr/local/sublime-text/" !!

the first doesn't work for me (fedora18), neither is the menu link, the second approach does!
it puts the "sublime" executable into your PATH (/usr/bin ) so you can start it from command.

@xtranophilist
Copy link

@michahell
as @nvurgaft said, you can launch sublime from anywhere since it's in your path (/bin/sublime).

Also, I can see Sublime2 under Applications in Gnome.

@gdiazs
Copy link

gdiazs commented Mar 4, 2013

thanks!! very useful.

@t0dd
Copy link

t0dd commented Mar 23, 2013

awesome! Thx!

@vtufekciev
Copy link

Works great on Fedora 18 tnx

@chris-roerig
Copy link

Fedora 19 beta checking in. Thanks!

@kyon0304
Copy link

kyon0304 commented May 7, 2013

In my case, to enable command line use, the contents of /usr/bin/sublime/ should be:

if [ "${1}" == "--help" ]; then
/usr/local/sublime-text-2/sublime_text --help
else
/usr/local/sublime-text-2/sublime_text $@ > /dev/null 2>&1 &
fi

and I'm in fedora 18.
Hope for some use.

@closethipster
Copy link

Works perfectly with final Fedora 19 beta; thank you!

@andrewgdunn
Copy link

On Fedora 19 here, I made a different script based on this one: https://gist.github.com/storrgie/5799669

@sayak-sarkar
Copy link

Thanks!! Works great on Fedora 19.

However, you might wanna add an extra line at the end to insert a symbolic link the application at /usr/bin to enable terminal shortcut as follows:

ln -s /usr/local/sublime-text-2/sublime_text /usr/bin/sublime-text

An example can be found at this fork: https://gist.github.com/sayak-sarkar/5810101

@gustavovnicius
Copy link

Thanks! Works great!!!

I just needed to change the SCRIPT var a little bit, adding quotes in $1 parameter, cause when I call "subl" without a path specified as a parameter gave me a error:


/usr/local/bin/subl: line 2: [: =: unary operator expected

SCRIPT="#!/bin/sh
if [ \"\${1}\" == \"--help\" ]; then
    /usr/local/sublime-text-2/sublime_text --help
else
    /usr/local/sublime-text-2/sublime_text \$@ > /dev/null 2>&1 &
fi"

@spkjp
Copy link

spkjp commented Jul 13, 2013

The link should be updated to the new version:
http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2%20x64.tar.bz2

@martijnvandijk
Copy link

Works like a charm. Had to modify it a bit, I already installed sublime in /opt

@chetu
Copy link

chetu commented Aug 8, 2013

Awesome work !!!

for sublime beta 3 modified script.

_

!/bin/sh

SHORTCUT="[Desktop Entry]
Name=Sublime Text 3
Comment=Edit text files
Exec=/usr/local/sublime-text_3/sublime_text
Icon=/usr/local/sublime-text_3/Icon/128x128/sublime_text.png
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Utility;TextEditor;"
SCRIPT="#!/bin/sh
if [ ${1} == "--help" ]; then
/usr/local/sublime-text_3/sublime_text --help
else
/usr/local/sublime-text_3/sublime_text $@ > /dev/null 2>&1 &
fi"

curl -L "http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_3047_x64.tar.bz2" -o "/usr/src/Sublime Text 3.tar.bz2"
cd /usr/src
tar -xvjf "Sublime Text 3.tar.bz2"
cd "sublime_text_3"
mkdir -pv "/usr/local/sublime-text_3"
mv -fv * "/usr/local/sublime-text_3/"
echo "${SCRIPT}" > "/usr/local/bin/subl"
chmod +x "/usr/local/bin/subl"
echo "${SHORTCUT}" > "/usr/share/applications/sublime-text_3.desktop"

echo "Finish!"

@Strongground
Copy link

Works perfectly. I just get one error when starting sublime:
"/usr/local/bin/subl: 2: [: ==: unexpected operator"

Any idea where this unexpected operator comes from?
I installed on Ubuntu 13.04, 32bit.

@jamerlan
Copy link

jamerlan commented Oct 4, 2013

Strongground, this should work without error

!/bin/sh

SHORTCUT="[Desktop Entry]
Name=Sublime Text 3
Comment=Edit text files
Exec=/usr/local/sublime-text_3/sublime_text
Icon=/usr/local/sublime-text_3/Icon/128x128/sublime_text.png
Terminal=false
Type=Application
Encoding=UTF-8
Categories=Utility;TextEditor;"
SCRIPT="#!/bin/sh
/usr/local/sublime-text_3/sublime_text $@ > /dev/null 2>&1 &

curl -L "http://c758482.r82.cf2.rackcdn.com/sublime_text_3_build_3047_x64.tar.bz2" -o "/usr/src/Sublime Text 3.tar.bz2"
cd /usr/src
tar -xvjf "Sublime Text 3.tar.bz2"
cd "sublime_text_3"
mkdir -pv "/usr/local/sublime-text_3"
mv -fv * "/usr/local/sublime-text_3/"
echo "${SCRIPT}" > "/usr/local/bin/subl"
chmod +x "/usr/local/bin/subl"
echo "${SHORTCUT}" > "/usr/share/applications/sublime-text_3.desktop"

echo "Finish!"

@docbillnet
Copy link

I like the repo mentioned above:

wget -O /etc/yum.repos.d/sublime2.repo http://repo.cloudhike.com/sublime2/fedora/sublime2.repo
yum -y install sublime-text

Sadly, though the repo doesn't seemed to be maintained anymore. The newest build is a year old, and the newest Fedora versions supported is also a year old...

@uccmen
Copy link

uccmen commented Jan 11, 2014

I can't see the Sublime icon under Applications after running this script. How do I fix this?

@simonewebdesign
Copy link

@uccmen you need to update the Icon path in the sublime_text.desktop file. Icons are under the /opt/sublime_text/Icon folder (assuming you have installed it there).

Guys, if you need to install Sublime Text 3 in other Linux distros, try this script:
https://gist.github.com/simonewebdesign/8507139

@angvishvish
Copy link

really nice, works like a charm for me too ..
Thanks guys (Y)

@3esmit
Copy link

3esmit commented Mar 4, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment