Awọn ohun elo PyGObject Package ati Awọn Eto bi “.deb” Package fun Ojú-iṣẹ Linux - Apá 4


A tẹsiwaju tẹsiwaju PyGObject jara siseto pẹlu rẹ lori tabili Linux, ni apakan 4th ti a yoo ṣe alaye bi a ṣe le ṣajọpọ awọn eto ati awọn ohun elo ti a ṣẹda fun Tabili Linux nipa lilo PyGObject bi package Debian.

Awọn idii Debian ( .deb ) jẹ ọna kika ti a lo julọ lati fi awọn eto sori ẹrọ labẹ Linux, eto\" dpkg " eyiti o ṣe ajọṣepọ pẹlu awọn idii .deb ni aiyipada lori gbogbo awọn pinpin Lainos ti o da lori Debian bii Ubuntu ati Mint Linux. Iyẹn ni idi ti a yoo ṣe ṣalaye nikan bi a ṣe le ṣe awọn eto wa fun Debian.

Ṣẹda Apopọ Debian lati Awọn ohun elo PyGObject rẹ

Ni akọkọ, o yẹ ki o ni diẹ ninu imoye ipilẹ nipa ṣiṣẹda awọn idii Debian, itọsọna atẹle yii yoo ṣe iranlọwọ fun ọ pupọ.

  1. Ifihan si Apoti Apoti Debian

Ni ṣoki, ti o ba ni iṣẹ akanṣe ti a pe ni\" myprogram " o gbọdọ ni awọn faili atẹle ati awọn folda ninu ki o le ṣajọ rẹ.

  1. debian (Folda): folda yii pẹlu gbogbo alaye nipa package Debian ti o pin si ọpọlọpọ awọn faili kekere.
  2. po (Folda): folda po pẹlu awọn faili itumọ fun eto naa (A yoo ṣalaye rẹ ni apakan 5).
  3. myprogram (Faili): Eyi ni faili Python ti a ṣẹda nipa lilo PyGObject, o jẹ faili akọkọ ti iṣẹ naa.
  4. ui.glade (Faili): Faili wiwo olumulo ti ayaworan .. Ti o ba ṣẹda wiwo ohun elo nipa lilo Glade, o gbọdọ ṣafikun faili yii ni
    ise agbese rẹ.
  5. bMyprogram.desktop (Faili): Eyi ni faili lodidi fun fifihan ohun elo ninu akojọ awọn ohun elo.
  6. setup.py (Faili): Faili yii ni ẹri fun fifi sori eyikeyi eto Python sinu eto agbegbe, o ṣe pataki pupọ ninu eyikeyi eto Python, o ni ọpọlọpọ awọn ọna miiran ti lilo daradara.

Dajudaju .. Ọpọlọpọ awọn faili miiran ati awọn folda wa ti o le ṣafikun ninu iṣẹ akanṣe rẹ (ni otitọ o le pẹlu ohunkohun ti o fẹ) ṣugbọn awọn wọnyẹn ni awọn ipilẹ.

Bayi, jẹ ki a bẹrẹ iṣakojọpọ iṣẹ akanṣe kan. Ṣẹda folda tuntun ti a pe ni\" myprogram ", ṣẹda faili ti a pe ni\" myprogram " ki o ṣafikun koodu atẹle si rẹ.

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

## Replace your name and email. 
# My Name <[email > 

## Here you must add the license of the file, replace "MyProgram" with your program name. 
# License: 
#    MyProgram is free software: you can redistribute it and/or modify 
#    it under the terms of the GNU General Public License as published by 
#    the Free Software Foundation, either version 3 of the License, or 
#    (at your option) any later version. 
# 
#    MyProgram is distributed in the hope that it will be useful, 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
#    GNU General Public License for more details. 
# 
#    You should have received a copy of the GNU General Public License 
#    along with MyProgram.  If not, see <http://www.gnu.org/licenses/>. 

from gi.repository import Gtk 
import os 

class Handler: 
  
  def openterminal(self, button): 
    ## When the user clicks on the first button, the terminal will be opened. 
    os.system("x-terminal-emulator ") 
  
  def closeprogram(self, button): 
    Gtk.main_quit() 
    
# Nothing new here.. We just imported the 'ui.glade' file. 
builder = Gtk.Builder() 
builder.add_from_file("/usr/lib/myprogram/ui.glade") 
builder.connect_signals(Handler()) 
window = builder.get_object("window1") 
window.connect("delete-event", Gtk.main_quit) 
window.show_all() 
Gtk.main()

Ṣẹda faili ui.glade ki o fọwọsi pẹlu koodu yii.

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Generated with glade 3.16.1 --> 
<interface> 
  <requires lib="gtk+" version="3.10"/> 
  <object class="GtkWindow" id="window1"> 
    <property name="can_focus">False</property> 
    <property name="title" translatable="yes">My Program</property> 
    <property name="window_position">center</property> 
    <property name="icon_name">applications-utilities</property> 
    <property name="gravity">center</property> 
    <child> 
      <object class="GtkBox" id="box1"> 
        <property name="visible">True</property> 
        <property name="can_focus">False</property> 
        <property name="margin_left">5</property> 
        <property name="margin_right">5</property> 
        <property name="margin_top">5</property> 
        <property name="margin_bottom">5</property> 
        <property name="orientation">vertical</property> 
        <property name="homogeneous">True</property> 
        <child> 
          <object class="GtkLabel" id="label1"> 
            <property name="visible">True</property> 
            <property name="can_focus">False</property> 
            <property name="label" translatable="yes">Welcome to this Test Program !</property> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">0</property> 
          </packing> 
        </child> 
        <child> 
          <object class="GtkButton" id="button2"> 
            <property name="label" translatable="yes">Click on me to open the Terminal</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <signal name="clicked" handler="openterminal" swapped="no"/> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">1</property> 
          </packing> 
        </child> 
        <child> 
          <object class="GtkButton" id="button3"> 
            <property name="label">gtk-preferences</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <property name="use_stock">True</property> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">2</property> 
          </packing> 
        </child> 
        <child> 
          <object class="GtkButton" id="button4"> 
            <property name="label">gtk-about</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <property name="use_stock">True</property> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">3</property> 
          </packing> 
        </child> 
        <child> 
          <object class="GtkButton" id="button1"> 
            <property name="label">gtk-close</property> 
            <property name="visible">True</property> 
            <property name="can_focus">True</property> 
            <property name="receives_default">True</property> 
            <property name="use_stock">True</property> 
            <signal name="clicked" handler="closeprogram" swapped="no"/> 
          </object> 
          <packing> 
            <property name="expand">False</property> 
            <property name="fill">True</property> 
            <property name="position">4</property> 
          </packing> 
        </child> 
      </object> 
    </child> 
  </object> 
</interface>

Ko si ohun titun titi di isisiyi .. A kan ṣẹda faili Python ati faili wiwo rẹ. Bayi ṣẹda\" setup.py " faili ni folda kanna, ki o ṣafikun koodu atẹle si rẹ, gbogbo ila ni a ṣalaye ninu awọn asọye.

# Here we imported the 'setup' module which allows us to install Python scripts to the local system beside performing some other tasks, you can find the documentation here: https://docs.python.org/2/distutils/apiref.html 
from distutils.core import setup 

setup(name = "myprogram", # Name of the program. 
      version = "1.0", # Version of the program. 
      description = "An easy-to-use web interface to create & share pastes easily", # You don't need any help here. 
      author = "TecMint", # Nor here. 
      author_email = "[email ",# Nor here :D 
      url = "http://example.com", # If you have a website for you program.. put it here. 
      license='GPLv3', # The license of the program. 
      scripts=['myprogram'], # This is the name of the main Python script file, in our case it's "myprogram", it's the file that we added under the "myprogram" folder. 

# Here you can choose where do you want to install your files on the local system, the "myprogram" file will be automatically installed in its correct place later, so you have only to choose where do you want to install the optional files that you shape with the Python script 
      data_files = [ ("lib/myprogram", ["ui.glade"]), # This is going to install the "ui.glade" file under the /usr/lib/myprogram path. 
                     ("share/applications", ["myprogram.desktop"]) ] ) # And this is going to install the .desktop file under the /usr/share/applications folder, all the folder are automatically installed under the /usr folder in your root partition, you don't need to add "/usr/ to the path. 

Bayi ṣẹda\" myprogram.desktop " faili ni folda kanna, ati ṣafikun koodu atẹle, o ti ṣalaye bakanna ninu awọn asọye.

# This is the .desktop file, this file is the responsible file about showing your application in the applications menu in any desktop interface, it's important to add this file to your project, you can view more details about this file from here: https://developer.gnome.org/integration-guide/stable/desktop-files.html.en 
[Desktop Entry] 
# The default name of the program. 
Name=My Program 
# The name of the program in the Arabic language, this name will be used to display the application under the applications menu when the default language of the system is Arabic, use the languages codes to change the name for each language. 
Name[ar]=برنامجي 
# Description of the file. 
Comment=A simple test program developed by me. 
# Description of the file in Arabic. 
Comment[ar]=برنامج تجريبي بسيط تم تطويره بواسطتي. 
# The command that's going to be executed when the application is launched from the applications menu, you can enter the name of the Python script or the full path if you want like /usr/bin/myprogram 
Exec=myprogram 
# Do you want to run your program from the terminal? 
Terminal=false 
# Leave this like that. 
Type=Application 
# Enter the name of the icon you want to use for the application, you can enter a path for the icon as well like /usr/share/pixmaps/icon.png but make sure to include the icon.png file in your project folder first and in the setup.py file as well. Here we'll use the "system" icon for now. 
Icon=system 
# The category of the file, you can view the available categories from the freedesktop website.
Categories=GNOME;GTK;Utility; 
StartupNotify=false 

A ti fẹrẹ pari nibi bayi .. A kan ni lati ṣẹda diẹ ninu awọn faili kekere labẹ folda\" debian " lati pese alaye nipa package wa fun\" dpkg ”Eto.

Ṣii folda\" debian ", ki o ṣẹda awọn faili wọnyi.

control
compat
changelog
rules

Iṣakoso : Faili yii pese alaye ipilẹ nipa package Debian, fun awọn alaye diẹ sii, jọwọ ṣabẹwo si Awọn aaye Iṣakoso Iṣakojọpọ Debian.

Source: myprogram
Maintainer: My Name <[email > 
Section: utils 
Priority: optional 
Standards-Version: 3.9.2 
Build-Depends: debhelper (>= 9), python2.7 

Package: myprogram 
Architecture: all 
Depends: python-gi 
Description: My Program 
Here you can add a short description about your program.

ibaramu : Eyi jẹ faili pataki fun eto dpkg, o kan pẹlu nọmba idan 9, fi silẹ bẹẹ.

9

changelog : Nibiyi iwọ yoo ni anfani lati ṣafikun awọn ayipada ti o ṣe lori eto rẹ, fun alaye diẹ sii, jọwọ ṣabẹwo si Orisun Changelog Package Debian.

myprogram (1.0) trusty; urgency=medium 

  * Add the new features here. 
  * Continue adding new changes here. 
  * And here. 

 -- My Name Here <[email >  Sat, 27 Dec 2014 21:36:33 +0200

awọn ofin : Faili yii jẹ iduro nipa ṣiṣe ilana fifi sori ẹrọ lori ẹrọ agbegbe lati fi package sii, o le wo alaye diẹ sii
nipa faili yii lati ibi: Awọn ofin Aiyipada Package Debian.

Botilẹjẹpe iwọ kii yoo nilo ohunkohun diẹ sii fun eto Python rẹ.

#!/usr/bin/make -f 
# This file is responsible about running the installation process on the local machine to install the package, you can view more information about this file from here: https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#defaultrules Though you won't need anything more for your Python program. 
%: 
    dh [email  
override_dh_auto_install: 
    python setup.py install --root=debian/myprogram --install-layout=deb --install-scripts=/usr/bin/ # This is going to run the setup.py file to install the program as a Python script on the system, it's also going to install the "myprogram" script under /usr/bin/ using the --install-scripts option, DON'T FORGET TO REPLACE "myprogram" WITH YOUR PROGRAM NAME. 
override_dh_auto_build:

Bayi thats a ṣẹda gbogbo awọn faili pataki fun eto wa ni aṣeyọri, bayi jẹ ki a bẹrẹ apoti rẹ. Ni akọkọ, rii daju pe o ti fi diẹ ninu awọn igbẹkẹle sori ilana kọ ṣaaju ki o to bẹrẹ.

$ sudo apt-get update
$ sudo apt-get install devscripts

Nisisiyi fojuinu pe folda\" myprogram " wa ninu folda ile rẹ (/ile/olumulo/myprogram ) lati le ṣe apejọ bi package Debian, ṣiṣe awọn ofin wọnyi .

$ cd /home/user/myprogram
$ debuild -us -uc
[email :~/Projects/myprogram$
debuild -us -uc dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: source package myprogram
dpkg-buildpackage: source version 1.0
dpkg-buildpackage: source distribution trusty
dpkg-buildpackage: source changed by My Name Here
<[email >
dpkg-source --before-build myprogram
dpkg-buildpackage: host architecture i386
fakeroot debian/rules clean
dh clean
dh_testdir
dh_auto_clean
....
.....
Finished running lintian.

Ati pe iyẹn ni! A ṣẹda package Debian rẹ ni aṣeyọri:

Lati le fi sii lori eyikeyi pinpin orisun Debian, ṣiṣe.

$ sudo dpkg -i myprogram_1.0_all.deb

Maṣe gbagbe lati ropo faili ti o wa loke pẹlu orukọ ti package .. Nisisiyi lẹhin ti o fi package sii, o le ṣiṣe eto naa lati inu awọn ohun elo elo.

Ati pe yoo ṣiṣẹ ..

Eyi ni ipari 4th apakan ti jara wa nipa PyGObject .. Ninu ẹkọ ti nbọ a yoo ṣe alaye bi a ṣe le wa ohun elo PyGObject ni rọọrun, titi di igba naa ki o wa ni aifwy fun…