let get_architectures native_opt foreign =
  let cmd = "apt-config dump" in
  let arch = ref "" in
  let archs = ref [] in
  let out = Std.input_list (Unix.open_process_in cmd) in
  List.iter (fun s ->
    let key, value =  ExtString.String.split s " " in
    if key = "APT::Architecture" then
      arch := ExtString.String.slice ~first: 1 ~last:(-2) value
    else if key = "APT::Architectures::" || key = "APT::Architectures" then
      let s = ExtString.String.slice ~first:1 ~last:(-2) value in
      if s <> "" then
        archs := (ExtString.String.slice ~first:1 ~last:(-2) value)::!archs
  ) out;
  match native_opt, foreign with 
  |None,[] -> (!arch,List.filter ((<>) !arch) !archs)
  |None, l -> (!arch, l)
  |Some a, [] -> (a,List.filter ((<>) !arch) !archs)
  |Some a, l -> (a,l)