Я загрузил этот debian пакет:
curl https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql/msodbcsql_13.1.4.0-1_amd64.deb -o msodbcsql_13.1.4.0-1_amd64.deb
Затем я выполнил следующую команду:
sudo ACCEPT_EULA=Y dpkg -i msodbcsql_13.1.4.0-1_amd64.deb
И я возвратил следующие сообщения:
Selecting previously unselected package msodbcsql.
(Reading database ... 255078 files and directories currently installed.)
Preparing to unpack msodbcsql_13.1.4.0-1_amd64.deb ...
Unpacking msodbcsql (13.1.4.0-1) ...
dpkg: dependency problems prevent configuration of msodbcsql:
msodbcsql depends on unixodbc (>= 2.3.1); however:
Package unixodbc is not installed.
dpkg: error processing package msodbcsql (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
msodbcsql
Таким образом, я понял, что должен был установить unixodbc
, таким образом, я сделал sudo apt-get install unixodbc
получение следующего вывода:
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies.
unixodbc : Depends: libodbc1 (>= 2.3.1) but it is not going to be installed
Depends: odbcinst1debian2 (>= 2.3.1) but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
В этой точке я начал пытаться удалить "половину установленного" пакета, и я попробовал несколько разных подходов:
Это sudo dpkg -r msodbcsql
дает:
(Reading database ... 255091 files and directories currently installed.)
Removing msodbcsql (13.1.4.0-1) ...
dpkg: error processing package msodbcsql (--remove):
subprocess installed post-removal script returned error exit status 127
Errors were encountered while processing:
msodbcsql
Это sudo apt-get autoremove
дает:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
msodbcsql
0 to upgrade, 0 to newly install, 1 to remove and 10 not to upgrade.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
(Reading database ... 255077 files and directories currently installed.)
Removing msodbcsql (13.1.4.0-1) ...
dpkg: error processing package msodbcsql (--remove):
subprocess installed post-removal script returned error exit status 127
Errors were encountered while processing:
msodbcsql
E: Sub-process /usr/bin/dpkg returned an error code (1)
Это sudo apt-get --purge remove && sudo apt-get autoclean
дает:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
msodbcsql
0 to upgrade, 0 to newly install, 1 to remove and 10 not to upgrade.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
(Reading database ... 255077 files and directories currently installed.)
Removing msodbcsql (13.1.4.0-1) ...
dpkg: error processing package msodbcsql (--remove):
subprocess installed post-removal script returned error exit status 127
Errors were encountered while processing:
msodbcsql
E: Sub-process /usr/bin/dpkg returned an error code (1)
Это sudo apt-get -f install
дает:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED
msodbcsql
0 to upgrade, 0 to newly install, 1 to remove and 10 not to upgrade.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
(Reading database ... 255077 files and directories currently installed.)
Removing msodbcsql (13.1.4.0-1) ...
dpkg: error processing package msodbcsql (--remove):
subprocess installed post-removal script returned error exit status 127
Errors were encountered while processing:
msodbcsql
E: Sub-process /usr/bin/dpkg returned an error code (1)
Я также попытался искать некоторые подстановочные знаки с sudo find / -name *msodbc*
в файловой системе, чтобы надеяться найти огромный двоичный файл и удалить его вручную, но ничто интересное появился.
Я немного обеспокоен этим удалением, поскольку все предыдущие попытки, кажется, отдают то же сообщение об ошибке / код, и я не нахожу способ или удалить ту "половину установленного" пакета или диагностировать проблему.
Есть ли какой-либо файл журнала, я мог взглянуть или что-либо еще, что я мог сделать для удаления того пакета?
Мои детали Ubuntu:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
$ uname -a
Linux oe-laptop 4.10.0-37-generic #41~16.04.1-Ubuntu SMP Fri Oct 6 22:42:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
Обычно при установке пакета с dpkg -i
мы выполнили бы с:
sudo apt install -f
В зависимости от того, требуются ли зависимости, и гарантировать, что необходимые зависимости установлены, но в Вашем случае, Вы пытались удалить пакет, который не был настроен право во-первых. Так использование:
sudo apt update
sudo dpkg --configure -a
сделал две вещи (1): обновите индексные записи диспетчера пакетов, (2): исправьте любые конфигурации мисс, которые Вы вызвали при попытке установить и удалить. sudo apt update
привычка, за которой я обычно следую для решения вопросов о зависимостях, и последняя команда добилась цели.
Проблема, с которой Вы столкнулись, состоит в том, что dpkg не разрешает зависимости. Это было составлено тем, что Вы, казалось, не прочитали или не следовали сообщению, Вы получили "Попытку, 'склонную - получают установку-f'".
Обычно sudo apt-get -f install
твердость проблема как склонная будет разрешать и устанавливать зависимости. Это имело бы в Вашем случае как проблема wsa решенный после ручной установки зависимостей.
, Если бы у Вас должна была быть проблема с sudo apt-get -f install
, необходимо было бы вырыть глубже и зависимости от твердости вручную.
Поэтому при установке .deb таким образом Вы были бы:
sudo dpkg -i foo.deb
sudo apt-get -f install #this command will install dependencies
sudo dpkg -i foo.deb
Вы получали сообщения об ошибках, поскольку Вы пытались удалить пакет, который не был полностью установлен из-за недостающих зависимостей, и Вы разрешили проблему путем установки зависимостей вручную.
я рад, что Вы решили свою проблему, но в следующий раз, не пугайте, читайте сообщения.
В будущем, если при всем возможном применении ppa и/или читают сначала.
<час>Также проверяют подробные инструкции в Установка Microsoft ODBC Driver для SQL Server на Linux и странице macOS , сохраняемой Microsoft:
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev
Проверка также: склонный - добираются, как зафиксировать очень поврежденные пакеты для дальнейшего поиска и устранения неисправностей.