Debian Jessie çok fazla backport kuruyor


9

Debian Jessie var ve backports ekledim ( bu talimatlara göre ):

echo "deb http://http.debian.net/debian jessie-backports main contrib non-free" | sudo tee /etc/apt/sources.list.d/backports.list

(Bunu, dizüstü bilgisayarımdaki bazı donanımlar için gerektiğinde daha yeni bir çekirdek elde etmek için yaptım.)

Talimatlar, açıkça bir backported paket istemediğim sürece hiçbir şeyin olmaması gerektiğini söylüyor. örn apt-get -t jessie-backports install "package".

Ancak şimdi sistemimde backport'lardan bir sürü yük var gibi görünüyor ve bir paketin yüklemesi yok, çünkü tam bir sürüme bağlı olarak, arka bağlantı noktalarına güncellenmiş bir şey.

Benim sorum:

  • İlk önce nasıl durdurabilirim, böylece daha fazla backport kurulmaz?
  • Mevcut backport'ları nasıl kaldırabilirim?

Not: Bu, backport'lardan (ve apt-get installbazı nedenlerden dolayı sudo apt-get installboru hattının sonunda yankı koymak işe yaramazsa) yüklenmiş paketlerin bir listesini alır :

cat /var/log/dpkg.log.1 |grep -v linux | grep -v xserver | grep -v firmware | grep "status installed" | grep bpo | cut -d" " -f 5 | cut -d: -f 1 | xargs -i{} -n1 bash -c "dpkg-query -s {} >/dev/null && echo {}" | sed -r -e "s~.*~\0/jessie~" | xargs echo

Dikkat:

Bazı paketler otomatik olarak yüklenir, bu nedenle hepsini yeniden yüklerseniz, otomatik olarak kurulan bu paketler manuel olarak yüklendi olarak işaretlenir. Böylece ihtiyaç olmadığında çıkarılmaz.

Bunu nasıl çözeceğine dair herhangi bir fikri olan var mı?

Yanıtlar:


10
  1. Aşağıdakilerden birini /etc/apt/apt.confveya altındaki bir dosyayı eklemeyi deneyin /etc/apt/apt.conf.d:

    APT::Default-Release "jessie";

  2. Mevcut backport'ları kaldırmak için, hangilerinin kurulduğunu ve hangi sürümü değiştirdiklerini listelemeniz gerekir. Neyse ki, bu bilgiler çok kolay bir şekilde/var/log/dpkg.log

örneğin grep ' upgrade ' /var/log/dpkg.logsize aşağıdaki gibi birçok satır verecektir:

2016-02-15 11:06:32 upgrade python-numpy:amd64 1:1.11.0~b2-1 1:1.11.0~b3-1

Bu, 15 Şubat'ta 11:06'da python-numpy'yi sürüm 1: 1.11.0 ~ b2-1'den sürüm 1: 1.11.0 ~ b3-1'e yükselttiğimi söylüyor

Önceki sürüme geçmek isteseydim, o zaman çalıştırırım:

apt-get install python-numpy=1:1.11.0~b2-1

NOT: Bu özel durumda, muhtemelen çalışmaz çünkü debian sidaka çalıştırıyorum, unstablebu yüzden eski sürüm muhtemelen deb deposunda artık mevcut değil. Eğer çalıştırıyorsanız jessieJessie-backports sürüme downgrade olarak bir paketin bir jessie sürümünü yükleyerek yeniden ve olan beklendiği gibi, işe yarayacak.

Benzer şekilde, bir paket kaldırıldı eğer bunu ve için grepping ederek tam sürümünü bulabilirsiniz removeiçinde /var/log/dpkg.log.


Birçok paketlerin Toplu plana itmesi büyük ölçüde gibi standart araçlar kullanılarak otomatik hale getirilebilir awkve grep. Örneğin, yüklediğiniz jessie-backports yükseltmelerinin belirli bir günde (örneğin 2016-02-15) yapıldığını biliyorsanız, önceki sürümlere aşağıdaki gibi bir sürümle geçebilirsiniz:

 apt-get -d -u install $(awk '/2016-02-15 ..:..:.. upgrade / {print $4 "=" $5}'
    /var/log/dpkg.log)

(yatay kaydırma çubuğunu önlemek için satır besleme ve girinti eklendi)

NOT -d( --download-only) seçeneğinin kullanımı. Komutu yeniden çalıştırın ve apt-get installistediğinizi ve SADECE istediğinizi yapacağınızı doğruladıktan sonra bu seçeneği kaldırın .

Ayrıca awk, hangi paketlerin ve sürümlerin yeniden yükleneceğini tam olarak görebilmeniz için önce bu komutun yalnızca bir kısmını çalıştırmayı öneriyorum .


1
'büyük ölçüde otomatikleştirilmiş' ile kastediyorum, çoğunlukla sorunsuz çalışacak olsa da, her zaman mükemmel çalışmaz / çalışmaz (ilgili paketlere ve bağımlı / öneri / çatışma / vb. hatlarına bağlı olarak). El kaldırma biriyle yüklemek veya gereken bir ya da iki paket olabilir apt-getya dpkg. Panik yapmadığınız sürece endişelenecek bir şey yok. Paketleme sistemlerindeki sorunların çoğu, düşünmeden panik yapan ve tepki veren insanların nedenidir .... yavaşça alın ve harekete geçmeden önce düşünün.
cas

Yeni çekirdek paketlerini @ @ backports'a sabitlememeli mi?
Rui F Ribeiro

Zarar vermezdi ama gerekli değildir ve sabitleme sadece Apt :: Default-Release'i ayarlamaktan biraz daha karmaşık ve zordur. apt-getaçıkça söylemediğiniz sürece önceden yüklenmiş bir paketi eski sürüme geçirmez. Ve @richard, jessieaçıkça belirtmedikçe paketleri varsayılan olarak yüklemek istediğini söyledi jessie-backports- dileklerin çekirdek paketleri için de geçerli olduğunu varsayıyorum.
cas

muhtemelen benim gibi yeni bir çekirdeğe sahip olmak için jessie'de 4 çekirdeğine sahip olmak için backports içerdiğini söyledi.
Rui F Ribeiro

1
Sanırım stable+ kullanan insanlar stable-backportsmuhtemelen iğnelemeyi benden çok daha fazla önemsiyorlar ve bu konuda daha fazla bilgi edinmek için çaba sarf ediyorlar. unstableSistemlerimi en son SID'i düzenli olarak düzenli aralıklarla (ara sıra ekstralar ile experimental) senkronize etmeye çalışıyorum , bu yüzden sabitlemeye çok az ihtiyacım var. Gnome3'e geçiş sırasında çok fazla kullandığım tek zaman yıllar önce, gnome2 paketlerimin değiştirilmesini istemediğimde - sabitlemek için sürekli değişen paket listesini tutmanın bir PITA olduğunu hatırlıyorum. O zamandan beri xfce'ye geçtim ve gnome'u temizledim.
cas

1

Düzgün ayarlanmadığınız anlaşılıyor /etc/apt/preferences. Aşağıdakiler, jessie-backports'tan herhangi bir şeyin yüklenmesini önleyecek ve kurulumunu söyleyecek şeyleri (backported çekirdek gibi) bekleyecektir. Belirtilen paketler, backport'larda listelenmeyen başka paketler gerektiriyorsa sorun yaşamaya devam edeceksiniz.

Package: *
Pin: release n=jessie-backports
Pin-Priority: -1

Package: *
Pin: release n=jessie
Pin-Priority: 1000

# this will allow you to not have to use '-t jessie-backports install'
Package: linux-doc linux-headers-amd64 linux-image-amd64 linux-source
Pin: release n=jessie-backports
Pin-Priority: 1000

Yüklü olarak desteklenen paketlerin bir listesini almak istiyorsanız aşağıdaki komut dosyasını (veya bir kısmını) kullanabilirsiniz:

chmod a+x name_of_script ./name_of_script > name_of_output_file

#!/bin/bash
RELEASES="jessie-backports"

echo  "Searching for installed packages from" >&2
echo $RELEASES | sed s/^/" * "/ | sed s/\|/"\n * "/g >&2

for package in $(dpkg -l | grep -i ^ii | awk '{print $2}')
do
check=$( apt-cache policy $package 2>&1 | grep -i -A 1 "[*]" | egrep $RELEASES )
if [ "$check" == "" ] ; then
 echo -ne "." >&2
else
 echo -ne "#" >&2
 echo
 apt-cache policy $package
fi
done
echo >&2
echo

Yukarıdaki komut dosyası tarafından listelenen paketleri eski sürüme geçirmek istiyorsanız aşağıdakileri ekleyin /etc/apt/preferences:

Package: package1 package2 package3
Pin: release n=jessie
Pin-Priority: 1000

O zaman koş:

sudo apt-get upgrade

1

/ Etc / apt / preferences ve /etc/apt/preferences.d/ içinde apt için yapılandırma ayarlarınızı kontrol edin

Özel bir sabitleme yapılandırması eklemiş ve unutmuş olabilir misiniz? Sana göre, backport'ları tercih edebileceğini düşünebileceğim tek yol bu. Aksi takdirde, yalnızca belirttiğiniz paketlerin gerektirdiği bağımlılıkları çeker.

Resmi backport'lar, backported paketlerindeki jessie'den zaten daha düşük (100) sabitlenmiş. Backports deposundaki Release dosyası. Jessie-backports yerine jessie'yi tercih etmek için herhangi bir apt yapılandırması yapmanıza gerek yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.