apt-get variables d'environnement lors de la ponte fichier « règles debian »
Question
Quelles sont les variables d'environnement mis à la disposition debian/rules
(make
souvent) lorsque donné naissance par apt-get
lors de l'installation d'un paquet sous Ubuntu?
Je suis particulièrement après les variables d'environnement qui se rapportent aux répertoires de configuration de Gnome. Je voudrais éviter « hardcoding » des choses comme ~/.conf/apps/ ...
depuis que je dit ceux-ci pourraient changer comme ils ont tendance à ...
J'ai été googler comme un fou!
La solution
Vous cherchez le XDG_CONFIG_HOME et connexes? En particulier, notez que XDG_CONFIG_HOME ne pas exister, et une valeur de ~ / .config est supposé dans ce cas.
Exemple Python
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 ++ exemple
#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;
}
Autres conseils
debian/rules
s'invoqué au moment de la construction du paquet (soit la source ou paquet binaire) Finalité pas s'appelle pendant apt-get
.
En fait, le fichier .deb (== paquet binaire), ne contient pas de copie de debian / rules plus. Ce fichier est seulement dans le paquet source.
En outre, les emballages doivent normalement pas essayer de faire des choses pour un utilisateur particulier, ou utiliser la configuration d'un utilisateur. les paquets Debian sont destinés à un logiciel installé système.
Bien qu'il soit théoriquement possible de faire un paquet personnel qui installe quelque chose dans / home, un tel paquet est de valeur très limitée.