TAGS https://docs.djangoproject.com/en/1.10/ref/contrib/postgres/fields/#django.contrib.postgres.fields.ArrayField https://stackoverflow.com/questions/7674241/django-search-query-for-models-with-tags https://github.com/alex/django-taggit/issues PERMISSION https://stackoverflow.com/questions/1876424/add-a-custom-permission-to-a-user https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#custom-permissions https://docs.djangoproject.com/en/dev/topics/auth/default/#the-permission-required-decorator http://web.archive.org/web/20130205133031/http://parand.com/say/index.php/2010/02/19/django-using-the-permission-system/ run server in (venv) python abstimmungstool/manage.py runserver generate po files in (venv): python3 manage.py makemessages -l [de] [po editor] https://localise.biz/free/poeditor [i18n] https://stackoverflow.com/questions/23353113/django-admin-py-makemessages-not-working#23370327 https://stackoverflow.com/questions/10280881/django-site-with-2-languages#26520044 http://www.marinamele.com/taskbuster-django-tutorial/internationalization-localization-languages-time-zones https://stackoverflow.com/questions/19249159/best-practice-multi-language-website list files covered in makemessage => ls ./**/*.{html,txt,py} python3 manage.py makemessages -l [de] => make po python3 manage.py compilemessages => make mo account_tags current_site.name user.account.now? [dummy data via fixtures] https://docs.djangoproject.com/en/2.0/howto/initial-data/ [test] http://www.automationtestinghub.com/selenium-chromedriver/ https://www.obeythetestinggoat.com/book/chapter_01.html http://www.marinamele.com/taskbuster-django-tutorial/taskbuster-working-environment-and-start-django-project#testing-goat ChromeOptions ChromeOptions = new ChromeOptions(); ChromeOptions.addArguments("--headless", "window-size=1024,768", "--no-sandbox"); ========= THIS FILE WORKS ========== from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--headless') chrome_options.add_argument('window-size=1024,768"') chrome_options.binary_location = '/etc/chromium' driver = webdriver.Chrome('/usr/local/chromedriver/chromedriver', chrome_options=chrome_options) driver.get("http://localhost:8000") =================================== chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--window-size=1280x1696') chrome_options.add_argument('--user-data-dir=/tmp/user-data') chrome_options.add_argument('--hide-scrollbars') chrome_options.add_argument('--enable-logging') chrome_options.add_argument('--log-level=0') chrome_options.add_argument('--v=99') chrome_options.add_argument('--single-process') chrome_options.add_argument('--data-path=/tmp/data-path') chrome_options.add_argument('--ignore-certificate-errors') chrome_options.add_argument('--homedir=/tmp') chrome_options.add_argument('--disk-cache-dir=/tmp/cache-dir') chrome_options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36') chrome_options.binary_location = '/var/task/bin/headless-chromium' ldd chromedriver shows missing dependencies this one has it https://stackoverflow.com/questions/48480143/installing-chromium-on-amazon-linux uname -m => x86_64 => amd64 => pip in venv can install selenium => crew has dpkg which for .deb files like rpm is for .rpm files? => https://packages.debian.org/search?suite=default§ion=all&arch=any&searchon=names&keywords=gconf2 => https://unix.stackexchange.com/questions/159094/how-to-install-a-deb-file-by-dpkg-i-or-by-apt => use sudo dpkg -i /path/to/deb/file => sudo dpkg -i http://ftp.fr.debian.org/debian/pool/main/g/gconf/gconf2_3.2.6-4+b1_amd64.deb https://packages.debian.org/search?suite=default§ion=all&arch=any&searchon=names&keywords=gconf2 https://packages.debian.org/stretch/amd64/libgconf2-4/download => installed, check /var/lib/dpkg/ => cat status, but where??? => https://www.tecmint.com/dpkg-command-examples/ => dpkg -L [filename] => in /usr/share/doc/libgconf2-4 it's in: XXXXX not /usr/share/doc but /usr/local/share/doc, but there are no libs... because fuck it's in https://packages.debian.org/stretch/amd64/libgconf-2-4/download vs https://packages.debian.org/stretch/amd64/libgconf2-4/ ... fuck fuck fuck so if now it's in /usr/lib/x86/y /usr/local/lib/x86/y EXACT This shows how to use Options, Desired Capabilities and Service! https://stackoverflow.com/questions/45500606/set-chrome-browser-binary-through-chromedriver-in-python https://stackoverflow.com/questions/51050863/which-versions-of-chromium-selenium-and-chromedriver-are-required-to-run-seleni https://stackoverflow.com/questions/41133391/which-chromedriver-chrome-browser-version-compatible-in-selenium-3 Version download https://chromedriver.storage.googleapis.com/index.html?path=2.27/ chmod +x [filename] makes it a callable => requires libX11.so.6 => libx11-xcb-dev (according to https://forum.qt.io/topic/40022/solved-libx11-xcb-so-1-not-found/6) => crew has libx11 => requires libgconf-2.so.4 => libgconf2-4 (according to https://github.com/resin-io/etcher/issues/2191) => gconf2 => here: https://projects-old.gnome.org/gconf/ -> now try this: https://stackoverflow.com/questions/22424737/unknown-error-chrome-failed-to-start-exited-abnormally -> pip install pyvirtualdisplay, requires xfvb => https://gist.github.com/theclanks/3114652 that should be on xorg-server -> try logging as below (from https://stackoverflow.com/questions/22424737/unknown-error-chrome-failed-to-start-exited-abnormally) -> same error: https://stackoverflow.com/questions/49389789/python-selenium-with-chromedriver-headless-fails-to-start-devtools-request-f -> xorg-server is on crew => crew install xorg_server https://www.mankier.com/package/xorg-x11-server-xvfb https://www.x.org/wiki/ or not, -> try here => https://packages.debian.org/sid/xvfb TEST: ========================================= from selenium import webdriver from pyvirtualdisplay import Display display = Display(visible=0, size=(800, 800)) display.start() service_log_path = "{}/chromedriver.log".format("/usr/local/log") service_args = ['--verbose'] chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--no-sandbox') #chrome_options.add_argument('--headless') #chrome_options.add_argument('window-size=1024,768"') chrome_options.binary_location = '/etc/chromium' driver = webdriver.Chrome('/usr/local/chromedriver/chromedriver', chrome_options=chrome_options, service_args=service_args,service_log_path=service_log_path) driver.get("http://localhost:8000") ======================================== service_log_path = "{}/chromedriver.log".format(us) service_args = ['--verbose'] driver = webdriver.Chrome('/path/to/chromedriver', service_args=service_args, service_log_path=service_log_path) # -*- coding: utf-8 -*- # from django.test import TestCase import unittest import time from selenium import webdriver class NewVisitorTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() time.sleep(5) def tearDown(self): self.driver.quit() def test_it_worked(self): self.driver.get('http://127.0.0.1:5000') time.sleep(5) # print(self.driver.title) self.assertIn('Hello World', self.driver.title) if __name__ == '__main__': # driver = webdriver.Chrome('/usr/local/bin/chromedriver') # Optional argument, if not specified will search path. driver = webdriver.Chrome() # driver.get('http://www.google.com/xhtml'); driver.get('http://127.0.0.1:5000') print(driver.title) time.sleep(5) # Let the user actually see something! # search_box = driver.find_element_by_name('q') # search_box.send_keys('ChromeDriver') # search_box.submit() # time.sleep(5) # Let the user actually see something! # driver.quit() # unittest.main(warnings='ignore') =================================================== OLD PATH => /usr/local/demo/venv/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin NEW PATH => /usr/local/demo/venv/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/home/chronos/user/usr/local/chromedriver NEW PATH => /usr/local/demo/venv/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/local/chromedriver export PATH=/usr/local/demo/venv/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/home/chronos/user/usr/local/chromedriver $LD_LIBRARY_PATH = /usr/local/lib64 for libraries, it's $LD_LIBRARY_PATH '/home/chronos/user/usr/local/chromedriver' from selenium import webdriver browser = webdriver.Chrome('/home/chronos/user/usr/local/chromedriver') browser.get('http://localhost:8000') assert 'Django' in browser.title libpath!!! emerge: https://packages.gentoo.org/packages/gnome-base/gconf cheat sheet gentoo: https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet packages/libs: https://packages.debian.org/search?keywords=gconf2 https://www.funtoo.org/Emerge list packages => ./qlist -IRv from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.binary_location = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" driver = webdriver.Chrome(chrome_options=options, executable_path="C:/Utility/BrowserDrivers/chromedriver.exe", ) driver.get('http://google.com/') from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities cap = DesiredCapabilities.CHROME cap = {'binary_location': "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"} driver = webdriver.Chrome(desired_capabilities=cap, executable_path="C:\\Utility\\BrowserDrivers\\chromedriver.exe") driver.get('http://google.com/') from selenium import webdriver import selenium.webdriver.chrome.service as service service = service.Service('C:\\Utility\\BrowserDrivers\\chromedriver.exe') service.start() capabilities = {'chrome.binary': "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe"} driver = webdriver.Remote(service.service_url, capabilities) driver.get('http://www.google.com') chromedriver v.2.37 severless-chrome v.0.0-37 selenium 2.53.6 (for Python) ---this one---------- from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--no-sandbox') driver = webdriver.Chrome('/usr/local/chromedriver/chromedriver.exe', chrome_options=chrome_options) driver.get("http://localhost:8000") ------------ {% extends "_base.html" %} {% load mathfilters %} {% load markdown %} {% load fullurl %} {% load i18n %} {% load bootstrap %} {% load static %} {% load notifications_tags %} {% load static %} {% load fullurl %} {% load i18n %} from voty.initproc.models import Initiative from voty.initproc.globals import STATES, NOTIFICATIONS from voty.initproc.globals import SUBJECT_CATEGORIES # https://docs.djangoproject.com/en/1.10/topics/i18n/ # http://www.marinamele.com/taskbuster-django-tutorial/internationalization-localization-languages-time-zones # https://stackoverflow.com/questions/10280881/django-site-with-2-languages#26520044 migrations: https://www.algotech.solutions/blog/python/django-migrations-and-how-to-manage-conflicts/ https://docs.djangoproject.com/en/2.0/topics/migrations/ https://docs.djangoproject.com/en/1.11/ref/templates/language/ In short: $ crew search python3 $ crew install python3 $ crew search virtualenv $ crew install virtualenv $ crew search post* $ crew install postgresql $ echo 'export PGDATA="/usr/local/data/pgsql"' >> ~/.bashrc && source ~/.bashrc $ ldd /usr/local/bin/python $ cd /usr/local $ mkdir demo $ cd demo $ git clone https://github.com/frequent/abstimmungstool $ virtualenv venv $ source venv/bin/activate (venv) $ pip install -r ../abstimmungstool/requirements.txt (venv) $ python abstimmungstool/manage.py migrate (venv) $ python abstimmungstool/manage.py set_quorum (venv) $ python abstimmungstool/manage.py createsuperuser (venv) $ python abstimmungstool/manage.py runserver to stop: ps auxw | grep runserver kill process test: 403 working, 404 working https://docs.djangoproject.com/en/2.1/internals/contributing/writing-code/unit-tests/ from django.urls import reverse from django.test import RequestFactory from .models import Patient, Address, Question from ..core.tests import NicoTestCase, USERNAME, PASSWORD # -*- coding: utf-8 -*- # from django.test import TestCase import unittest import time from selenium import webdriver class NewVisitorTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() time.sleep(5) def tearDown(self): self.driver.quit() def test_it_worked(self): self.driver.get('http://127.0.0.1:5000') time.sleep(5) # print(self.driver.title) self.assertIn('Hello World', self.driver.title) if __name__ == '__main__': # driver = webdriver.Chrome('/usr/local/bin/chromedriver') # Optional argument, if not specified will search path. driver = webdriver.Chrome() # driver.get('http://www.google.com/xhtml'); driver.get('http://127.0.0.1:5000') print(driver.title) time.sleep(5) # Let the user actually see something! # search_box = driver.find_element_by_name('q') # search_box.send_keys('ChromeDriver') # search_box.submit() # time.sleep(5) # Let the user actually see something! # driver.quit() # unittest.main(warnings='ignore') PATIENT_POST = {'address-0-city': 'Rio de Janeiro', 'address-0-complement': 'APT', 'address-0-country': 'Brasil', 'address-0-neighborhood': 'Copacabana', 'address-0-number': '373', 'address-0-state': 'RJ', 'address-0-street_name': 'Avenida XYZ', 'address-0-zipcode': '22021-999', 'address-INITIAL_FORMS': '0', 'address-MAX_NUM_FORMS': '1000', 'address-MIN_NUM_FORMS': '0', 'address-TOTAL_FORMS': '1', 'anamnese': '', 'birthday': '11/06/1987', 'cpf': '863.362.048-04', 'email': 'e@cloud.com', 'gender': '', 'indication': '', 'mobile_number': '2199999999', 'name': 'uhuhu', 'occupation': 'Python Developer', 'phone_number': '21999098767' } FACIAL_FORM_POST = { 'biotipo_cutaneo': 'normal', 'estado_cutaneo': 'normal', 'textura': 'aspera', 'ostios': 'dilatado_em_toda_face', 'acne': 'S', 'grau': '1', 'tem_sulco': 'on', 'local_do_sulco': '', 'estado_do_sulco': 'estaticas', 'tem_ruga': 'on', 'local_da_ruga': '', 'estado_da_ruga': 'estaticas', 'acromia': 'S', 'acromia_observation': '', 'hipocromia': 'S', 'hipocromia_observation': '', 'hipercromia': 'nao', 'hipercromia_observation': '', 'lesao_de_pele': 'comedoes', 'cicatriz': 'queloideana' } class PatientTestCase(NicoTestCase): def setUp(self): self.question = Question.objects.create(question="why?") self.question.save() def create_patient(self): factory = RequestFactory() request = factory.get(reverse("patient:patient_new")) request.user = self.user request.method = "POST" request.POST = PATIENT_POST.copy() request.POST["answer-{}".format(self.question.pk)] = "N" request.POST["obs-answer-{}".format(self.question.pk)] = "" self.client.login(username=USERNAME, password=PASSWORD) resp = self.client.post(reverse("patient:patient_new"), request.POST) assert hasattr(resp, "url"), [f.errors[0] for f in resp.context_data['form'] if f.errors] self.assertEqual('/pacientes/uhuhu/', resp.url) patients = Patient.objects.filter(name="uhuhu") self.assertEqual(1, patients.count()) patient = patients.first() self.assertEqual('e@cloud.com', patient.email) return patient def test_patient_basic_creation(self): patient = self.create_patient() patient_from_catalog = Patient.objects.get(name="uhuhu") self.assertEqual(patient_from_catalog, patient) self.assertEqual("e@cloud.com", patient.email) def test_redirection(self): response = self.client.get("p/new", follow=True) self.assertEqual("/accounts/login/", response._request.path) def test_create_patient_without_address(self): factory = RequestFactory() request = factory.get(reverse("patient:patient_new")) request.user = self.user request.method = "POST" request.POST = PATIENT_POST.copy() for key in request.POST.keys(): if key.startswith("address-0"): request.POST[key] = "" request.POST["answer-{}".format(self.question.pk)] = "N" request.POST["obs-answer-{}".format(self.question.pk)] = "" self.client.login(username=USERNAME, password=PASSWORD) resp = self.client.post(reverse("patient:patient_new"), request.POST) assert hasattr(resp, "url"), [f.errors[0] for f in resp.context_data['form'] if f.errors] self.assertEqual('/pacientes/uhuhu/', resp.url) patients = Patient.objects.filter(name="uhuhu") self.assertEqual(1, patients.count()) patient = patients.first() self.assertEqual('e@cloud.com', patient.email) self.assertIsNone(patient.address.country) self.assertEqual(1, Address.objects.filter(patient__pk=patient.pk).count()) # Update patient_update_path = reverse("patient:patient_update", kwargs={"slug":"uhuhu"}) factory = RequestFactory() request = factory.get(patient_update_path) request.user = self.user request.method = "POST" request.POST = PATIENT_POST.copy() request.POST["address-INITIAL_FORMS"] = "1" request.POST["address-0-id"] = patient.address_id request.POST['email'] = 'eg@cloud.com' request.POST["answer-{}".format(self.question.pk)] = "N" request.POST["obs-answer-{}".format(self.question.pk)] = "" response = self.client.post(patient_update_path, request.POST) patients = Patient.objects.filter(name="uhuhu") self.assertEqual(1, patients.count()) patient = patients.first() self.assertEqual('eg@cloud.com', patient.email) self.assertEqual(1, Address.objects.filter(patient__pk=patient.pk).count()) self.assertEqual("Brasil", patient.address.country) def test_update_patient(self): patient = self.create_patient() self.assertEqual(1, Address.objects.all().count()) patient_update_path = reverse("patient:patient_update", kwargs={"slug":"uhuhu"}) factory = RequestFactory() request = factory.get(patient_update_path) request.user = self.user request.method = "POST" request.POST = PATIENT_POST.copy() request.POST["address-INITIAL_FORMS"] = "1" request.POST["address-0-id"] = patient.address_id request.POST['email'] = 'eg@cloud.com' request.POST["answer-{}".format(self.question.pk)] = "N" request.POST["obs-answer-{}".format(self.question.pk)] = "" self.client.post(patient_update_path, request.POST) patient.refresh_from_db() self.assertEqual('eg@cloud.com', patient.email) self.assertEqual("Brasil", patient.address.country) self.assertEqual(1, Address.objects.filter(patient__pk=patient.pk).count()) self.assertEqual(1, Address.objects.all().count(), Address.objects.all()) old_updated_at = patient.updated_at created_at = patient.created_at patient.save() self.assertLess(old_updated_at, patient.updated_at) self.assertEqual(created_at, patient.created_at) def test_delete_patient(self): patient = self.create_patient() patient.delete() self.assertEqual(None, patient.address.pk) self.assertEqual(0, Address.objects.filter(pk=patient.address.pk).count()) self.assertEqual(0, patient.answer_set.all().count()) self.assertEqual(0, patient.facialform_set.all().count()) def test_create_patient_without_address_number(self): factory = RequestFactory() request = factory.get(reverse("patient:patient_new")) request.user = self.user request.method = "POST" request.POST = PATIENT_POST.copy() request.POST["address-0-number"] = "" request.POST["answer-{}".format(self.question.pk)] = "N" request.POST["obs-answer-{}".format(self.question.pk)] = "" self.client.login(username=USERNAME, password=PASSWORD) resp = self.client.post(reverse("patient:patient_new"), request.POST) self.assertEqual("", "") def test_create_facial_form(self): patient = self.create_patient() factory = RequestFactory() path = reverse("patient:create_facial_form", kwargs={"slug": patient.slug}) request = factory.get(path) request.user = self.user request.method = "POST" request.POST = FACIAL_FORM_POST.copy() self.client.login(username=USERNAME, password=PASSWORD) resp = self.client.post(path, request.POST) self.assertEqual('/pacientes/uhuhu/update_facial_form', resp.url) self.assertEqual(1, patient.facialform_set.all().count()) facial_form = patient.facialform_set.first() self.assertEqual("S", facial_form.acne) self.assertEqual(['queloideana'], facial_form.cicatriz) self.assertEqual(1, facial_form.tem_sulco) # Update Facial Form path = reverse("patient:update_facial_form", kwargs={"slug": patient.slug}) request = factory.get(path) request.user = self.user request.method = "POST" request.POST = FACIAL_FORM_POST.copy() request.POST["acne"] = "N" request.POST["textura"] = "fina" resp = self.client.post(path, request.POST) self.assertEqual('/pacientes/uhuhu/update_facial_form', resp.url) self.assertEqual(1, patient.facialform_set.all().count()) facial_form = patient.facialform_set.first() self.assertEqual("N", facial_form.acne) self.assertEqual("fina", facial_form.textura) self.assertEqual(1, facial_form.tem_sulco) # Delete facial form facial_form.delete() self.assertNotEqual(None, patient.pk) self.assertEqual(1, Patient.objects.filter(pk=patient.pk).count()) patient.delete() self.assertEqual(None, facial_form.pk) gdebi packages: gedbi - https://packages.debian.org/sid/gdebi-core OK-FAIL file - https://packages.debian.org/sid/file libc6 - https://packages.debian.org/sid/libc6 => https://packages.debian.org/sid/libc6-udeb libgcc1 - https://packages.debian.org/sid/libgcc1 libgccbase - https://packages.debian.org/sid/gcc-8-base libc6.1 - https://packages.debian.org/sid/libc6.1 libmagic - https://packages.debian.org/sid/libmagic1 libmagic-mgc - https://packages.debian.org/sid/libmagic-mgc zlib1g - https://packages.debian.org/sid/zlib1g libc6.1 - https://packages.debian.org/sid/libc6.1 libc6 - https://packages.debian.org/sid/libc6 => https://packages.debian.org/sid/libc6-udeb libc6.1 - https://packages.debian.org/sid/libc6.1 zlib1g - https://packages.debian.org/sid/zlib1g libc0.1 - https://packages.debian.org/sid/libc0.1 python3 - https://packages.debian.org/sid/python3 python3.6 - https://packages.debian.org/sid/python3.6 mime-support - https://packages.debian.org/sid/mime-support libpython3.6-stdlib - https://packages.debian.org/sid/libpython3.6-stdlib libbdb5.3 - https://packages.debian.org/sid/libdb5.3 libffi6 - https://packages.debian.org/sid/libffi6 libreadline7 - https://packages.debian.org/sid/libreadline7 libreadline-common - https://packages.debian.org/sid/readline-common libsqlite - https://packages.debian.org/sid/libsqlite3-0 libtinfo6 - https://packages.debian.org/sid/libtinfo6 libmpdec2 - https://packages.debian.org/sid/libmpdec2 libcursew6 - https://packages.debian.org/sid/libncursesw6 libpython3-stdlib - https://packages.debian.org/sid/libpython3-stdlib python3-minimal - https://packages.debian.org/sid/python3-minimal dpkg - https://packages.debian.org/sid/dpkg hurd-libs0.3 - https://packages.debian.org/sid/hurd-libs0.3 libbz2.1.0 - https://packages.debian.org/sid/libbz2-1.0 libparted2 - https://packages.debian.org/sid/libparted2 dmidecode - https://packages.debian.org/sid/dmidecode libblkid1 - https://packages.debian.org/sid/libblkid1 libdevmapper - https://packages.debian.org/sid/libdevmapper1.02.1 dmssetup - https://packages.debian.org/sid/dmsetup libuuid - https://packages.debian.org/sid/libuuid1 libselinux1 - https://packages.debian.org/sid/libselinux1 libpcr3 - https://packages.debian.org/sid/libpcre3 tar - https://packages.debian.org/sid/tar libacl1 - https://packages.debian.org/sid/libacl1 libattr1 - https://packages.debian.org/sid/libattr1 mulitarch-support - https://packages.debian.org/sid/multiarch-support python3-apt - https://packages.debian.org/sid/python3-apt libapt-inst2.0 - https://packages.debian.org/sid/libapt-inst2.0 libapt-pkg5.0 - https://packages.debian.org/sid/libapt-pkg5.0 libzstd1 - https://packages.debian.org/sid/libzstd1 libudev1 - https://packages.debian.org/sid/libudev1 liblzma5 - https://packages.debian.org/sid/liblzma5 libfreebsd-glue-0 - https://packages.debian.org/sid/libfreebsd-glue-0 libbsd0 - https://packages.debian.org/sid/libbsd0 liblz4-1 - https://packages.debian.org/sid/liblz4-1 libbz2-1.0 - https://packages.debian.org/sid/libbz2-1.0 libapt-pkg5.0 - https://packages.debian.org/sid/libapt-pkg5.0 libc0.1 - https://packages.debian.org/sid/libc0.1 libc6.1 - https://packages.debian.org/sid/libc6.1 libgcc1 - https://packages.debian.org/sid/libgcc1 libstdc++6 - https://packages.debian.org/sid/libstdc++6 libgccbase - libgccbase - https://packages.debian.org/sid/gcc-8-base libc0.1 - https://packages.debian.org/sid/libc0.1 libgcc1 - https://packages.debian.org/sid/libgcc1 libc6 - https://packages.debian.org/sid/libc6 libgcc1 - https://packages.debian.org/sid/libgcc1 python-apt-common - https://packages.debian.org/sid/python-apt-common python3 - https://packages.debian.org/sid/python3 python3-minimal - https://packages.debian.org/sid/python3.6-minimal libexpat1 - https://packages.debian.org/sid/libexpat1 python3.6-minimal - https://packages.debian.org/sid/libpython3.6-minimal libssl1.1 - https://packages.debian.org/sid/libssl1.1 debconf - https://packages.debian.org/sid/debconf perlbase - https://packages.debian.org/sid/perl-base python3-debian - https://packages.debian.org/sid/python3-debian python3 - https://packages.debian.org/sid/python3 python3-chardet - https://packages.debian.org/sid/python3-chardet python3 - https://packages.debian.org/sid/python3 python3-pkg-resources - https://packages.debian.org/sid/python3-pkg-resources python3-six - https://packages.debian.org/sid/python3-six python3 - https://packages.debian.org/sid/python3