Frage

Was debian/rules die Umgebungsvariablen zur Verfügung gestellt werden (oft make), wenn sie von apt-get bei der Installation eines Pakets unter Ubuntu hervorgebracht?

Ich bin speziell nach den Umgebungsvariablen, die auf Gnome Konfigurations Verzeichnisse betreffen würde. Ich möchte „Hardcoding“ Dinge wie ~/.conf/apps/ ... zu vermeiden, da ich gesagt wurde, diese könnte sich ändern, wie sie in der Regel ...

Ich habe wie verrückt worden googeln!

War es hilfreich?

Lösung

Suchen Sie die XDG_CONFIG_HOME und verwandten ? Insbesondere ist zu beachten, dass XDG_CONFIG_HOME nicht existiert hat, und ein Wert von ~ / .config wird in diesem Fall angenommen.

Python Beispiel

import os
from os import path

app_name = "my_app"
home_config = path.join(
  os.environ.get("XDG_CONFIG_HOME") or path.expanduser("~/.config"),
  app_name,
)

print "User-specific config:", home_config

C ++ Beispiel

#include <cstdlib>
#include <iostream>
#include <stdexcept>
#include <string>

std::string get_home_config(std::string const& app_name) {
  // also look at boost's filesystem library
  using namespace std;
  string home_config;
  char const* xdg_config_home = getenv("XDG_CONFIG_HOME");
  if (xdg_config_home && xdg_config_home[0] != '\0') {
    home_config = xdg_config_home;
  }
  else {
    if (char const* home = getenv("HOME")) {
      home_config = home;
      home_config += "/.config";
    }
    else throw std::runtime_error("HOME not set");
  }
  home_config += "/";
  home_config += app_name;
  return home_config;
}

int main() try {
  std::cout << "User-specific config: " << get_home_config("my_app") << '\n';
  return 0;
}
catch (std::exception& e) {
  std::clog << e.what() << std::endl;
  return 1;
}

Andere Tipps

debian/rules wird bei Garnkörperaufbaus Zeit (entweder die Quelle oder Binärpaket) Es ist nicht aufgerufen während apt-get aufgerufen.

In der Tat, die .deb-Datei (== Binärpaket), enthält keine Kopie von debian / rules mehr. Diese Datei ist nur im Quellpaket.

Darüber hinaus Pakete sollten in der Regel nicht versuchen, die Dinge für einen bestimmten Benutzer zu tun, oder die Verwendung der Konfiguration eines Benutzer machen. Debian-Pakete sind für Software bestimmt, die systemweit installiert ist.

Obwohl es theoretisch möglich, ein persönliches Paket zu machen, die etwas in / home installiert, ein solches Paket ist von sehr begrenztem Wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top