{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "M9K blog: заметки с тегом apt-pinning",
    "_rss_description": "Заметки обо всём: devops, lifestyle, культура.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/blog.m9k.space\/tags\/apt-pinning\/",
    "feed_url": "https:\/\/blog.m9k.space\/tags\/apt-pinning\/json\/",
    "icon": "https:\/\/blog.m9k.space\/user\/userpic@2x.jpg?1769095194",
    "author": {
        "name": "M",
        "url": "https:\/\/blog.m9k.space\/",
        "avatar": "https:\/\/blog.m9k.space\/user\/userpic@2x.jpg?1769095194"
    },
    "items": [
        {
            "id": "201",
            "url": "https:\/\/blog.m9k.space\/all\/skreschivaem-uzha-i-ezha\/",
            "title": "CouchDB, Debian, AstraLinux, Docker и все-все-все",
            "content_html": "<p>Возникла необходимость запустить Couchdb в контейнере, где базовая ось (и базовые же пакеты) должны быть очень-очень свежими, в противной случай контейнер не проходит встроенную проверку на безопасность.<br \/>\nСтандартный официальный образ собран на базе Debian 12.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">FROM debian:bookworm-slim<\/code><\/pre><p>Простая замена базового образа на<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">FROM debian:trixie-slim<\/code><\/pre><p>приводит к тому, что контейнер не собирается по зависимостям.<br \/>\nСмотрим официальную репу в части зависимостей и видим прекрасное — libmozjs-78-0 (>= 78.15.0). Пробуем ставить свежую версию, которая есть в репах — не помогает, пакет couchdb принципиально требует libmozjs-78-0.<\/p>\n<p>Ок, скрещиваем ежа и ужа.<\/p>\n<p>У debian есть механизм apt-pinning. Это механизм, позволяющий задать приоритеты для версий пакетов из разных источников (репозиториев, release-веток, PPA), чтобы фиксировать версию, запрещать обновление или предпочитать конкретный источник.<\/p>\n<p>Коротко приоритеты делятся на:<\/p>\n<ul>\n<li>< 0 — никогда не устанавливать.<\/li>\n<li>1..99 — ставить только при явном указании версии.<\/li>\n<li>100 — приоритет уже установленной версии.<\/li>\n<li>500 — дефолт для неприоритетных источников.<\/li>\n<li>990 — приоритет для целевого релиза (-t), либо если явно указан release.<\/li>\n<li>>1000 — разрешает понижение версии (downgrade) к закреплённой.<\/li>\n<\/ul>\n<p>Добавляет в наш Dockerfile:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">RUN echo &quot;deb http:\/\/deb.debian.org\/debian bookworm main&quot; &gt; \/etc\/apt\/sources.list.d\/bookworm.list &amp;&amp; \\\r\n    echo &quot;Package: *\\nPin: release n=bookworm\\nPin-Priority: 500&quot; &gt; \/etc\/apt\/preferences.d\/bookworm &amp;&amp; \\\r\n    echo &quot;Package: *\\nPin: release n=trixie\\nPin-Priority: 600&quot; &gt; \/etc\/apt\/preferences.d\/trixie &amp;&amp; \\\r\n    echo &quot;deb [signed-by=\/usr\/share\/keyrings\/couchdb-archive-keyring.gpg] https:\/\/apache.jfrog.io\/artifactory\/couchdb-deb\/ bookworm main&quot; \\\r\n            &gt; \/etc\/apt\/sources.list.d\/couchdb.list &amp;&amp; \\\r\n    apt-get update<\/code><\/pre><p>Основная часть пакетов ставится из свежей репы, часть, которых в ней нет — из старых.<\/p>\n",
            "date_published": "2025-08-14T10:40:09+00:00",
            "date_modified": "2025-08-14T10:40:08+00:00",
            "_date_published_rfc2822": "Thu, 14 Aug 2025 10:40:09 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "201",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3877,
    "_e2_ua_string": "E2 (v3877; Aegea)"
}