apt-get Umgebungsvariablen, wenn „debian rules“ Laich Datei
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!
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.