[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Error while upgrading from Wheezy to Stretch



On Thu, Apr 19, 2018 at 02:47:05PM -0400, Gene Heskett wrote:
> On Thursday 19 April 2018 11:32:28 Roberto C. Sánchez wrote:
> 
> > The only thing I would say is use apt "pinning" to prioritize the
> > backports repository lower than the other repositories so you don't
> > accidentally get backports for *everything* that has a backport
> > available.
> >
> 
> Hijacking a thread here, but it reads like I might be reading an expert.
> 
> "Pinning" is an interesting subject Roberto, interesting because the info 
> on how to do it is generally skipped over, or only mentioned in passing, 
> with NO examples of how to do it in the man pages available. I have it 
> working on one machine, but it was a heck of a trip getting there, and I 
> still have had no confirmation that I actually did it correctly. That 
> machine is a raspi-3b running jessie. But with an rt-preempt kernel 
> because its main reason-de-terre is LinuxCNC.  Its running a 3/4 ton 
> metal working lathe.
> 
> In /etc/apt/preferences.d/kernel.pref:
> pi@picnc:/etc/apt/preferences.d $ cat kernel.pref
> Package:linux-kernel
> pin: version 4.4.4-rt9-v7+
> Pin-Priority: 1001
> 
> Package: linux-headers
> Pin: version 4.4.4-rt9-v7+
> Pin-Priority: 1001
> 
> Package: raspberrypi-bootloader
> Pin: version 1.20170427-1
> Pin-Priority: 1001
> 
> Package: raspberrypi-kernel
> Pin: version 1.20170427-1
> Pin-Priority: 1001
> 
> Is this the approved method? All I know is that for me, its working, and 
> anything related to a kernel update is skipped.

Indiscriminate pinning is terrible. That's because it's a
powerful tool. 1001 is almost certainly not what you really
want to do here if you are regularly updating your system. And
if you are not updating your system at all, you don't need 
to apt-pin.

Here's a quick guide that I wrote some time ago:

---

Let us suppose that you are running Debian stable, but there are
some packages that you would like from the backports archive.
However, you don’t want all backports replacements to be brought
in.

In etc/apt/sources.list.d/backposts.list add the backports repo.
As I write this, Jessie is stable, so:

deb http://http.debian.net/debian jessie-backports main contrib
non-free

Note that the source lists must end with .list or they will be
ignored.

In etc/apt/preferences.d/priorities:

Package: *
Pin: release a=jessie
Pin-Priority: 900

Package: *
Pin: release a=jessie-backports
Pin-Priority: 50

and run apt-get update

There are magic levels for the numbers in the priority field.
They are explained, at length, in man apt_preferences. The
highlights:

    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

Now, to install a single backported package, apt-get install
packagename/jessie-backports, and to install a backported
package plus any dependencies which are also backported, use
apt-get -t jessie-backports packagename

If jessie gets an update more recent than the backports version
you installed, it will be installed.

When you upgrade to the next stable version, remove the pinning
before the dist-upgrade, and consider if you need to reinstate
it.


Reply to: