Public bug reported: [Availability]
The package is already in universe since Xenial and it builds fine in all supported architectures but riscv64. In Debian it builds fine on riscv64, needs some investigation on why it fails in Ubuntu. [Rationale] Prometheus is a systems and services monitoring system and time series database, and also one of the key packages in the LMA (Logging, Monitoring, Alerting) stack nowadays. It has been widely adopted by the community, it has many exporters/plugins which allow one to to hook up many different tools. [Security] Searching for prometheus in the National Vulnerability Database we have 8 entries: http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=prometheus Only 2 of them are affecting Prometheus itself, the others are vulnerabilities in other tools when exposing data to Prometheus. One from 2002 which allowed arbitrary PHP code execution, and a cross-site scripting flaw from 2019. Searching for prometheus in the OSS security mailing list I got one entry: https://www.openwall.com/lists/oss-security/2019/08/09/1 It is a security issue from 2019 in kube-state-metrics, not in Prometheus itself. Nothing was found int the Ubuntu CVE tracker. Some comments about the package content: - All the binaries are placed in /usr/bin -> /usr/bin/{prometheus,promtool,tsdb} - suid and sgid are not set - It ships a sysvinit and systemd service files -> /etc/init.d/prometheus and /lib/systemd/system/prometheus.service - It binds to port 9090 and 9100 by default There is a patch submitted to Debian to harden systemd configuration here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=950759 I am willing to work on it and get it applied in Debian. [Quality assurance] After installing the package the service starts automatically based on the default config placed in /etc/prometheus/prometheus.yml. Since it recommends prometheus-node-exporter when the package is installed it already starts to collect data from the host. There is one bug reported in Debian which could improve the user experience: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=855145 The DEP8 test is defined by the autodep8 package, it basically runs the upstream test suite against the installed version. It is passing in all architectures at the moment. When installing the package there is no debconf question prompted to the user. A debconf dialog will pop up only if it is upgrading from version 1.x to 2.x to migrate the data (there are some breaking changes), not the case in Groovy. Bugs: - Debian: https://bugs.debian.org/cgi-bin/pkgreport.cgi?repeatmerged=no&src=prometheus -> 8 bugs in total, 4 bugs closed -> Nothing critical, 2 bugs which could improve the quality of the package already mentioned above - Ubuntu: https://bugs.launchpad.net/ubuntu/+source/prometheus/ -> 2 bugs in total: not buildable in Focal, and user requesting a newer version in Bionic - Upstream: https://github.com/prometheus/prometheus/issues -> 3275 bugs closed and 253 opened -> Upstream is quite active and there is no critical issue AFAIK There is no involvement of exotic hardware. The upstream test suite is executed during build time in all architectures, the same is done for DEP8 tests (autodep8 implementation gor Golang packages). No other kind of smoke test is done while executing autopkgtest. However, upstream tests are quite good and have catched up some bugs recently. The Prometheus source package provides a debian/watch file which works fine. Yet it is not used by the package maintainers, most of the Golang packages do not use it. The regular workflow to import a new version is to add a reference to the upstream remote git repository and merge tags/commits manually, that's also better to analyze the vendor code. $ uscan --verbose uscan info: uscan (version 2.20.2ubuntu2) See uscan(1) for help uscan info: Scan watch files in . uscan info: Check debian/watch and debian/changelog in . uscan info: package="prometheus" version="2.20.0+ds-1" (as seen in debian/changelog) uscan info: package="prometheus" version="2.20.0+ds" (no epoch/revision) uscan info: ./debian/changelog sets package="prometheus" version="2.20.0+ds" uscan info: Process watch file at: debian/watch package = prometheus version = 2.20.0+ds pkg_dir = . uscan info: opts: filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/prometheus-\$1\.tar\.gz/,uversionmangle=s/(\d)[_\.\-\+]?(RC|rc|pre|dev|beta|alpha)[.]?(\d*)$/\$1~\$2\$3/,dversionmangle=s/\+ds\d*$//, uscan info: line: https://github.com/prometheus/prometheus/tags .*/v?(\d\S*)\.tar\.gz uscan info: Parsing filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/prometheus-\$1\.tar\.gz/ uscan info: Parsing uversionmangle=s/(\d)[_\.\-\+]?(RC|rc|pre|dev|beta|alpha)[.]?(\d*)$/\$1~\$2\$3/ uscan info: Parsing dversionmangle=s/\+ds\d*$// uscan info: line: https://github.com/prometheus/prometheus/tags .*/v?(\d\S*)\.tar\.gz uscan info: Last orig.tar.* tarball version (from debian/changelog): 2.20.0+ds uscan info: Last orig.tar.* tarball version (dversionmangled): 2.20.0 uscan info: Requesting URL: https://github.com/prometheus/prometheus/tags uscan info: Matching pattern: (?:(?:https://github.com)?\/prometheus\/prometheus\/tags)?.*/v?(\d\S*)\.tar\.gz uscan info: Found the following matching hrefs on the web page (newest first): /prometheus/prometheus/archive/v2.20.0.tar.gz (2.20.0) index=2.20.0-1 /prometheus/prometheus/archive/v2.20.0-rc.1.tar.gz (2.20.0~rc1) index=2.20.0~rc1-1 /prometheus/prometheus/archive/v2.20.0-rc.0.tar.gz (2.20.0~rc0) index=2.20.0~rc0-1 /prometheus/prometheus/archive/v2.19.3.tar.gz (2.19.3) index=2.19.3-1 /prometheus/prometheus/archive/v2.19.2.tar.gz (2.19.2) index=2.19.2-1 /prometheus/prometheus/archive/v2.19.1.tar.gz (2.19.1) index=2.19.1-1 /prometheus/prometheus/archive/v2.19.0.tar.gz (2.19.0) index=2.19.0-1 /prometheus/prometheus/archive/v2.19.0-rc.0.tar.gz (2.19.0~rc0) index=2.19.0~rc0-1 /prometheus/prometheus/archive/v2.18.2.tar.gz (2.18.2) index=2.18.2-1 /prometheus/prometheus/archive/v2.18.1.tar.gz (2.18.1) index=2.18.1-1 uscan info: Looking at $base = https://github.com/prometheus/prometheus/tags with $filepattern = .*/v?(\d\S*)\.tar\.gz found $newfile = /prometheus/prometheus/archive/v2.20.0.tar.gz $newversion = 2.20.0 $lastversion = 2.20.0+ds uscan info: Matching target for downloadurlmangle: https://github.com/prometheus/prometheus/archive/v2.20.0.tar.gz uscan info: Upstream URL(+tag) to download is identified as https://github.com/prometheus/prometheus/archive/v2.20.0.tar.gz uscan info: Matching target for filenamemangle: /prometheus/prometheus/archive/v2.20.0.tar.gz uscan info: Filename (filenamemangled) for downloaded file: prometheus-2.20.0.tar.gz uscan info: Newest version of prometheus on remote site is 2.20.0, local version is 2.20.0+ds (mangled local version is 2.20.0) uscan info: => Package is up to date for from https://github.com/prometheus/prometheus/archive/v2.20.0.tar.gz uscan info: Scan finished Lintian output: $ lintian -I --pedantic ../build-area/prometheus_2.20.0+ds-1_amd64.changes E: prometheus changes: bad-distribution-in-changes-file groovy E: prometheus source: source-is-missing web/ui/static/vendor/js/jquery-3.5.1.min.js W: prometheus: changelog-distribution-does-not-match-changes-file (unstable != groovy) W: prometheus: embedded-javascript-library usr/share/prometheus/web/static/vendor/js/jquery-3.5.1.min.js please use libjs-jquery I: prometheus source: no-dh-sequencer I: prometheus: spelling-error-in-binary usr/bin/prometheus containe contained P: prometheus source: package-uses-experimental-debhelper-compat-version 13 P: prometheus source: source-contains-prebuilt-javascript-object web/ui/static/vendor/js/jquery-3.5.1.min.js N: 1 tag overridden (1 info) I rebuilt the package in Groovy to run lintian, so please ignore the bad-distribution-in-changes-file error and the changelog-distribution- does-not-match-changes-file warning. As you can see there is an issue with jquery which should be addressed (making it use the jquery installed from the system - it's already a runtime dependency - or at least provide the source of the vendored jquery). Apart from that we have just small packaging issues, nothing to worry about. Prometheus also do not rely on obsolete or about to be demoted packages like python2 and GTK2 packages. [UI stantards] Prometheus is not a desktop application, no desktop file provided. Its package description is internationalized and that's all. [Dependencies] Summary: 7 packages in main and 51 packages in universe ## build dependencies: 4 packages in main and 41 packages in universe debhelper-compat | main | dh-golang | main | gogoprotobuf | universe | golang-github-aws-aws-sdk-go-dev | universe | golang-github-cespare-xxhash-dev | universe | golang-github-cockroachdb-cmux-dev | universe | golang-github-digitalocean-godo-dev | universe | golang-github-docker-docker-dev | universe | golang-github-edsrzf-mmap-go-dev | universe | golang-github-fsnotify-fsnotify-dev | universe | golang-github-go-kit-kit-dev | universe | golang-github-go-openapi-strfmt-dev | universe | golang-github-gogo-protobuf-dev | universe | golang-github-golang-snappy-dev | universe | golang-github-google-pprof-dev | universe | golang-github-gophercloud-gophercloud-dev | universe | golang-github-grpc-ecosystem-grpc-gateway-dev | universe | golang-github-hashicorp-consul-dev | universe | golang-github-json-iterator-go-dev | universe | golang-github-miekg-dns-dev | universe | golang-github-mwitkow-go-conntrack-dev | universe | golang-github-oklog-run-dev | universe | golang-github-oklog-ulid-dev | universe | golang-github-opentracing-contrib-go-stdlib-dev | universe | golang-github-opentracing-opentracing-go-dev | universe | golang-github-pkg-errors-dev | universe | golang-github-prometheus-alertmanager-dev | universe | golang-github-prometheus-client-golang-dev | universe | golang-github-prometheus-client-model-dev | universe | golang-github-prometheus-common-dev | universe | golang-github-samuel-go-zookeeper-dev | universe | golang-go | main | golang-golang-x-net-dev | universe | golang-golang-x-oauth2-google-dev | universe | golang-golang-x-sync-dev | universe | golang-golang-x-sys-dev | universe | golang-golang-x-time-dev | universe | golang-google-api-dev | universe | golang-google-genproto-dev | universe | golang-google-grpc-dev | universe | golang-gopkg-alecthomas-kingpin.v2-dev | universe | golang-gopkg-yaml.v2-dev | universe | golang-gopkg-yaml.v3-dev | universe | golang-grpc-gateway | universe | po-debconf | main | ## runtime dependencies: 3 packages in main and 10 packages in universe adduser | main | daemon | systemd-sysv | universe | main | fonts-glyphicons-halflings | universe | libjs-bootstrap4 | universe | libjs-eonasdan-bootstrap-datetimepicker | universe | libjs-jquery | main | libjs-jquery-hotkeys | universe | libjs-moment | universe | libjs-moment-timezone | universe | libjs-mustache | universe | libjs-popper.js | universe | libjs-rickshaw | universe | prometheus-node-exporter | universe | All the 51 dependencies in universe mentioned above will be MIR'ed. [Standards compliance] Prometheus source package declares compliance with Debian Policy 4.5.0. The only issue I can spot was reported by lintian above: it has a vendor version of jquery and no source is provided. Checking the binary package content I see no violation of FHS: https://packages.debian.org/sid/amd64/prometheus/filelist IMO the source package is easy to understand and maintain, no tricks or non-sense workarounds. [Maintenance] This package will be maintained under the umbrella of the Canonical Server team. Moreover, I am now one of the uploaders of prometheus in Debian. I am already subscribed to Prometheus bugs in Launchpad but as soon as we move this forward the Canonical Server team will be subscribed as well. [Background information] The package description is good enough IMO. Prometheus source package provides a single binary also called prometheus which matches the upstream name. ** Affects: prometheus (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1889679 Title: [MIR] prometheus To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/prometheus/+bug/1889679/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
