如何安装 18.04 版的软件包的较新版本?

如何安装 18.04 版的软件包的较新版本?

我还有一个问题opensmtpd在 Ubuntu 18.04 上...

apt-get install opensmtpd

...安装版本6.0.3p1-1build1,但存在一个问题:

systemdopensmtpd.service似乎认为这ExecStop=/usr/sbin/smtpctl stop将停止服务。然而,smtpctl stop它会产生一个非零的退出代码,并且其输出也暗示它不知道该子命令:

possibilities are:
discover
encrypt
pause
resume
show
log
monitor
profile
remove
schedule
trace
uncorrupt
unprofile
untrace
update

我发现这个问题已经认可固定的在版本中6.0.3p1-2

那是2018年3月,距今已有一年半多了。

我看到确实安装了较新的版本Ubuntu 18.1019.04....那么为什么这个版本以及此后的更新版本还没有进入 18.04 呢?

怎么会这样呢?

答案1

这里有两个选择:

  • 您必须向启动板编写全面的错误报告,以便apport-bug opensmtpd通知开发人员可能存在的问题。

  • 您必须从迪斯科仿生的

    cd ~/Downloads
    wget http://archive.ubuntu.com/ubuntu/pool/universe/o/opensmtpd/opensmtpd_6.0.3p1-5_amd64.deb
    sudo apt-get install ./opensmtpd_6.0.3p1-5_amd64.deb
    

    但是这个手动安装的软件包将不会收到安全更新。


更新:我已经举报错误 1840586为您提供反向移植/SRU(稳定版本升级)请求。

答案2

同时,我研究了 Bionic 和 Discoopensmtpd软件包之间的差异,并得出结论:默认ExecStop行为systemd足以使得opensmtpd确实停止。

diff -p ./{bionic,disco}/lib/systemd/system/opensmtpd.service

*** ./bionic/lib/systemd/system/opensmtpd.service 2018-01-16 17:18:40.000000000 +0000
--- ./disco/lib/systemd/system/opensmtpd.service  2018-03-18 16:16:45.000000000 +0000
*************** After=network.target
*** 6,12 ****
  [Service]
  Type=forking
  ExecStart=/usr/sbin/smtpd
! ExecStop=/usr/sbin/smtpctl stop

  [Install]
  WantedBy=multi-user.target
--- 6,12 ----
  [Service]
  Type=forking
  ExecStart=/usr/sbin/smtpd
! ExecStop=/bin/kill -15 $MAINPID

  [Install]
  WantedBy=multi-user.target

据我所知,disco 的ExecStop=/bin/kill -15 $MAINPID线路只是systemd明确表示的默认行为。

所以。这是我暂时采用的临时解决方法,我们等待并希望@N0rbert 的错误报告领取:

sudo apt-get install opensmtpd
sudo systemctl edit opensmtpd.service

...然后将其复制/粘贴到编辑器中:

[Service]

    ##  While waiting for [this bug](https://bugs.launchpad.net/ubuntu/+source/opensmtpd/+bug/1840586)
    ##  to be fixed, work around it as follows:
    ##
    ##  Clear `ExecStop` to get the [default systemd behaviour](https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStop=)
    ##  back;
    ##
    ExecStop=

# vim: syntax=systemd expandtab shiftround shiftwidth=4 softtabstop=4 tabstop=4

...最后,重新加载并重新启动:

sudo systemctl restart opensmtpd

证明它有效:

journalctl -u opensmtpd
...
Aug 19 10:10:13 ip-10-0-2-210 systemd[1]: Stopping OpenSMTPD SMTP server...
Aug 19 10:10:13 ip-10-0-2-210 smtpd[2163]: Exiting
Aug 19 10:10:13 ip-10-0-2-210 systemd[1]: Stopped OpenSMTPD SMTP server.
Aug 19 10:10:13 ip-10-0-2-210 systemd[1]: Starting OpenSMTPD SMTP server...
Aug 19 10:10:13 ip-10-0-2-210 smtpd[5987]: info: OpenSMTPD 6.0.3-portable starting
Aug 19 10:10:13 ip-10-0-2-210 systemd[1]: Started OpenSMTPD SMTP server.

希望有人会发现这很有用。

相关内容