Linux apt在生成时获取环境变量;“debian规则”;文件

Linux apt在生成时获取环境变量;“debian规则”;文件,linux,ubuntu,makefile,debian,apt-get,Linux,Ubuntu,Makefile,Debian,Apt Get,在Ubuntu下安装软件包的过程中,apt get生成的debian/rules(通常是make)可以使用哪些环境变量 我特别关注与Gnome配置目录相关的环境变量。我希望避免像~/.conf/apps/…这样的“硬编码”,因为有人告诉我,这些东西可能会改变,就像它们倾向于 我一直在谷歌上疯狂地搜索 debian/rules在包构建时被调用(源或二进制包),但在apt-get期间它不会被调用 事实上,.deb文件(=二进制包)不再包含debian/rules的副本。该文件仅在源程序包中 此外,包

在Ubuntu下安装软件包的过程中,
apt get
生成的
debian/rules
(通常是
make
)可以使用哪些环境变量

我特别关注与Gnome配置目录相关的环境变量。我希望避免像
~/.conf/apps/…
这样的“硬编码”,因为有人告诉我,这些东西可能会改变,就像它们倾向于


我一直在谷歌上疯狂地搜索

debian/rules
在包构建时被调用(源或二进制包),但在
apt-get
期间它不会被调用

事实上,.deb文件(=二进制包)不再包含debian/rules的副本。该文件仅在源程序包中

此外,包通常不应该尝试为特定用户做事情,或者利用用户的配置。Debian软件包适用于系统范围内安装的软件


虽然理论上可以制作一个在/home中安装东西的个人软件包,但这样的软件包的价值非常有限。

您是否正在寻找XDG\u CONFIG\u home和?特别要注意的是,XDG_CONFIG_HOME不一定存在,在这种情况下,假定值为~/.CONFIG

Python示例 C++实例
#包括
#包括
#包括
#包括
std::string get\u home\u config(std::string const和app\u name){
//还可以看看boost的文件系统库
使用名称空间std;
字符串home_config;
char const*xdg_config_home=getenv(“xdg_config_home”);
如果(xdg_配置_home&&xdg_配置_home[0]!='\0'){
home\u config=xdg\u config\u home;
}
否则{
if(char const*home=getenv(“home”)){
home_config=home;
主页配置+=“/.config”;
}
else抛出std::runtime_错误(“未设置主页”);
}
主页配置+=“/”;
主页配置+=应用程序名称;
返回主页(u config);;
}
int main()尝试{

std::您是否在寻找XDG_CONFIG_HOME和相关文件?尽管在安装软件包时触摸任何主目录似乎都不合适。特别要注意的是,XDG_CONFIG_HOME不必存在,在这种情况下,假定值为~/.CONFIG。@Roger Pate:这实际上是您的注释,我想作为答案:-)
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
#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;
}