RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


linux:debian:apt

apt & dpkg - сборник полезностей

apt pin для php из sury

В Debian 11 уже идёт PHP 7.4, но я предпочитаю репозиторий sury.

Задача: установить 7.4 из репозитория sury
Проблема: конфликт пакетов + установка производится из репозитория debian
Решение: повысить приоритет репозитория sury

Добавляем в /etc/apt/preferences.d/deb.sury.pref

Package: *
Pin: origin "packages.sury.org"
Pin-Priority: 900

либо только для пакетов php7.4-*

Package: *php7.4*
Pin: origin "packages.sury.org"
Pin-Priority: 900

Вариант ниже надо проверить

Package: *
Pin: release o=deb.sury.org
Pin-Priority: 900

Подсказка по priority

RU

  • P >= 1000 - пакет будет установлен, даже если это приведет к понижению версии уже установленного пакета
  • 990 ⇐ P < 1000 - пакет будет установлен, если не установлена более новая версия
  • 500 ⇐ P < 990 - пакет будет установлен, если нет пакета принадлежащего к целевому выпуску или не установлена более новая версия
  • 100 ⇐ P < 500 - пакет будет установлен, если нет кандидатов из других источников или установленного пакета более новой версии
  • 0 < P < 100 - пакет будет установлен, если нет других кандидатов и установленных пакетов любой версии
  • P < 0 - пакет не будет установлен ни при каких условиях
  • P = 0 - неопределенное состояние, не используется

EN

Package: * Pin: origin my.custom.repo.url Pin-Priority: P

Package: * Pin: origin packages.sury.org Pin-Priority: 999

  • P > 1000 causes a version to be installed even if this constitutes a downgrade of the package
  • 990 < P ⇐1000 causes a version to be installed even if it does not come from the target release, unless the installed version is more recent
  • 500 < P ⇐990 causes a version to be installed unless there is a version available belonging to the target release or the installed version is more recent
  • 100 < P ⇐500 causes a version to be installed unless there is a version available belonging to some other distribution or the installed version is more recent
  • 0 < P ⇐100 causes a version to be installed only if there is no installed version of the package
  • P < 0 prevents the version from being installed

Посмотреть версию установленного пакета

apt-show-versions nginx
dpkg -s nginx | grep -i version
apt-cache policy nginx

Устаревшая команда

apt-cache madison curl

Исключить пакет из обновлений

apt-mark

#apt-mark hold nginx
nginx set on hold.
 
# apt upgrade
The following packages have been kept back:
  nginx
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Вернуть обратно

# apt-mark unhold nginx
Canceled hold on nginx.

dpkg

# echo "nginx hold" | dpkg --set-selections

Вернуть обратно

# echo "nginx install" | dpkg --set-selections

aptitude

# aptitude hold nginx
# aptitude unhold nginx

configure: error: Please reinstall the gpgme distribution

apt-get install libgpgme11-dev

sudo: phpize: command not found

apt install php7.0-dev

rulesfile not readable: /etc/network/iptables.up.rules

iptables-persistent заменили на netfilter-persistent

iptables-persistent

# service iptables-persistent
Usage: /etc/init.d/iptables-persistent {start|restart|reload|force-reload|save|flush}

netfilter-persistent

# service netfilter-persistent
Usage: /etc/init.d/netfilter-persistent {start|restart|reload|force-reload|save|flush} 

sqlcmd

$ curl https://packages.microsoft.com/config/debian/10/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
$ sudo apt update
$ sudo apt install mssql-tools
$ /opt/mssql-tools/bin/sqlcmd

Обновить PATH, чтобы не было sqlcmd command not found

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

Ошибки

TLS not available: requires Net::SSLeay. Exiting

apt-get install libnet-ssleay-perl
apt-get install libcrypt-ssleay-perl

Unable to open env file: /etc/default/locale

Ошибка pam_env(cron:session): Unable to open env file: /etc/default/locale: No such file or directory

apt-get install locales
locale-gen en_US.UTF-8
dpkg-reconfigure locales
update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=en_US.UTF-8" >> ~/.bashrc

Проверить FIXME

Разное

Ошибка The value 'stretch-backports' is invalid for APT::Default-Release as such a release is not available in the sources

Нужно установить backports

Ошибка UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 3701: invalid continuation byte

Файл сохранен в windows редакторе. Пересохранить в UTF-8 кодировке.

Ошибка UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 103: ordinal not in range(128)

export LC_CTYPE=en_US.UTF-8
source ~/.bashrc

via

export LC_CTYPE="en_EN.UTF-8"

via

locale-gen "en_US.UTF-8"
dpkg-reconfigure locales

via

ipv4 и ipv6 для apt

Принудительно использовать v4 или v6 соединение.

Добавить в файл /etc/apt/apt.conf.d/99-force-ipv4

Acquire::ForceIPv4 "true";

или

Acquire::ForceIPv6 "true";

Запретить обновление определенных пакетов

Запретить обновление пакета mariadb-server

echo "mariadb-server hold" | dpkg --set-selections

Проверка

# dpkg --get-selections | grep mariadb-server
mariadb-server                                  hold

Если выполнить apt-get upgrade

The following packages have been kept back:
  mariadb-server mariadb-server-10.2

Разрешить обновление пакета

echo "mariadb-server install" | dpkg --set-selections

Проверка

# dpkg --get-selections | grep mariadb-server          
mariadb-server                                  install

sury php failed

❌Ошибка

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://packages.sury.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY B188E2B695BD4743
W: Failed to fetch https://packages.sury.org/php/dists/jessie/InRelease
W: Some index files failed to download. They have been ignored, or old ones used instead.

✅Решение

wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Как обновить только один пакет

# apt-get install --only-upgrade openssl

There is no public key available

# apt-get update
# apt-get install debian-archive-keyring debian-keyrin

Посмотреть с какими опциями был сконфигурирован PHP

# apt-get install php5-dev
# php-config --configure-options

APT shell & apt-spy. Особая Debian магия

/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
collect2: error: ld returned 1 exit status
# apt-get install libssl-dev libcrypto++-dev

Как вывести список всех установленных пакетов в Debian

$ dpkg --get-selections
adduser                                         install
alsa-base                                       install
alsa-utils                                      install
apache2                                         install
apache2-mpm-prefork                             install
apache2-utils                                   install
apache2.2-common                                install
apt                                             install
apt-utils                                       install
$ dpkg --get-selections | grep php

libapache2-mod-php5                             install
php-db                                          install
php-pear                                        install
php-sqlite3                                     install
php5                                            install
php5-cli                                        install
php5-common                                     install
php5-gd                                         install
php5-memcache                                   install
php5-mysql                                      install
php5-sqlite                                     install
php5-sqlite3                                    install
php5-xsl                                        install

mailx и s-nail

Ошибка - mailx: invalid option – 'S'.
Решение - заменить mailx на s-nail ¯\_(ツ)_/¯

История утилиты mail из 70-х годов - mail, Mail, mailx, nail—history notes

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
linux/debian/apt.txt · Последнее изменение: 2023/05/22 23:28 — dx