microsoft / linux-package-repositories

Microsoft Packaged Linux Software (DEBs, RPMs, etc) are hosted on packages.microsoft.com (PMC) made available as native Linux repositories for use with package managers like APT, YUM, etc.
https://packages.microsoft.com
MIT License
69 stars 17 forks source link

Issue Pyodbc library installation on Azure Databricks 13.3 DBR version #94

Closed MPavankumar1 closed 7 months ago

MPavankumar1 commented 11 months ago

Issue: On Azure Databricks clusters with DBX 13.3 runtime, to download the msodbcsql18 package it requires some additional package ( “odbcinst”).

image

On Log comparison b/w 12.2 and 13.3 runtimes. In 12.2 log file to download the msodbcsql17 driver, it doesn’t require odbcinst package. Whereas to download msodbcsql18 driver the package file is showing a dependency on “odbcinst” package as shown above

image

In the 'Packages' section, the details indicate version 2.3.7(refer screenshot below), still the system is attempting to download version 2.3.9. Our understanding is since version 2.3.9 is not found, it defaults to downloading from [http://archive.ubuntu.com]

image

Please check this difference from 12.2 to 13.3 DBR versions and update packages.microsoft.com with 2.3.9 version for updated Ubuntu on 13.3 DBR

Steps to Reproduce Installing with following code

os.system('curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -') os.system('curl https://packages.microsoft.com/config/ubuntu/**22.04**/prod.list > /etc/apt/sources.list.d/mssql-release.list') os.system('sudo apt-get update') os.system('sudo ACCEPT_EULA=Y apt-get -q -y install msodbcsql18') os.system('sudo apt-get install python3-pip -y')

sdherr commented 11 months ago

I have sent an internal message asking the relevant team to take a look at this.

v-chojas commented 11 months ago

I was unable to reproduce this on a newly created Ubuntu 22.04 Azure VM. msodbcsql18 installs successfully with no errors (and is version 18.3.2.1.) The fact that you are seeing 18.2.2.1 suggests the apt metadata has not been updated, please apt-get update to fetch the latest metadata from the repo and try again.

MPavankumar1 commented 11 months ago

I did more analysis on standard out logs. When installing pyodbc and msodbcsql17 on Databricks DBR 12.2, the logs doesn't show dependency of odbcinst, whereas installing msodbcsql18 and pyodbc on Databricks DBR 13.3 shows dependency of odbcinst package.

12.2 installation logs: image

13.3 installation logs: image

Attached log files.

odbcinst package is downloaded from archive.ubuntu.com which is missing in previous installations.

Our end customer has requirement to have dependency packages available in the [packages.microsoft.com] rather than download it from [http://archive.ubuntu.com] which is on port 80 where wouldn’t allow any external traffic.

Can we know why this behavioral change?

What is the workaround?

12_2DBR_msodbcsql17_pyodbc.txt

This 13.3 testing is on our lab environment where traffic is allowed on port 80 to reach archive.ubuntu.com

13_3DBR_msodbcsql18_pyodbc.txt

v-chojas commented 11 months ago

In both of those logs you are downloading packages from archive.ubuntu.com .

MPavankumar1 commented 11 months ago

The attachments are for working lab environment and shared for difference in installing dependency package odbcinst in 13.3 which is not present in 12.2

Here is attachment for 13.3 where errors occurring only in 13.3 for odbcinst on port 80 13_3DBR_error.txt

v-chojas commented 11 months ago

You can run dpkg-deb -I on the msodbcsql17 and msodbcsql18 packages to inspect their dependencies. You will see they are exactly the same.

sanyamgoyal26 commented 11 months ago

I have captured a screenshot down on the dependencies which was shared before. “Odbcinst” is the additional dependency we see for msodbcsql18 package.

msodbcsql17 vs msodbcsql18 dependencies

In the 'Packages' section, the details indicate version 2.3.7 (screenshot 2, package file) , still the system is attempting to download version 2.3.9. Our understanding is since version 2.3.9 is not found, it defaults to downloading from [http://archive.ubuntu.com]

image

v-chojas commented 11 months ago

Look at the dependencies written in the package itself with the dpkg-deb -I command. You will see that they are identical, and thus what you are experiencing is not a difference there.

sanyamgoyal26 commented 11 months ago

Can you upload the results here?

v-chojas commented 11 months ago

I am asking you to do it so that you can see the results for yourself.

sanyamgoyal26 commented 9 months ago

Hi,

We tried to run dpkg-deb -I msodbcsql17 command and it returned attached error. Not sure if we are executing it correctly. PFA the error we encountered.

Also, we tried to install msodbcsql18 package both on DBR runtime 12.2 and 13.3. It got installed successfully for 12.2 runtime. However, it's not getting installed for 13.3 runtime. PFA the error details in the logs screenshots.

error dpkg-deb error_msodbcsql18_13 3runtime msodbcsql18_12 2runtime

sanyamgoyal26 commented 9 months ago

Just to mention, 2nd screenshot contains the error details while installing msodbcsql18 package on 13.3 DBx runtime. It is not able to install odbcinst package in 13.3 whereas in 12.2 runtime cluster, it is able to install odbcinst package.

mike-f50 commented 7 months ago

Just to note, I'm seeing the same issue here.

mbearup commented 7 months ago

@mike-f50 please clarify which issue you're referring to.

mbearup commented 7 months ago

@mike-f50, I've synced with @v-chojas and determined what's happening here. The odbc packages hosted in the packages.microsoft.com (PMC) repo are version 2.3.7 (vs 2.3.9 on Ubuntu). Apt will naturally find and install the newest packages unless instructed otherwise. You can instruct apt to use the packages from PMC as follows: sudo apt-get install libodbc1=2.3.7 odbcinst1debian2=2.3.7 odbcinst=2.3.7 unixodbc=2.3.7

Note that there are some essential dependencies that can only be retrieved from the distro (Ubuntu). Presumably these are already present in your environment, so they shouldn't pose a problem during install libc6 (>= 2.19), libstdc++6 (>= 4.8.2), libkrb5-3, openssl, debconf (>= 0.5)

mike-f50 commented 6 months ago

Thanks @mbearup. Adding the following to my notebook seems to have got me up and running on 13.3 😀

%sh
apt-get -y install libodbc1=2.3.7 odbcinst1debian2=2.3.7 odbcinst=2.3.7 unixodbc=2.3.7  --allow-downgrades