Problem
During the past couple of weeks I have set out to learn more about Docker and how I can incorporate it more into development processes to automate and standardize workflows. I have been using a small AWS Linux EC2 instance based on a Amazon Linux AMI. I wanted to use mssql-tools
to connect to a SQL Server instance running inside a container. It did not appear that mssql-tools
were installed on the machine at the time (In retrospect, it may just have been that I did not have the bin directory set up properly in my Path
).
The steps below were a result of figuring out how to install mssql-tools on the Linux instance. Along the way I learned a little about yum
and repository priorities. Let’s dig in…
sqlcmd Version
My first step when trying to use sqlcmd
was to check the verion
sqlcmd | grep Version
It appeared to be not installed, which is what led me to figuring out how to install it.
As I mentioned before, I should have verified for sure that it was not installed and just not in my PATH
yet. Lesson learned!
Uninstall previous version
Although I didn’t think there was a previous version to uninstall, I decided to continue to follow the full installation instructions from Microsoft, which included uninstalling of mssql-tools
and unixODBC-utf16-devel
.
sudo yum remove mssql-tools unixODBC-utf16-devel
Install current version
The next step for me was to install mssql-tools
and unixODBC-devel
.
Download the repository configuration file from Microsoft
sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
exit
Install tools
sudo yum install mssql-tools unixODBC-devel
First snag!
Most interesting was the message:
2 packages excluded due to repository priority protections
Time to do some digging.
yum repository priorities
Given my very limited experience with yum
, I did a quick search and found the documentation for yum priorities. The usage sections stated “Packages from repositories with a lower priority will never be used to upgrade packages that were installed from a repository with a higher priority.”. This seemed to be the first indication I was on the right path.
Given that the plugin appeared to be installed and active on this install of Linux, I located the location of the configuration file (/etc/yum/pluginconf.d/priorities.conf) and updated the following line from
[main]
enabled=1
to
[main]
enabled=0
Side note: While writing this post I came across some documentation from Amazon explains why this is on by default for Amazon Linux AMI’s and suggests there is an alternate way around this problem to allow for other repositories. See AWS documentation.
Side note #2: There is an old Centos thread related to yum-priorities
that is also worth reading.
With the plugin now disabled, I was successfully able to install mssql-tools
and unixODBC-devel
and accepts the licensce terms.
Setup PATH
Lastly, I added the bin directory for sqlcmd to my bash PATH
in the ~/.bash_profile
file…
…and confirmed the install.
Automation
During my search, I came across a post by Kagarlickij Dmitriy. He provides a nice shell script to check your version, turn off yum priorities, and install mssql-tools. Github repository
Featured image by Cesar Carlevarino Aragon @ unsplash.com