LINUX.ORG.RU

Баг или руки кривые? apt-get install и apt-get source не совпадают по версиям

 ,


0

1

Есть система, в которой, поскольку иногда нужны пакеты из testing/sid добавлены нужные ветки, но в preferences установлено, что по-умолчанию скачивать только из stable.

Заметил, вроде раньше такого не было, что apt-get install ставит версию из stable, а вот apt-get source и apt-get build-dep ориентируются на sid. так что приходится им явно указывать -t stable

Заодно в cat /etc/debian_version почему-то вместо stretch записан buster/sid

При этом все текущие обновления обновляются как stable

sources.list

# cat /etc/apt/sources.list

deb http://ftp.ru.debian.org/debian/ stretch main non-free contrib
deb-src http://ftp.ru.debian.org/debian/ stretch main non-free contrib

#
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

# stretch-updates, previously known as 'volatile'
deb http://ftp.ru.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.ru.debian.org/debian/ stretch-updates main contrib non-free

# stretch-backports, previously on backports.debian.org
deb http://ftp.ru.debian.org/debian/ stretch-backports main contrib non-free
deb-src http://ftp.ru.debian.org/debian/ stretch-backports main contrib non-free

#deb-multimedia
deb http://deb-multimedia.org stretch main non-free
deb http://deb-multimedia.org stretch-backports main non-free
deb-src http://deb-multimedia.org stretch main non-free


#testing
deb http://ftp.ru.debian.org/debian/ testing main non-free contrib
deb-src http://ftp.ru.debian.org/debian/ testing main non-free contrib

#Sid
deb http://ftp.ru.debian.org/debian/ sid main non-free contrib
deb-src http://ftp.ru.debian.org/debian/ sid main non-free contrib

и preferences

# cat /etc/apt/preferences
#OTHER
Package: *
Pin: release a=stable
Pin-priority: 550

#OTHER
Package: *
Pin: release a=testing
Pin-priority: 500

#OTHER
Package: *
Pin: release a=sid
Pin-priority: 450

Так вот или я чего не допонял или apt-get source игнорирует preferences?

У меня подобное поведение повторяется. И в man apt_preferences я не нашёл ничего про src-пакеты. Надо или покопаться в исходниках apt, или спрашивать у мантейнеров. Возможно, так и задумано.

shell-script ★★★★★ ()

Заодно в cat /etc/debian_version почему-то вместо stretch записан buster/sid

Значит, уже заразил свой stable. Посмотри, какие пакеты стоят не из stable. Попробуй такой запрос к aptitude:

aptitude -F %p%t search '~i ?not(?archive(^stable$))'

Кто знает: может, ты давно уже обновляешься не из stable.

Zubok ★★★★★ ()

Заметил, вроде раньше такого не было, что apt-get install ставит версию из stable, а вот apt-get source и apt-get build-dep ориентируются на sid.

братья! в наши ряды прокрался арчевод!

darkenshvein ★★★★★ ()

apt-get source качает либо последнюю версию, либо для релиза, указанного в APT::Default-Release, либо для релиза, явно указанного через -t. Остальные preferences он игнорирует. Собственно, а зачем ему пиннинг, если он тупо качает сорцы?

redgremlin ★★★★★ ()
Ответ на: комментарий от Zubok

Значит, уже заразил свой stable. Посмотри, какие пакеты стоят не из stable. Попробуй такой запрос к aptitude:

Нет, обновления у меня ставятся из stable, тут всё нормально.

aptitude -F %p%t search '~i ?not(?archive(^stable$))'

Нет, там всё в порядке, буквально несколько пакетов unstable

anonymous_incognito ★★★★★ ()
Ответ на: комментарий от redgremlin

apt-get source качает либо последнюю версию, либо для релиза, указанного в APT::Default-Release, либо для релиза, явно указанного через -t.

А кстати, куда нынче в debian заховали APT::Default-Release ? Что-то я нигде его не нашёл в /etc/apt вообще.

Остальные preferences он игнорирует. Собственно, а зачем ему пиннинг, если он тупо качает сорцы?

Вообще логика есть, конечно. Но как-то интуитивно казалось, что сорцы он должен качать, соответствующие тому что по умолчанию ставится в систему.

anonymous_incognito ★★★★★ ()
Ответ на: комментарий от anonymous_incognito

Ну а кто тогда обновил пакет base-files, в котором /etc/debian_version и идет. Кто-то притянул.

$ dpkg -S /etc/debian_version
base-files: /etc/debian_version

Выяснить можно, конечно, от какого установленного пакета из не stable зависит этот пакет:

aptitude -F %p%t search '~Dbase-files ~i ?not(?archive(^stable$))'

Но если это не тревожит...

Zubok ★★★★★ ()
Ответ на: комментарий от anonymous_incognito

Вообще логика есть, конечно. Но как-то интуитивно казалось, что сорцы он должен качать, соответствующие тому что по умолчанию ставится в систему.

А это все в man apt-get и написано. Поведение документированное:

       source
           source causes apt-get to fetch source packages. APT will examine
           the available packages to decide which source package to fetch. It
           will then find and download into the current directory the newest
           available version of that source package while respecting the
           default release, set with the option APT::Default-Release, the -t
           option or per package with the pkg/release syntax, if possible.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Хм,

# apt-show-versions base-files
base-files:amd64/testing 10.1 uptodate
base-files:i386 not installed

Выяснить можно, конечно, от какого установленного пакета из не stable зависит этот пакет:

Пусто. То есть, aptitude ничего не выдал. Что-то я уже не понимаю юмора. Похоже, что какой-то пакет притянул base-files, подозреваю, что hashcat, которым я баловался недавно.

Как-то я раньше не занимался сложными откатами пакетов, в смысле, сделать remove и установить stable для base-files немного чересчур, от него же дофига всего зависит. И вообще, его удаление, скорее всего разрушит систему.

anonymous_incognito ★★★★★ ()
Последнее исправление: anonymous_incognito (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

И вообще, его удаление, скорее всего разрушит систему.

От него как от пакета напрямую мало чего зависит.

Все пакеты:

$ aptitude search ~Dbase-files

Только установленные:

$ aptitude search ~Dbase-files~i

Если охота заморочиться, то можно сделать корректный downgrade, указав правильный приоритет конкретно этому пакету в preferences. Об этом можно почитать.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

Если охота заморочиться, то можно сделать корректный downgrade, указав правильный приоритет конкретно этому пакету в preferences. Об этом можно почитать.

А разве в этом случае не сохранится просто текущая версия?

anonymous_incognito ★★★★★ ()
Ответ на: комментарий от anonymous_incognito

А разве в этом случае не сохранится просто текущая версия?

Если не вписать соответсвующий приоритет пакету base-files, apt будет всеми силами упираться, если попросишь его поставить версию из stable. Не помню, что он скажет конкретно. В нормальной ситуации apt никогда не дайнгрейдит пакеты, пока ты специально ему об этом не скажешь. Можешь попробовать сказать ему поставить пакет base-file с указанием версии из stable:

# aptitude reinstall base-files=9.9+deb9u5

В apt-get, по-моему, примерно такой же синтаксис. Можно сказать install или install --reinstall. Вот на такое apt ругнется, скорее всего (я точно не понмю, а проверять, подключая какие-то репозиториине хочу. Можешь сам проверить, ничего страшного не произойдет. Проверяешь таким образом, что действительно ругается.

И вот чтобы не ругался, надо пакету дать приоритет >1000. Что-то вроде такого:

Package: base-files
Pin: release a=stable
Pin-Priority: 1001

Потом обязательно apt-get update и пробуй снова ставить конкретную версию (текущая в stable) как выше. Ну и расскажешь, что получится.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok
The following packages will be REINSTALLED:
  base-files 
The following packages will be REMOVED:
  fonts-symbola{u} libdirectfb-1.2-9{u} libradare2-2.3{u} libradare2-2.4{u} libsdl-image1.2{u} libvlccore8{u}

Похоже ну нафиг. Посмотрю, что дальше будет, в конце-концов, не сервер, можно и на testing целиком перейти.

За советы спасибо, просто я смотрю, что надо будет потом ещё и с другими пакетами возню устроить, и не факт, что по зависимостям потом не начнётся каша.

P.S. Просто похоже надо понимать, что если принялся ставить пакеты не из stable, рано или поздно система «заразится».

anonymous_incognito ★★★★★ ()
Последнее исправление: anonymous_incognito (всего исправлений: 2)
Ответ на: комментарий от anonymous_incognito

Похоже ну нафиг. Посмотрю, что дальше будет, в конце-концов, не сервер, можно и на testing целиком перейти.

А эти пакеты могут быть никому не нужны, на самом деле, поэтому сносятся (как бы неявный autoremove делается). Невероятно, чтобы они зависели от base-files. Можешь проверить:

$ aptitude search ~Rfonts-symbola~i

Наверняка установленных пакетов таких не будет.

libradare2-2.3{u} libradare2-2.4{u}

Этих уже нет ни в testing, ни в sid - там 2.8 уже. Похоже, все эти пакеты просто висят в системе почему-то и никому не нужны. Сделай просто autoremove в apt-get и посмотри, снесутся ли они без даунгрейда base-files

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

В итоге оно беззвучно выполнило

# aptitude install base-files=9.9+deb9u5
The following packages will be DOWNGRADED:
  base-files 
dpkg: warning: downgrading base-files from 10.1 to 9.9+deb9u5

Сейчас попробую перезагрузиться. Вроде всё нормально. Теперь даже странно, кто поставил 10.1

anonymous_incognito ★★★★★ ()
Последнее исправление: anonymous_incognito (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

А это с правилом в preferences или без него? Я просто хочу подтвердить, что apt ругался бы, если бы ты даунгрейдил без проставленного приоритета. Он ругался, что, типа, у вас стоит самый новый пакет, вы пытаетесь снизить версию, поэтому идите нафиг? По идее должен был.

P.S. Если с правилом, то потом его можно спокойно удалить.

Zubok ★★★★★ ()
Ответ на: комментарий от anonymous_incognito

Вроде всё нормально. Теперь даже странно, кто поставил 10.1

Один из пакетов из testing/sid, который зависит от base-files и который либо установлен сейчас либо был установлен. Еще base-files могли прийти по рекомендации, но в stable нет пакетов, которые рекомендуют base-files:

$ aptitude search '?recommends(base-files)'
$

Рекомендуемые могли прийти, если по умолчанию стоит настройка apt, устанавливать их. А вот по зависимости его могли притащить вот эти пакеты (установленные и нет, но которые могли быть ранее установлены и снесены):

$ aptitude -F %C%p%t search ~Dbase-files

На самом деле, в списке может не оказаться пакета, который ты ставил, но он мог быть поставлен ранее по косвенной зависимости: A->B->base-files.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 3)
Ответ на: комментарий от Zubok

Ничего такого, кажется нет.

# aptitude -F %C%p%t search ~Dbase-files
installed  bash                                        stable                   
purged     bash:i386                                   stable                   
purged     bsd-mailx                                   stable                   
purged     bsd-mailx:i386                              stable                   
purged     dict-foldoc                                 stable,testing,unstable  
purged     kup-server                                  stable,testing,unstable  
purged     liblog4cxx-doc                              stable,unstable          
installed  libnss-mdns                                 stable                   
purged     libnss-mdns:i386                            stable                   
purged     python-parsedatetime                        stable                   
installed  rsync                                       stable                   
purged     rsync:i386                                  stable                   
purged     s-nail                                      stable                   
purged     s-nail:i386                                 stable                   
purged     speechd-el                                  stable,testing,unstable  
purged     speechd-el-doc-cs                           stable,testing,unstable  
purged     trn4                                        stable                   
purged     trn4:i386                                   stable                   
purged     weechat-scripts                             stable

В общем, что-то однажды из unstable захотело новых base-files, но сейчас даже не видно в зависимостях. А может и не из unstable, а какой сторонний пакет, с ними я тоже игрался, ставил и сносил.

anonymous_incognito ★★★★★ ()
Последнее исправление: anonymous_incognito (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

Ну, в ощем, можно покопаться, но в этом смысла особого нет. Вообще, изначально идея мешать stable, testing и sid — моветон (это слабый тут термин). Правильный путь для stable — это backports и самостоятельное бэкпортирование в локальном репозитории. По возможности, конечно.

Если ты в стабильный дистрибутив подмешиваешь чуть-чуть нестабильного, то быстро получишь нестабильный микс какой-то. Часть библиотек обновляются из нестабильных, а стабильные пакеты ставят в зависимостях libastral (>=1.0), а значит, что и 1.8 из unstable может их не испугать, а там в реальности API/ABI уже поменялись, и все — нерабочая программа. Нет, программа может и работать, но может уже и не заработать. Или же возникнут конфликты пакетов, которые вынудят просто обновлять все системообразующие пакеты или часть из них из нестабильной ветки. Получится в итоге фигня.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

Я вспомнил одну заковырку, из-за которой пакеты тебе могут показаться не все. Мы как-то обсуждали в этом старом очень треде: [debian] Как найти все пакеты, поставленные из unstable ветки?

Решение для него вот в этом комментарии: [debian] Как найти все пакеты, поставленные из unstable ветки? (комментарий)

В треде выясняется, почему сначала некорректный вывод появляется (особенность apt). В результате пришли к некоторому устраивающему решению. Если лень читать, то эта строчка покажет все пакеты, которые поставлены из unstable и которых нет в testing и stable. Но вот только он не покажет пакеты, которые поставлены из unstable у которых версия не отличается от stable, то есть не изменилась.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

Вот этот вот запрос в этом треде тебе не все покажет. Баг или руки кривые? apt-get install и apt-get source не совпадают по версиям (комментарий)

Потому что он покажет только то, что есть в testing, unstable, но отсутствует в stable. А таких пакетов немного. Всю картину не покажет.

Zubok ★★★★★ ()
Ответ на: комментарий от Zubok

На некоторые пакеты он показывает <NULL>, впрочем как и «now» - это похоже то, что не из репов. А в общем, ничего удивительного не показал.

Скорее всего, я тот пакет, который апгрейднул base-files до testing уже давно удалил.

anonymous_incognito ★★★★★ ()
Последнее исправление: anonymous_incognito (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

Ну удивительного он ничего и не покажет - только те пакеты, которые ты ставил. Что там вообще удивительного может оказаться? bash, rsync в списке нет?

<NULL> - это какой-то недебиановский источник. Такое могут показать сторонние пакеты типа, я не знаю, virtualbox, которые из репов Oracle идет. и тому подобное. можно в формат добавить поле %O. покажет origin. Еще так могут показываться локальные пакеты, которые из deb ставил при помощи dpkg.

now? А это, наверное, deb-multimedia? Или что? Видимо, какой-то репозиторий был, но потом был удален или закомментирован. Может, ppa пытался какие-то подключать? Посмотри, что на пакеты из now показывает aptitude versions <пакет>. Там, может, суффиксу типа -dmo и похожих можно понять, откуда он.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 6)
Ответ на: комментарий от Zubok

Что там вообще удивительного может оказаться? bash, rsync в списке нет?

Нет, да в общем ясно.

now? А это, наверное, deb-multimedia? Или что?

Нет, это что-то вообще недебиановское, как и NULL, например, драйвера от МФУ Brother.

В общем, смысла более копать сейчас не вижу. Если интересно, то вот что у меня сейчас

# aptitude -F %p%t search '?any-version(!~A^stable$~i)'
brdcp7045nlpr:i386                                                            now                                                       
brscan-skey                                                                   now                                                       
brscan3                                                                       now                                                       
cupswrapperdcp7045n:i386                                                      now                                                       
aegisub                                                                       testing,unstable
file                                                                          testing,unstable                                                                                    
libcapstone3                                                                  testing,unstable                                          
libglvnd0                                                                     testing,unstable                                          
libglvnd0:i386                                                                testing,unstable                                          
libmagic-dev                                                                  testing,unstable                                          
libmagic-mgc                                                                  testing,unstable                                          
libmagic1                                                                     testing,unstable                                          
libnpgsql2.2-cil                                                              unstable                                                  
libradare2-2.1                                                                now                                                       
libradare2-2.6                                                                now                                                       
libradare2-common                                                             testing,unstable                                          
libradare2-dev                                                                testing,unstable                                          
monodevelop-database                                                          now                                                       
opera                                                                         stable                                                    
palemoon                                                                      <NULL>                                                    
phoronix-test-suite                                                           now                                                       
quake2-demo-data                                                              now                                                       
radare2                                                                       testing,unstable                                          
virtualbox-5.1                                                                <NULL> 

Интересно ещё, что я с месяц назад клонировал систему на другой комп и там почти такой же список, но не было перехода на base-files. В общем, это можно долго пытаться ковыряться. Я даже толком не вспомню, всё что я ставил и сносил, в том числе не из дебиана.

anonymous_incognito ★★★★★ ()
Последнее исправление: anonymous_incognito (всего исправлений: 1)
Ответ на: комментарий от anonymous_incognito

В общем, смысла более копать сейчас не вижу. Если интересно, то вот что у меня сейчас

Тебе там выше предлагалось удалить вот эти два пакета, то это правильно - radare2 в testing/unstable уж от libradare2-2.8 зависит. Если обновишь пакеты, то вот эти библиотеки под снос и должны были пойти.

libradare2-2.1                                                  
libradare2-2.6                                                  

А зачем тебе вообще тогда нужны testing и unstable? Из-за radare2 только? Все остальное на stable ставится должно — palemoon, opera, virtualbox, phoronix-test-suite. Зачем тебе нестабильные ветки вообще нужны были?

Zubok ★★★★★ ()