From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 4 Dec 2019 16:42:34 +0300 (MSK) From: Ivan Zakharyaschev To: "devel@ where you _can_ ask" In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (LFD 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; BOUNDARY="1807885841-1761559597-1575466954=:28829" Subject: Re: [newbies] Spec, Rpm, Conflicts-pre (?) X-BeenThere: devel-newbies@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: "devel@ where you _can_ ask" List-Id: "devel@ where you _can_ ask" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Dec 2019 13:42:34 -0000 Archived-At: List-Archive: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --1807885841-1761559597-1575466954=:28829 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Hello! On Wed, 4 Dec 2019, Anton Shevtsov wrote: > Суть вопроса. Делаю небольшой метапакет, не для апстрима, для локального > использования. Хотя и достаточного глобального использования. > > Смысл такой, что надо установить chromium-gost, при этом удалить chromium, > при этом создать симлинку /usr/bin/chromium -> /usr/bin/chromium-gost > > В spec пишу > .. > Requires(pre): chromium-gost > ... > %post > ln -s /usr/bin/chromium-gost /usr/bin/chromium > %postun > rm -f /usr/bin/chromium > ... > > при попытке установить мой метапакет, выводится, что обычный хромиум будет > удален, будет поставлен chromium-gost. На этом этапе все хорошо. Пакеты > ставятся, но тут же получаю > > ln: не удалось создать символьную ссылку '/usr/bin/chromium': Файл > существует > > Что логично ибо логика пакетного менеджера _сначала установить_, а лишь > потом _удалить_. Т.е. симлинка пытается появится, когда еще установлен > обычный chromium. > > А Conflicts(pre) нету, чтобы удалить его раньше установки. Раз Conflicts(pre) нету, можно было бы придумать попробовать Requires(pre): conflicts-chromium а в пакете conflicts-chromium поставить Conflicts: chromium Но я так не советую пробовать делать в первую очередь, см. моё предложение ниже. > Есть ли механим, вмешаться в транзакцию и удалить пакет раньше? Какие пути > решения? Вмешаться в порядок действия в транзакцию довольно сложно, там и так в коде rpm всё очень непросто в этом месте. Мне кажется, в Вашем случае этот симлинк можно просто положить в секцию %files Вашего пакета. Раз в результате транзакции старый владелец этого файла (пакет chromium) удаляется, то rpm это учтёт и без жалоб сразу на этом месте создаст новый симлинк при выполнении транзакции. -- Best regards, Ivan --1807885841-1761559597-1575466954=:28829--